aPCI-8102 Windows 9x/Windows NT4.0/Windows 2000 API dl

ADTEK SYSTEM SCIENCE Co.,Ltd.
===========================================================================

ڎ

1.  Tv
2.  
3.  vO\
4.  API t@X
4.1.   API
4.1.1.  Apci8102GetVersion
4.1.2.  Apci8102Create
4.1.3.  Apci8102Close
4.1.4.  Apci8102GetResource
4.2.  I/O API
4.2.1.  Apci8102GetDirections
4.2.2.  Apci8102SetDirections
4.2.3.  Apci8102InPort
4.2.4.  Apci8102OutPort
4.3.  ̑ API
4.3.1.  Apci8102GetLastError
5.  bZ[W
6.  萔
6.1.  G[R[h
6.2.  o͕wrbg}bv萔
6.3.  _|[gԍ萔
6.4.  ̑̒萔

===========================================================================

1.  Tv

    { aPCI-8102 p[UJ API _Ci~bNNCuiȉ
    uDLLvjxŒ`܂B
    foCXhCȍڍׂɂĂ͐GĂ܂B
    ȂAP DLL  aPCI-8102 𐧌䂵܂B

===========================================================================

2.  

    {Œ` API  Windows 9x/Windows NT4.0/Windows 2000 ōő
    16 ܂ł aPCI-8102iȉufoCXvj𐧌䂵܂B
      Windows NT/2000 ł́ACeАvZbT𓋍ڂVXe
    ̂ݓ삵܂B

===========================================================================

3.  vO\

    {Œ` API ̓foCXhCo
    Eapci8102.vxdiWindows 9xj
    Eapci8102.sysiWindows NT4.0j
    Eapci8102.sysiWindows 2000j
    сAL 3 ɑΉ_Ci~bNNCu
    Eapci8102.dlliWindows 9xŁj
    Eapci8102.dlliWindows NT4.0Łj
    Eapci8102.dlliWindows 2000Łj
    ɂ܂B
    ܂AAPI ̎gp@邽߂̊ȒPȃTvvOYt܂B

===========================================================================

4.  APIt@X

    ȉɃAvP[VvODLLԂ̃C^[tF[XiAPIj
    K肵܂BAPI  Windows 9x/Windows NT4.0/Windows 2000 ʂƂ܂B
    API ͈ȉ̂悤ɑʂ܂B

        1.   API
        2.  I/O API
        3.  ̑ API

---------------------------------------------------------------------------

4.1.   API

---------------------------------------------------------------------------

4.1.1.  Apci8102GetVersion

@\
    o[Wԍ擾

`
EVisual C++
BOOL Apci8102GetVersion(PDWORD pdwDllVersion, PDWORD pdwDriverVersion);

EVisual Basic
Function Apci8102GetVersion(pdwDllVersion As Long, pdwDriverVersion As Long) As Long

EDelphi
function Apci8102GetVersion(var pdwDllVersion: DWORD; var pdwDriverVersion: DWORD) BOOL;


    pdwDllVersion
        DLL ̃o[Wԍi[̈ւ̃|C^B
        NULL B

    pdwDriverVersion
        foCXhCõo[Wԍi[̈ւ̃|C^B
        NULL B

o
    *pdwDllVersion
        DLL ̃o[WԍB

    *pdwDriverVersion
        foCXhCõo[WԍB

߂l
      API IAsԂ܂B
    FALSE
          sB
    TRUE
          IB


      DLL  foCXhCõo[Wԍ擾܂B
        16Bit@W[o[W
        16Bit@}Ci[o[W

G[
    APCI8102_ERR_SYSTEM
          Windows  GetLastError() R[ĂB̃tH
        _ɃhCo̗RŃfoCXhCogݍ܂Ă
        \܂B

---------------------------------------------------------------------------

4.1.2.  Apci8102Create

@\
    foCX̎gp錾

`
EVisual C++
#define APCI8102_SLOT_AUTO    ((WORD) ~0U)
BOOL Apci8102Create(PWORD pwLogSlot);

EVisual Basic
Global Const APCI8102_SLOT_AUTO = &HFFFF
Function Apci8102Create(pwLogSlot As Integer) As Long

EDelphi
const
    APCI8102_SLOT_AUTO    = $ffff;
function Apci8102Create(var pwLogSlot: WORD): BOOL;


    *pwLogSlot
          gpfoCX̘_Xbgԍw肵܂B
        Ŏw肷ԍ aPCI-8102 {[h̘_Xbgԍݒ肵܂B
        ܂  APCI8102_SLOT_AUTO w肵ꍇAfoCX݂Ă
        _XbgT܂BłɃAvP[Vɂgp
        ĂfoCX̓XLbv܂B

          ȌAAvP[V͂̒lŃfoCXʂ܂B
          NULL ͕sB

o
    *pwLogSlot
          gp\ȃfoCXꍇ́A̘_Xbgԍ
        i[܂BȂꍇA̒l͖`łB

߂l
      API IAsԂ܂B
    FALSE
          sB
    TRUE
          IB


      Xbgɑ݂Ăł낤foCXAAvP[Vgp
    邱Ƃ foCXhCoɒʒm܂B
      XbgɃfoCX݂ĂȂꍇ́AG[ƂȂ܂B
      Xbg̃foCXłɑ̃AvP[VŎgpĂ
    ꍇG[ƂȂ܂BɂA1 ̃foCX͒P̃AvP[
    VrIɎgp܂B

      Apci8102GetVersion ȊO API ĂяoOɕK API Ăяo
    ĂB

G[
    APCI8102_ERR_SYSTEM
        Windows  GetLastError() R[ĂB
    APCI8102_ERR_NO_DEVICE
        gp\ȃfoCX܂iAPCI8102_SLOT_AUTO w肵ꍇjB
    APCI8102_ERR_IN_USE
        w̃foCX͎gpłB
    APCI8102_ERR_INVALID_ARGUMENT
        pwLogSlot  NULL łB

       API sꍇAApci8102GetLastError()  wLogSlot ɂ
    APCI8102_SLOT_AUTO w肵ĂB

---------------------------------------------------------------------------

4.1.3.  Apci8102Close

@\
    foCXJ

`
EVisual C++
BOOL Apci8102Close(WORD wLogSlot);

EVisual Basic
Function Apci8102Close(ByVal wLogSlot As Integer) As Long

EDelphi
function Apci8102Close(wLogSlot: WORD): BOOL;


    wLogSlot
        foCX̘_Xbgԍw肵܂B

߂l
      API IAsԂ܂B
    FALSE
          sB
    TRUE
          IB


      AvP[VfoCX̎gpIAfoCX𑼂̃AvP[
    VɊJ邱ƂfoCXhCoɒʒm܂B

      AvP[VIOɕK API ĂяoĂB

G[
    APCI8102_ERR_SYSTEM
          Windows  GetLastError() R[ĂB
    APCI8102_ERR_INVALID_SLOT
          Ș_XbgԍłB
    APCI8102_ERR_NO_CREATE
          foCXNGCgĂ܂B

---------------------------------------------------------------------------

4.1.4.  Apci8102GetResource

@\
    \[X擾

`
EVisual C++
#define APCI8102_MAX_MEM    9
#define APCI8102_MAX_IO     20
#define APCI8102_MAX_IRQ    7
#define APCI8102_MAX_DMA    7

/* ؿ\ */
typedef struct _APCI8102RESOURCE {
    DWORD  dwNumMemWindows;                      /* س޳        gp */
    DWORD  dwMemBase        [APCI8102_MAX_MEM];  /* س޳ްڽ gp */
    DWORD  dwMemLength      [APCI8102_MAX_MEM];  /* س޳        gp */
    DWORD  dwMemAttrib      [APCI8102_MAX_MEM];  /* س޳      gp */
    DWORD  dwNumIOPorts;                         /* I/O߰Đ                 */
    DWORD  dwIOPortBase     [APCI8102_MAX_IO];   /* I/O߰ްڽ          */
    DWORD  dwIOPortLength   [APCI8102_MAX_IO];   /* I/O߰Ē                 */
    DWORD  dwNumIRQs;                            /* IRQ              gp */
    DWORD  dwIRQRegisters   [APCI8102_MAX_IRQ];  /* IRQؽ             gp */
    DWORD  dwIRQAttrib      [APCI8102_MAX_IRQ];  /* IRQؽ         gp */
    DWORD  dwNumDMAs;                            /* DMAِ          gp */
    DWORD  dwDMALst         [APCI8102_MAX_DMA];  /* DMAؽ         gp */
    DWORD  dwDMAAttrib      [APCI8102_MAX_DMA];  /* DMAّؽ     gp */
    DWORD  dwReserved1      [3];                 /* \               gp */
} APCI8102RESOURCE, *PAPCI8102R;

BOOL Apci8102GetResource(WORD wLogSlot, PAPCI8102R pres);

EVisual Basic
Global Const APCI8102_MAX_MEM = 9
Global Const APCI8102_MAX_IO = 20
Global Const APCI8102_MAX_IRQ = 7
Global Const APCI8102_MAX_DMA = 7

Type APCI8102RESOURCE
    dwNumMemWindows As Long                       ' س޳       gp
    dwMemBase(1 To APCI8102_MAX_MEM) As Long      ' س޳ްڽgp
    dwMemLength(1 To APCI8102_MAX_MEM) As Long    ' س޳       gp
    dwMemAttrib(1 To APCI8102_MAX_MEM) As Long    ' س޳     gp
    dwNumIOPorts As Long                          ' I/O߰Đ
    dwIOPortBase(1 To APCI8102_MAX_IO) As Long    ' I/O߰ްڽ
    dwIOPortLength(1 To APCI8102_MAX_IO) As Long  ' I/O߰Ē
    dwNumIRQs As Long                             ' IRQ             gp
    dwIRQRegisters(1 To APCI8102_MAX_IRQ) As Long ' IRQؽ            gp
    dwIRQAttrib(1 To APCI8102_MAX_IRQ) As Long    ' IRQؽ        gp
    dwNumDMAs As Long                             ' DMAِ         gp
    dwDMALst(1 To APCI8102_MAX_DMA) As Long       ' DMAؽ        gp
    dwDMAAttrib(1 To APCI8102_MAX_DMA) As Long    ' DMAّؽ    gp
    dwReserved1(1 To 3) As Long                   ' \              gp
End Type

Function Apci8102GetResource(ByVal wLogSlot As Integer, pres As APCI8102RESOURCE) As Long

EDelphi
const
  APCI8102_MAX_MEM  =  9;
  APCI8102_MAX_IO   = 20;
  APCI8102_MAX_IRQ  =  7;
  APCI8102_MAX_DMA  =  7;

type
  TAPCI8102RESOURCE = record
    dwNumMemWindows:                                  DWORD;  // س޳(gp)
    dwMemBase:      array [1 .. APCI8102_MAX_MEM] of  DWORD;  // س޳ްڽ(gp)
    dwMemLength:    array [1 .. APCI8102_MAX_MEM] of  DWORD;  // س޳(gp)
    dwMemAttrib:    array [1 .. APCI8102_MAX_MEM] of  DWORD;  // س޳(gp)
    dwNumIOPorts:                                     DWORD;  // I/O߰Đ
    dwIOPortBase:   array [1 .. APCI8102_MAX_IO] of   DWORD;  // I/O߰ްڽ
    dwIOPortLength: array [1 .. APCI8102_MAX_IO] of   DWORD;  // I/O߰Ē
    dwNumIRQs:                                        DWORD;  // IRQ(gp)
    dwIRQRegisters: array [1 .. APCI8102_MAX_IRQ] of  DWORD;  // IRQؽ(gp)
    dwIRQAttrib:    array [1 .. APCI8102_MAX_IRQ] of  DWORD;  // IRQؽ(gp)
    dwNumDMAs:                                        DWORD;  // DMAِ(gp)
    dwDMALst:       array [1 .. APCI8102_MAX_DMA] of  DWORD;  // DMAؽ(gp)
    dwDMAAttrib:    array [1 .. APCI8102_MAX_DMA] of  DWORD;  // DMAّؽ(gp)
    dwReserved1:    array [1 .. 3] of                 DWORD;  // \(gp)
  end;

function Apci8102GetResource(wLogSlot: WORD; var pres: TAPCI8102RESOURCE): BOOL;


    wLogSlot
        foCX̘_XbgԍwB
    pres
        \[Xi[̈ւ̃|C^B
        NULL ͕sB

o
    *pres
        蓖ĂĂ郊\[X̏B

߂l
      API IAsԂ܂B
    FALSE
          sB
    TRUE
          IB


      wLogSlot Ŏw肳ꂽfoCXɊ蓖ĂĂ郊\[X\
    pɎ擾܂B
      \[X񂪕KvłȂꍇ́AAPI͎gpKv͂܂B

G[
    APCI8102_ERR_INVALID_SLOT
          Ș_XbgԍłB
    APCI8102_ERR_NO_CREATE
          foCXNGCgĂ܂B
    APCI8102_ERR_INVALID_ARGUMENT
          pres  NULL łB
    APCI8102_ERR_SYSTEM
          Windows  GetLastError() R[ĂB

---------------------------------------------------------------------------

4.2.  I/O API

---------------------------------------------------------------------------

4.2.1.  Apci8102GetDirections

@\
    fBNV擾

`
EVisual C++
BOOL    Apci8102GetDirections(WORD wLogSlot, PDWORD pdwDirections);

EVisual Basic
Function Apci8102GetDirections(ByVal wLogSlot As Integer, pdwDirections As Long) As Long

EDelphi
function Apci8102GetDirections(wLogSlot: WORD; var pdwDirections: DWORD): BOOL;


    wLogSlot
          foCXwB

    pdwDirections
          fBNVi[̈ւ̃|C^B
          NULL ͕sB

o
    *pdwDirections
          擾fBNVB̒l͊e|[gɑΉrbg}b
        vɂȂĂ܂B
                rbg  |[g
                --------------
                   0       A
                   1       B
                   2       C
                   3       D
        erbg 0 ŏóA1 œ͕ɐݒ肳Ă܂B

߂l
      API IAsԂ܂B
    FALSE
          sB
    TRUE
          IB


      wLogSlot Ŏw肳ꂽfoCX̃fBNV擾܂B

G[
    APCI8102_ERR_INVALID_SLOT
          Ș_XbgłB
    APCI8102_ERR_INVALID_ARGUMENT
          pdwDirections  NULL łB
    APCI8102_ERR_NO_CREATE
          foCXNGCgĂ܂B

---------------------------------------------------------------------------

4.2.2.  Apci8102SetDirections

@\
    fBNVݒ

`
EVisual C++
BOOL    Apci8102SetDirections(WORD wLogSlot, DWORD dwDirections);

EVisual Basic
Function Apci8102SetDirections(ByVal wLogSlot As Integer, ByVal dwDirections As Long) As Long

EDelphi
function Apci8102SetDirections(wLogSlot: WORD; dwDirections: DWORD): BOOL;


    wLogSlot
          foCXwB

    dwDirections
          fBNVe|[gɑΉrbg}bvŎw肵܂B
                rbg  |[g
                --------------
                   0       A
                   1       B
                   2       C
                   3       D
        erbg 0 ŏóA1 œ͕ɐݒ肳܂B

߂l
      API IAsԂ܂B
    FALSE
          sB
    TRUE
          IB


      wLogSlot Ŏw肳ꂽfoCX̃fBNVݒ肵܂B


      Lȃ|[gȏ̃rbg͖܂B

G[
    APCI8102_ERR_INVALID_SLOT
          Ș_XbgłB
    APCI8102_ERR_NO_CREATE
          foCXNGCgĂ܂B

---------------------------------------------------------------------------

4.2.3.  Apci8102InPort

@\
    ͎s

`
EVisual C++
BOOL Apci8102InPort(WORD wLogSlot, DWORD dwLogPort, PBYTE pbInValue);

EVisual Basic
Function Apci8102InPort(ByVal wLogSlot As Integer, ByVal dwLogPort As Long, pbInValue As Byte) As Long

EDelphi
function Apci8102InPort(wLogSlot: WORD; dwLogPort: DWORD; var pbInValue: BYTE): BOOL;


    wLogSlot
        foCX̘_XbgԍwB
    dwLogPort
        ̘_|[gԍ̓͂s܂B
    pbInValue
        ̓f[^i[̈ւ̃|C^B
        NULL ͕sB

o
    *pbInValue
        ̓f[^B

߂l
      API IAsԂ܂B
    FALSE
          sB
    TRUE
          IB


      wLogSlot Ŏw肳ꂽfoCX̘_|[gԍ dwLogPort 
    ܂BfBNVo͕ƂȂĂꍇ̓obt@[h
    obN܂B

G[
    APCI8102_ERR_INVALID_SLOT
          Ș_XbgłB
    APCI8102_ERR_INVALID_PORT
          Ș_|[gԍłB
    APCI8102_ERR_INVALID_ARGUMENT
          lpbInValue  NULL łB
    APCI8102_ERR_NO_CREATE
          foCXNGCgĂ܂B

---------------------------------------------------------------------------

4.2.4.  Apci8102OutPort

@\
    o͎s

`
EVisual C++
BOOL Apci8102OutPort(WORD wLogSlot, DWORD dwLogPort, BYTE bOutValue);

EVisual Basic
Function Apci8102OutPort(ByVal wLogSlot As Integer, ByVal dwLogPort As Long, ByVal bOutValue As Byte) As Long

EDelphi
function Apci8102OutPort(wLogSlot: WORD; dwLogPort: DWORD; bOutValue: BYTE): BOOL;


    wLogSlot
        foCX̘_XbgԍwB
    dwLogPort
        ̘_|[gԍւ̏o͂s܂B
    bOutValue
        o̓f[^B

߂l
      API IAsԂ܂B
    FALSE
          sB
    TRUE
          IB


      wLogSlot Ŏw肳ꂽfoCX̘_|[gԍ dwLogPort ɏo͂
    ܂BfBNV͕ɂȂĂꍇ̓obt@Ƀf[^
    Zbg܂B

G[
    APCI8102_ERR_INVALID_SLOT
          Ș_XbgłB
    APCI8102_ERR_INVALID_PORT
          Ș_|[gԍłB
    APCI8102_ERR_NO_CREATE
          foCXNGCgĂ܂B

===========================================================================

4.3.  ̑ API

---------------------------------------------------------------------------

4.3.1.  Apci8102GetLastError

@\
    G[R[h擾

`
EVisual C++
DWORD Apci8102GetLastError(WORD wLogSlot);

EVisual Basic
Function Apci8102GetLastError(ByVal wLogSlot As Integer) As Long

EDelphi
function Apci8102GetLastError(wLogSlot: WORD): DWORD;


    wLogSlot
        foCX̘_XbgԍwB

߂l
      G[R[hB


      ƂŋߋNG[̃R[h擾܂B

===========================================================================

5.  bZ[W

    bZ[W͂܂

===========================================================================

6.  萔

---------------------------------------------------------------------------

6.1.  G[R[h

#define APCI8102_SUCCESS              0   /* I */
#define APCI8102_ERR_SYSTEM           1   /* GetLastError sĂ */
#define APCI8102_ERR_NO_DEVICE        2   /* gp\޲Ȃ */
#define APCI8102_ERR_IN_USE           3   /* w肳ꂽ޲͎gp */
#define APCI8102_ERR_INVALID_SLOT     4   /* Ș_ۯĔԍw肵 */
#define APCI8102_ERR_RESOURCE         5   /* ؿװ */
#define APCI8102_ERR_INVALID_PORT     6   /* ߰Ăv */
#define APCI8102_ERR_INVALID_ARGUMENT 7   /* Ȉv */
#define APCI8102_ERR_NO_CREATE        8   /* ޲شĂĂ܂ */

---------------------------------------------------------------------------

6.2.  o͕wrbg}bv萔

#define APCI8102_DIR_A_OUTPUT (0 << 0)
#define APCI8102_DIR_A_INPUT  (1 << 0)
#define APCI8102_DIR_B_OUTPUT (0 << 1)
#define APCI8102_DIR_B_INPUT  (1 << 1)
#define APCI8102_DIR_C_OUTPUT (0 << 2)
#define APCI8102_DIR_C_INPUT  (1 << 2)
#define APCI8102_DIR_D_OUTPUT (0 << 3)
#define APCI8102_DIR_D_INPUT  (1 << 3)

---------------------------------------------------------------------------

6.3.  _|[gԍ萔

#define APCI8102_PORT_A   0
#define APCI8102_PORT_B   1
#define APCI8102_PORT_C   2
#define APCI8102_PORT_D   3

---------------------------------------------------------------------------

6.4.  ̑̒萔

#define APCI8102_MAX_PORTS    4               /* foCX̃|[g */
#define APCI8102_MAX_SLOTS    16              /* T|[gXbg */
#define APCI8102_SLOT_AUTO    ((WORD)~0U)     /* ftHg  T[` */
