aPCI-P34 Windows 2000/XP API dl

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

ڎ

1.  Tv
2.  
3.  vO\
4.  APIt@X
4.1.   API
4.1.1.  Apci34GetVersion
4.1.2.  Apci34Create
4.1.3.  Apci34Close
4.1.4.  Apci34GetResource
4.1.5.  Apci34GetSwitchValue
4.2.  I/O API
4.2.1.  Apci34InPort
4.2.2.  Apci34OutPort
4.2.3.  Apci34IrqMode
4.3.  Timer API
4.3.1.  Apci34EnableTimer
4.3.2.  Apci34DisableTimer
4.4.  ̑ API
4.4.1.  Apci34GetLastError
5.  萔
5.1.  G[R[h
5.2.  _|[gԍ萔
4.3.  bZ[W
5.4.  ̑̒萔

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

1.  Tv

    {́AaPCI-P34 p[UJ API _Ci~bNNCu (ȉ
    uDLLv) xŒ`܂B
    foCXhCȍڍׂɂĂ͐GĂ܂B
    ܂AOCX ɂĂ`܂B
    ȂAP DLL  aPCI-P34 𐧌䂵܂B

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

2.  

    {Œ` API  Windows(R) 2000  Windows(R) XP ōő 16 
    ł aPCI-P34 (ȉufoCXv) 𐧌䂵܂B

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

3.  vO\

    {Œ` API ̓foCXhCo
    Eapci34.sys (Windows 2000/XP)
    сALɑΉ_Ci~bNNCu
    Eapci34.dll (Windows 2000/XP)
    ɂ܂B

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

4.  API t@X

    API ͈ȉ̂悤ɑʂ܂B

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

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

4.1.   API

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

4.1.1.  Apci34GetVersion

@\
    o[W擾

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

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

EDelphi
function Apci34GetVersion(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
    񃊃[X 0.1.0.0 ƂA0x00010000 ƂȂ܂B
    ől 255.255.255.255 ƂȂA0xffffffff ƂȂ܂B

G[
    APCI34_ERR_SYSTEM
        Windows  GetLastError() R[ĂB̃tH_
        ɃhCo̗RŃfoCXhCogݍ܂ĂȂ
        \܂B

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

4.1.2.  Apci34Create

@\
    foCX̎gp錾

`
EVisual C++
#define APCI34_SLOT_AUTO    ((WORD) ~0U)
BOOL Apci34Create(PWORD pwLogSlot, HWND hwnd, UINT uWMBase, PVOID pvInitArg);

EVisual Basic
Global Const APCI34_SLOT_AUTO = &HFFFF
Function Apci34Create(pwLogSlot As Integer, ByVal hwnd As Long, ByVal uWMBase As Long, pvInitArg As Any) As Long

EDelphi
const
    APCI34_SLOT_AUTO    = $ffff;
function Apci34Create(var pwLogSlot: WORD; hwnd: THandle; uWMBase: UInt; var pvInitArg): BOOL;


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

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

    hwnd
       hCoo郁bZ[W󂯎EBhẼnhw肵܂B
       bZ[WgpȂꍇ NULL w肵܂B

    uWMBase
       o郁bZ[W ID ̒lw肵܂B
       ʏ WM_USER ȏ̒lw肵܂B

    pvInitArg
       gp܂ (ׂ̗̈\ł)B
       Visual Basic ̏ꍇ̓_~[̕ϐnĂ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[V
    rIɎgp܂B

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

G[
    APCI34_ERR_SYSTEM
        Windows  GetLastError() R[ĂB
    APCI34_ERR_NO_DEVICE
        gp\ȃfoCX܂ (APCI34_SLOT_AUTO w肵ꍇ)B
    APCI34_ERR_IN_USE
        w̃foCX͎gpłB
    APCI34_ERR_INVALID_ARGUMENT
        pwLogSlot  NULL łB

     API sꍇAApci34GetLastError()  wLogSlot ɂ
    APCI34_SLOT_AUTO w肵ĂB

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

4.1.3.  Apci34Close

@\
    foCX

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

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

EDelphi
function Apci34Close(wLogSlot: WORD): BOOL;


    wLogSlot
        foCX̘_Xbgԍw肵܂B

߂l
    API IAsԂ܂B
    FALSE
        sB
    TRUE
        IB


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

    AvP[VIOɕK API ĂяoĂB

G[
    APCI34_ERR_SYSTEM
        Windows  GetLastError() R[ĂB
    APCI34_ERR_INVALID_SLOT
        Ș_XbgԍłB
    APCI34_ERR_NO_CREATE
        foCXNGCgĂ܂B

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

4.1.4.  Apci34GetResource

@\
    \[X擾

`
EVisual C++
#define APCI34_MAX_MEM      9
#define APCI34_MAX_IO       20
#define APCI34_MAX_IRQ      7
#define APCI34_MAX_DMA      7

//ؿ\
typedef struct _APCI34RESOURCE {
    DWORD  dwNumMemWindows;                     // س޳        gp
    DWORD  dwMemBase        [APCI34_MAX_MEM];   // س޳ްڽ gp
    DWORD  dwMemLength      [APCI34_MAX_MEM];   // س޳        gp
    DWORD  dwMemAttrib      [APCI34_MAX_MEM];   // س޳      gp
    DWORD  dwNumIOPorts;                        // I/O߰Đ
    DWORD  dwIOPortBase     [APCI34_MAX_IO];    // I/O߰ްڽ
    DWORD  dwIOPortLength   [APCI34_MAX_IO];    // I/O߰Ē
    DWORD  dwNumIRQs;                           // IRQ              gp
    DWORD  dwIRQRegisters   [APCI34_MAX_IRQ];   // IRQؽ             gp
    DWORD  dwIRQAttrib      [APCI34_MAX_IRQ];   // IRQؽ         gp
    DWORD  dwNumDMAs;                           // DMAِ          gp
    DWORD  dwDMALst         [APCI34_MAX_DMA];   // DMAؽ         gp
    DWORD  dwDMAAttrib      [APCI34_MAX_DMA];   // DMAّؽ     gp
    DWORD  dwReserved1      [3];                // \               gp
} APCI34RESOURCE, *PAPCI34R;

BOOL Apci34GetResource(WORD wLogSlot, PAPCI34R pres);

EVisual Basic
Global Const APCI34_MAX_MEM = 9
Global Const APCI34_MAX_IO = 20
Global Const APCI34_MAX_IRQ = 7
Global Const APCI34_MAX_DMA = 7

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

Function Apci34GetResource(ByVal wLogSlot As Integer, pres As APCI34RESOURCE) As Long

EDelphi
const
  APCI34_MAX_MEM      =  9;
  APCI34_MAX_IO       = 20;
  APCI34_MAX_IRQ      =  7;
  APCI34_MAX_DMA      =  7;

type
  TAPCI34RESOURCE = record
    dwNumMemWindows:                               DWORD;  // س޳        gp
    dwMemBase:      array [1 .. APCI34_MAX_MEM] of DWORD;  // س޳ްڽ gp
    dwMemLength:    array [1 .. APCI34_MAX_MEM] of DWORD;  // س޳        gp
    dwMemAttrib:    array [1 .. APCI34_MAX_MEM] of DWORD;  // س޳      gp
    dwNumIOPorts:                                  DWORD;  // I/O߰Đ
    dwIOPortBase:   array [1 .. APCI34_MAX_IO] of  DWORD;  // I/O߰ްڽ
    dwIOPortLength: array [1 .. APCI34_MAX_IO] of  DWORD;  // I/O߰Ē
    dwNumIRQs:                                     DWORD;  // IRQ              gp
    dwIRQRegisters: array [1 .. APCI34_MAX_IRQ] of DWORD;  // IRQؽ             gp
    dwIRQAttrib:    array [1 .. APCI34_MAX_IRQ] of DWORD;  // IRQؽ         gp
    dwNumDMAs:                                     DWORD;  // DMAِ          gp
    dwDMALst:       array [1 .. APCI34_MAX_DMA] of DWORD;  // DMAؽ         gp
    dwDMAAttrib:    array [1 .. APCI34_MAX_DMA] of DWORD;  // DMAّؽ     gp
    dwReserved1:    array [1 .. 3] of              DWORD;  // \               gp
  end;

function Apci34GetResource(wLogSlot: WORD; var pres: TAPCI34RESOURCE): 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
    ʏ킱API͎gpKv͂܂B

G[
    APCI34_ERR_INVALID_SLOT
        Ș_XbgԍłB
    APCI34_ERR_NO_CREATE
        foCXNGCgĂ܂B
    APCI34_ERR_INVALID_ARGUMENT
        pres  NULL łB
    APCI34_ERR_SYSTEM
        Windows  GetLastError() R[ĂB

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

4.1.5.  Apci34GetSwitchValue

@\
    [^XCb`̒l擾

`
EVisual C++
BOOL Apci34GetSwitchValue(WORD wLogSlot, PDWORD pdwSwitchValue);

EVisual Basic
Function Apci34GetSwitchValue(ByVal wLogSlot As Integer, pdwSwitchValue As Long) As Long

EDelphi
function Apci34GetSwitchValue(wLogSlot: WORD; var pdwSwitchValue: DWORD): BOOL;


    wLogSlot
        foCX̘_XbgԍwB
    pdwSwitchValue
        [^XCb`̒li[̈ւ̃|C^B
        NULL ͕sB

o
    *pdwSwitchValue
        [^XCb`̒lB

߂l
    API IAsԂ܂B
    FALSE
        sB
    TRUE
        IB


    wLogSlot Ŏw肳ꂽfoCXɊ蓖ĂĂ郍[^XCb`
    l擾܂B

G[
    APCI34_ERR_INVALID_SLOT
        Ș_XbgԍłB
    APCI34_ERR_NO_CREATE
        foCXNGCgĂ܂B
    APCI34_ERR_INVALID_ARGUMENT
        pdwSwitchValue  NULL łB
    APCI34_ERR_SYSTEM
        Windows  GetLastError() R[ĂB

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

4.2.  I/O API

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

4.2.1.  Apci34InPort

@\
    ͎s

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

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

EDelphi
function Apci34InPort( 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 ͂܂B

G[
    APCI34_ERR_INVALID_SLOT
        Ș_XbgԍłB
    APCI34_ERR_NO_CREATE
        foCXNGCgĂ܂B
    APCI34_ERR_INVALID_PORT
        Ș_|[gԍłB
    APCI34_ERR_INVALID_ARGUMENT
        pbInValue  NULL łB

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

4.2.2.  Apci34OutPort

@\
    o͎s

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

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

EDelphi
function Apci34OutPort(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͂܂B

G[
    APCI34_ERR_INVALID_SLOT
        Ș_XbgԍłB
    APCI34_ERR_NO_CREATE
        foCXNGCgĂ܂B
    APCI34_ERR_INVALID_PORT
        Ș_|[gԍłB


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

4.2.3.  Apci34IrqMode

@\
    IN01/IN02/IN09/IN10 ̊荞ݐݒ

`
EVisual C++
typedef struct _APCI34MODE
{
    DWORD   dwIn01;        // IN01̐ݒ (0:Active Low, 1:Active High, 2:荞݋֎~)
    DWORD   dwIn02;        // IN02̐ݒ (0:Active Low, 1:Active High, 2:荞݋֎~)
    DWORD   dwIn09;        // IN09̐ݒ (0:Active Low, 1:Active High, 2:荞݋֎~)
    DWORD   dwIn10;        // IN10̐ݒ (0:Active Low, 1:Active High, 2:荞݋֎~)
} APCI34MODE, *PCAPCI34M;

BOOL     Apci34IrqMode(WORD wLogSlot, PCAPCI34M pcmode);

EVisual Basic
Type APCI34MODE
    dwIn01 As Long         ' IN01̐ݒ (0:Active Low, 1:Active High, 2:荞݋֎~)
    dwIn02 As Long         ' IN02̐ݒ (0:Active Low, 1:Active High, 2:荞݋֎~)
    dwIn09 As Long         ' IN09̐ݒ (0:Active Low, 1:Active High, 2:荞݋֎~)
    dwIn10 As Long         ' IN10̐ݒ (0:Active Low, 1:Active High, 2:荞݋֎~)
End Type

Function Apci34IrqMode(ByVal wLogSlot As Integer, ByRef pcmode As APCI34MODE) As Long

EDelphi
type
    TAPCI34MODE = record
        dwIn01: DWORD;     { IN01̐ݒ (0:Active Low, 1:Active High, 2:荞݋֎~) }
        dwIn02: DWORD;     { IN02̐ݒ (0:Active Low, 1:Active High, 2:荞݋֎~) }
        dwIn09: DWORD;     { IN09̐ݒ (0:Active Low, 1:Active High, 2:荞݋֎~) }
        dwIn10: DWORD;     { IN10̐ݒ (0:Active Low, 1:Active High, 2:荞݋֎~) }
    end;

PAPCI34MODE = ^TAPCI34MODE;

function Apci34IrqMode(wLogSlot: WORD; pcmode: PAPCI34MODE): BOOL;


    wLogSlot
        foCX̘_XbgԍwB
    pcmode
        荞݃f[^B

        0: Active Low
           荞ݗvƂȂM High  Low ɕωꍇɁA荞݂
@@@@   ܂B

        1: Active High
           荞ݗvƂȂM Low  High ɕωꍇɁA荞݂
@@@@   ܂B

        2: 荞݋֎~
           荞ݗvƂȂM Low  High ܂ High  Low ɕω
           ĂA荞݂͔܂B

߂l
    API IAsԂ܂B
    FALSE
        sB
    TRUE
        IB


    wLogSlot Ŏw肳ꂽfoCX IN01/IN02/IN09/IN10 ̊荞(荞݂
@@͋ɐ[Active Low/Active High]  荞݋֎~)ݒ肵܂B

    荞݃^Cv́AGbW͂̂ݑΉĂ܂B

G[
    APCI34_ERR_INVALID_SLOT
        Ș_XbgԍłB
    APCI34_ERR_NO_CREATE
        foCXNGCgĂ܂B
    APCI34_ERR_INVALID_ARGUMENT
        Ȉv܂

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

4.3.  Timer API

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

4.3.1.  Apci34EnableTimer

@\
    ^C}[荞݂Lɂ

`
EVisual C++
BOOL Apci34EnableTimer(WORD wLogSlot, DWORD dwTimerCount, DWORD dwPlescaler);

EVisual Basic
Function Apci34EnableTimer(ByVal wLogSlot As Integer,ByVal dwTimerCount As Long,ByVal dwPlescaler As Long) As Long

EDelphi
function Apci34EnableTimer(wLogSlot: WORD; dwTimerCount: DWORD; dwPlescaler: DWORD): BOOL;


    wLogSlot
        foCX̘_XbgԍwB
    dwTimerCount
        ^C}[̃JE^w(24bitf[^)B
    dwPlescaler
        ^C}[̃NbNgw(0 ` 7)B

        0: 30nsec
        1: 60nsec
        2: 120nsec
        3: 240nsec
        4: 480nsec
        5: 960nsec
        6: 1920nsec
        7: 3840nsec

߂l
    API IAsԂ܂B
    FALSE
        sB
    TRUE
        IB


    wLogSlot Ŏw肳ꂽfoCX̃^C}[荞݂Lɂ܂B

G[
    APCI34_ERR_INVALID_SLOT
        Ș_XbgԍłB
    APCI34_ERR_NO_CREATE
        foCXNGCgĂ܂B
    APCI34_ERR_INVALID_ARGUMENT
        Ȉv܂B

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

4.3.2.  Apci34DisableTimer

@\
    ^C}[荞݂𖳌ɂ

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

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

EDelphi
function Apci34DisableTimer(wLogSlot: WORD): BOOL;


    wLogSlot
        foCX̘_XbgԍwB

߂l
    API IAsԂ܂B
    FALSE
        sB
    TRUE
        IB


    wLogSlot Ŏw肳ꂽfoCX̃^C}[荞݂𖳌ɂ܂B

G[
    APCI34_ERR_INVALID_SLOT
        Ș_XbgԍłB
    APCI34_ERR_NO_CREATE
        foCXNGCgĂ܂B

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

4.4.  ̑ API

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

4.4.1.  Apci34GetLastError

@\
    G[R[h擾

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

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

EDelphi
function Apci34GetLastError(wLogSlot: WORD): DWORD;


    wLogSlot
        foCX̘_XbgԍwB

߂l
    G[R[hB


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

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

5.  萔

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

5.1.  G[R[h

#define APCI34_SUCCESS              0   // I
#define APCI34_ERR_SYSTEM           1   // GetLastError sĂ
#define APCI34_ERR_NO_DEVICE        2   // gp\ȃfoCXȂ
#define APCI34_ERR_IN_USE           3   // w肳ꂽfoCX͎gpł
#define APCI34_ERR_INVALID_SLOT     4   // Ș_Xbgԍw肵܂
#define APCI34_ERR_RESOURCE         5   // \[XG[
#define APCI34_ERR_INVALID_PORT     6   // ȃ|[gv܂
#define APCI34_ERR_INVALID_ARGUMENT 7   // Ȉv܂
#define APCI34_ERR_NO_CREATE        8   // foCXNGCgĂ܂

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

5.2.  _|[gԍ萔

#define APCI34_PORT_1   0
#define APCI34_PORT_2   1
#define APCI34_PORT_3   2
#define APCI34_PORT_4   3

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

5.3.  bZ[W

    wParam ɂ͘_Xbgԍ܂B
    lParam ɂ̓foCXŗL ID ܂B

    WM_APCI34_IN01  F O荞(IN01)Ŕ܂B

    WM_APCI34_IN02  F O荞(IN02)Ŕ܂B

    WM_APCI34_IN09  F O荞(IN09)Ŕ܂B

    WM_APCI34_IN10  F O荞(IN10)Ŕ܂B

    WM_APCI34_TIMER F ^C}[荞݂Ŕ܂B

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

5.4.  ̑̒萔

#define APCI34_MAX_SLOTS    16              // T|[g{[h
#define APCI34_MAX_PORTS    4               // ANZX\ȃ|[g
#define APCI34_SLOT_AUTO    ((WORD)~0U)     // ftHg  T[`
