aPCI-A57  Windows 2000/XP  API dl

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

ڎ

1.  Tv
2.  
3.  vO\
4.  APIt@X
4.1.   API
4.1.1.  Apci57Create
4.1.2.  Apci57Close
4.1.3.  Apci57GetVersion
4.1.4.  Apci57GetResource
4.1.5.  Apci57GetSwitchValue
4.2.  Sampling API
4.2.1.  Apci57SetMode
4.2.2.  Apci57StartSampling
4.2.3.  Apci57StopSampling
4.2.4.  Apci57GetSamplingStatus
4.2.5.  Apci57GetData
4.2.6.  Apci57SetData
4.3.  I/O API
4.3.1.  Apci57InPort
4.3.2.  Apci57OutPort
4.4.  ̑ API
4.4.1.  Apci57GetLastError
5.  萔
5.1.  G[R[h
5.2.  bZ[W
5.3.  ̑̒萔

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

1.  Tv

    {́AaPCI-A57 p[UJ API _Ci~bNNCu
    (ȉuDLLv) xŒ`܂B
    foCXhCȍڍׂɂĂ͐GĂ܂B
@@܂AOCX ɂĂ`܂B

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

2.  

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

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

3.  vO\

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

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

4.  API t@X

    API ͈ȉ̂悤ɑʂ܂B
        1.   API
        2.  Sampling API
        3.  I/O API
        4.  ̑ API

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

4.1.   API

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

4.1.1.  Apci57Create

@\      foCX̎gp錾

`
EVisual C++
BOOL     Apci57Create(LPWORD lpwLogSlot, HWND hwnd, UINT uWMBase, LPVOID lpvInitArg);

EVisual Basic
Function Apci57Create(lpwLogSlot As Integer, ByVal hwnd As Long, ByVal uWMBase As Long, lpvInitArg As Any) As Long

EDelphi
function Apci57Create(var lpwLogSlot: WORD; hwnd: THandle; uWMBase: UINT; var lpvInitArg): BOOL;

      lpwLogSlot
              gpfoCX}Ă_Xbgw肵܂B
              _Xbgԍ 0 n܂܂B
              APCI57_SLOT_AUTO w肵ꍇAgp\Ș_XbgT܂B
              _Xbg 0 猟A_ł̘_XbgԍԂ܂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

            lpvInitArg
              gp܂ (ׂ̗̈\ł)B
              Visual Basic ̏ꍇ̓_~[̕ϐnĂB

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

߂l    API IAsԂ܂B
              FALSE sB
              TRUE  IB

      _Xbgɑ݂Ăł낤foCXAAvP[Vgp邱Ƃh
            Coɒʒm܂B_XbgɃfoCX݂ĂȂꍇ́AG[ƂȂ܂B
            _Xbg̃foCXłɑ̃AvP[VŎgpĂꍇG[
            Ȃ܂BɂA1 ̃foCX͒P̃AvP[VrIɎgp
            B API ĂяoOɕK API ĂяoĂB

G[    APCI57_ERR_SLOT         // _Xbgԍsł (܂͌܂)
            APCI57_ERR_NO_DEVICE    // gp\ȃfoCX܂
            APCI57_ERR_IN_USE       // foCXgpł

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

4.1.2.  Apci57Close

@\      foCX̊J

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

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

EDelphi
function Apci57Close(wLogSlot: WORD): BOOL;

      wLogSlot
              ̃foCXJ܂B

߂l    API IAsԂ܂B
              FALSE sB
              TRUE  IB

      AvP[VfoCX̎gpIAfoCX𑼂̃AvP[VɊJ
            ƂhCoɒʒm܂BAvP[VIOɕK API Ăяo
            ĂB

G[    APCI57_ERR_SLOT         // _Xbgԍsł

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

4.1.3.  Apci57GetVersion

@\      o[W擾

`
EVisual C++
BOOL     Apci57GetVersion(LPDWORD lpdwDllVer, LPDWORD lpdwDrvVer);

EVisual Basic
Function Apci57GetVersion(lpdwDllVer As Long, lpdwDrvVer As Long) As Long

EDelphi
function Apci57GetVersion(var lpdwDllVer: DWORD; var lpdwDrvVer: DWORD): BOOL;

      lpdwDllVer
              DLL ̃o[Wi[̈ւ̃|C^B
              NULL B

            lpdwDrvVer
              DRIVER ̃o[Wi[̈ւ̃|C^B
              NULL B

o      *lpdwDllVer
              DLL ̃o[WB

            *lpdwDrvVer
              DRIVER ̃o[WB

߂l    API IAsԂ܂B
              FALSE sB
              TRUE  IB

      DLL  DRIVER ̃o[W擾܂B
            ꂼ̃o[W 4 ŕ\܂B
            񃊃[X 0.1.0.0 ƂA0x00010000 ƂȂ܂B
            ől 255.255.255.255 ƂȂA0xffffffff ƂȂ܂B

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

4.1.4.  Apci57GetResource

@\      \[X̎擾

`
EVisual C++
#define    APCI57_MAX_MEM        9
#define    APCI57_MAX_IO        20
#define    APCI57_MAX_IRQ        7
#define    APCI57_MAX_DMA        7

typedef struct _APCI57RESOURCE
{
    DWORD   dwNumMemWindows;                     /* Not used */
    DWORD   dwMemBase      [APCI57_MAX_MEM];     /* Not used */
    DWORD   dwMemLength    [APCI57_MAX_MEM];     /* Not used */
    DWORD   dwMemAttrib    [APCI57_MAX_MEM];     /* Not used */
    DWORD   dwNumIOPorts;                        /* Num IO ports */
    DWORD   dwIOPortBase   [APCI57_MAX_IO];      /* I/O port base */
    DWORD   dwIOPortLength [APCI57_MAX_IO];      /* I/O port length */
    DWORD   dwNumIRQs;                           /* Num IRQ info */
    DWORD   dwIRQRegisters [APCI57_MAX_IRQ];     /* IRQ list */
    DWORD   dwIRQAttrib    [APCI57_MAX_IRQ];     /* IRQ Attrib list */
    DWORD   dwNumDMAs;                           /* Not used */
    DWORD   dwDMALst       [APCI57_MAX_DMA];     /* Not used */
    DWORD   dwDMAAttrib    [APCI57_MAX_DMA];     /* Not used */
    DWORD   dwReserved1    [3];                  /* Not used */
} APCI57RESOURCE;

typedef APCI57RESOURCE     * PAPCI57R;

BOOL Apci57GetResource(WORD wLogSlot, PAPCI57R pres);

EVisual Basic
Global Const APCI57_MAX_MEM = 9
Global Const APCI57_MAX_IO = 20
Global Const APCI57_MAX_IRQ = 7
Global Const APCI57_MAX_DMA = 7

Type APCI57RESOURCE
    dwNumMemWindows As Long                      ' Not used
    dwMemBase(1 To APCI57_MAX_MEM) As Long       ' Not used
    dwMemLength(1 To APCI57_MAX_MEM) As Long     ' Not used
    dwMemAttrib(1 To APCI57_MAX_MEM) As Long     ' Not used
    dwNumIOPorts As Long                         ' Num IO ports
    dwIOPortBase(1 To APCI57_MAX_IO) As Long     ' I/O port base
    dwIOPortLength(1 To APCI57_MAX_IO) As Long   ' I/O port length
    dwNumIRQs As Long                            ' Num IRQ info
    dwIRQRegisters(1 To APCI57_MAX_IRQ) As Long  ' IRQ list
    dwIRQAttrib(1 To APCI57_MAX_IRQ) As Long     ' IRQ Attrib list
    dwNumDMAs As Long                            ' Not used
    dwDMALst(1 To APCI57_MAX_DMA) As Long        ' Not used
    dwDMAAttrib(1 To APCI57_MAX_DMA) As Long     ' Not used
    dwReserved1(1 To 3) As Long                  ' Not used
End Type

Function Apci57GetResource(ByVal wLogSlot As Integer, pres As APCI57RESOURCE) As Long

EDelphi
const
    APCI57_MAX_MEM = 9;
    APCI57_MAX_IO  = 20;
    APCI57_MAX_IRQ = 7;
    APCI57_MAX_DMA = 7;

type
    TAPCI57RESOURCE = record
        dwNumMemWindows: DWORD;                               { Not used }
        dwMemBase:      array [1 .. APCI57_MAX_MEM] of DWORD; { Not used }
        dwMemLength:    array [1 .. APCI57_MAX_MEM] of DWORD; { Not used }
        dwMemAttrib:    array [1 .. APCI57_MAX_MEM] of DWORD; { Not used }
        dwNumIOPorts:   DWORD;                                { Num IO ports }
        dwIOPortBase:   array [1 .. APCI57_MAX_IO] of DWORD;  { I/O port base }
        dwIOPortLength: array [1 .. APCI57_MAX_IO] of DWORD;  { I/O port length }
        dwNumIRQs:      DWORD;                                { Num IRQ info }
        dwIRQRegisters: array [1 .. APCI57_MAX_IRQ] of DWORD; { IRQ list }
        dwIRQAttrib:    array [1 .. APCI57_MAX_IRQ] of DWORD; { IRQ Attrib list }
        dwNumDMAs:      DWORD;                                { Not used }
        dwDMALst:       array [1 .. APCI57_MAX_DMA] of DWORD; { Not used }
        dwDMAAttrib:    array [1 .. APCI57_MAX_DMA] of DWORD; { Not used }
        dwReserved1:    array [1 .. 3] of DWORD;              { Not used }
    end;

PAPCI57RESOURCE = ^TAPCI57RESOURCE;

function Apci57GetResource(wLogSlot: WORD; pres: PAPCI57RESOURCE): BOOL;

      wLogSlot
              ̃foCX̃\[X擾܂B

            pres
              \[Xi[̈ւ̃|C^B
              NULL sB

o      *pres
              \[XB

߂l    API IAsԂ܂B
              FALSE sB
              TRUE  IB

      wLogSlot Ŏw肳ꂽfoCXɊ蓖ĂĂ郊\[X\pɎ擾܂B

G[    APCI57_ERR_SLOT         // _Xbgԍsł

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

4.1.5.  Apci57GetSwitchValue

@\
    [^XCb`̒l擾

`
EVisual C++
BOOL Apci57GetSwitchValue(WORD wLogSlot, LPDWORD lpdwSwitchValue);

EVisual Basic
Function Apci57GetSwitchValue(ByVal wLogSlot As Integer, lpdwSwitchValue As Long) As Long

EDelphi
function Apci57GetSwitchValue(wLogSlot: WORD; var lpdwSwitchValue: DWORD): BOOL;

      wLogSlot
              foCX̘_XbgԍwB

            lpdwSwitchValue
              [^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[    APCI57_ERR_SYSTEM               // Windows  GetLastError() R[Ă
            APCI57_ERR_INVALID_SLOT         // Ș_Xbgԍł
            APCI57_ERR_NO_CREATE            // foCXNGCgĂ܂
            APCI57_ERR_INVALID_ARGUMENT     // lpdwSwitchValue  NULL ł

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

4.2.  Sampling API

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

4.2.1.  Apci57SetMode

@\      TvO샂[hݒ

`
EVisual C++
typedef struct _APCI57MODE
{
    DWORD   dwChFirst;     // TvOJn`l (0`7)
    DWORD   dwChLast;      // TvOI`l (0`7)
    DWORD   cwBuffer;      // obt@TCY ([hP)
    DWORD   dwTimer;       // ^C}ɃZbgl (00H`3FH)
    DWORD   dwMode;        // 샂[h (1`6)
} APCI57MODE;

typedef CONST APCI57MODE     * PCAPCI57M;

BOOL     Apci57SetMode(WORD wLogSlot, PCAPCI57M pcmode);

EVisual Basic
Type APCI57MODE
    dwChFirst As Long      ' TvOJn`l (0`7)
    dwChLast As Long       ' TvOI`l (0`7)
    cwBuffer As Long       ' obt@TCY ([hP)
    dwTimer As Long        ' ^C}ɃZbgl (00H`3FH)
    dwMode As Long         ' 샂[h (1`6)
End Type

Function Apci57SetMode(ByVal wLogSlot As Integer, pcmode As APCI57MODE) As Long

EDelphi
type
    TAPCI57MODE = record
        dwChFirst: DWORD;  { TvOJn`l (0`7) }
        dwChLast: DWORD;   { TvOI`l (0`7) }
        cwBuffer: DWORD;   { obt@TCY ([hP)}
        dwTimer: DWORD;    { ^C}ɃZbgl (00H`3FH) }
        dwMode:  DWORD;    { 샂[h (1`6) }
    end;

PAPCI57MODE = ^TAPCI57MODE;

function Apci57SetMode(wLogSlot: WORD; pcmode: PAPCI57MODE): BOOL;

      wLogSlot
              ̃foCX̃[hݒ肵܂B

            pcmode
              [hݒf[^B

߂l    API IAsԂ܂B
              FALSE sB
              TRUE  IB

      wLogSlot Ŏw肳ꂽfoCX̃TvO[hݒ肵܂B

            pcmode
              TvO

            TvOɂā

            DwChFirstAdwChLast
		      `lCNgTvOsꍇ́ATvOJn`l 
              dwChFirstɁATvOI`l dwChLast ɐݒ肵܂BdwChFirst  
              dwChLast ɓ`lw肵ꍇ͌Œ`lŃTvO܂B
              ̐ݒl̓n[h(aPCI-A57) ɂ̂܂ܐݒ肵܂B̂߃CNg
              ̓n[h̓ƂȂ܂B

	       CwBuffer
	         cwBuffer Ŏw肵TCY͂̂܂܃hCõobt@TCYƂȂ܂B
             (TvOo[Xg̏ꍇ)

           dwTimer
             ^C}TvOsꍇATvO^C} dwTimer Őݒ肵܂B
             ݒ肷ĺAn[hEFA}jAQƂĂB

           dwMode
             dwMode   ĕ@   ݸޕ    CLK     ޯ̧Ӱ     ֘Aү
               1      Ľ      VO             ײ     WM_EOC
               2      Ľ      o[Xg     ()   ײ     WM_BUFF_HALF_FULL
                                                                          WM_BUFF_FULL, WM_BUFF_OVERFLOW
               3    Oض޽   VO     O        ײ     WM_EOC
               4    Oض޽   o[Xg     O()   ײ     WM_BUFF_HALF_FULL
                                                                          WM_BUFF_FULL, WM_BUFF_OVERFLOW
               5      Ľ      o[Xg     ()   ޲     WM_BUFF_HALF_FULL
                                                                          WM_BUFF_FULL, WM_BUFF_OVERFLOW
               6    Oض޽   o[Xg     O()   ޲     WM_BUFF_HALF_FULL
                                                                          WM_BUFF_FULL, WM_BUFF_OVERFLOW
             X^[g@
               [\tgX^[g] Apci57StartSampling sシɃTvOJn܂B

               [OgKX^[g] Apci57StartSampling sシɂ̓TvOA
               n[hPI7[q100nsecȏ̕_pX̗GbWoATv
               OJn܂B

            TvO
               [VO]̏ꍇ́A1 xϊs܂BdwTimer y cwBuffer ̒l͖܂B
               ܂AApci57GetSamplingStatus Ŏ擾f[^̓TvOI_ 1
               Ȃ܂B

               [o[Xg]̏ꍇ́AApci57StopSamplings܂ŃTvOs܂B

	        CLK\[X
	          [CLK\[XATvOVO] ̏ꍇ́A{[h̋@\̃VOT
              vOs܂B^C}͎gpA1 xTvO܂B

	          [CLK\[XATvOo[Xg] ̏ꍇ́A{[h̋@\̃^C}Tv
              Os܂B

              [CLK\[XOATvOVO] ̏ꍇ́AOgKo{[h̋@\
              VOTvOs܂B^C}͎gpA1 xTvO܂B

	          [CLK\[XOATvOo[Xg] ̏ꍇ́AOgKo{[h̋@\
              ^C}TvOs܂B

            obt@[h
              [hCo]́A1̃TvOPCɃf[^荞݂܂BTvO[g
              ꍇPCɕSAň̏ꍇf[^̎肱ڂN\܂B
		      Apci57GetSamplingStatus ̃TvOς݃f[^ 1 ɍXV܂B

             [foCX]́AϊꂽA/Df[^4096f[^ɂ܂Ƃ߂Ď荞݂܂B
             TvOApci57GetSamplingStatus sꍇATvOς݃f[^ 
             4096 ɍXV܂B
             dwTimer1msecAcwBuffer5000ɐݒ肵ꍇAApci57GetSamplingStatus Ŏ擾
             TvOς݃f[^5000ɂȂ܂łɁA8194msec܂B

G[    APCI57_ERR_SLOT             // _Xbgԍsł
            APCI57_ERR_CHANNEL          // `lݒ肪sł
            APCI57_ERR_TIMER            // ^C}lsł
            APCI57_ERR_INVALID_ARG      // sȈw肵܂
            APCI57_ERR_NOT_ENOUGH_MEM   // \ȃmۏo܂ł

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

4.2.2.  Apci57StartSampling

@\      TvOJn܂B

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

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

EDelphi
function Apci57StartSampling(wLogSlot: WORD): BOOL;

      wLogSlot
              ̃foCX̃TvOJn܂B

߂l    API IAsԂ܂B
              FALSE sB
              TRUE  IB

      wLogSlot Ŏw肳ꂽfoCX̃TvOJn (łԂ) ܂B
            `lCNgƃVOTvOgݍ킹ꍇ͖{ API A
            ĂԂƂɂ`lω܂B

G[    APCI57_ERR_SLOT         // _Xbgԍsł
            APCI57_ERR_START        // X^[gɎs܂

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

4.2.3.  Apci57StopSampling

@\      TvO~܂B

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

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

EDelphi
function Apci57StopSampling(wLogSlot: WORD): BOOL;

      wLogSlot
              ̃foCX̃TvO~܂B

߂l    API IAsԂ܂B
              FALSE sB
              TRUE  IB

      wLogSlot Ŏw肳ꂽfoCX̃TvO~܂B
            TvOȊO̎ Apci57StopSampling sĂG[ɂ͂Ȃ܂B

G[    APCI57_ERR_SLOT         // _Xbgԍsł

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

4.2.4.  Apci57GetSamplingStatus

@\      TvȌԂ擾

`
EVisual C++
BOOL     Apci57GetSamplingStatus(WORD wLogSlot, LPDWORD lpcwNumData, LPDWORD lpdwStatus);

EVisual Basic
Function Apci57GetSamplingStatus(ByVal wLogSlot As Integer, lpcwNumData As Long, lpdwStatus As Long) As Long

EDelphi
function Apci57GetSamplingStatus(wLogSlot: WORD; var lpcwNumData: DWORD; var lpdwStatus: DWORD): BOOL;

      wLogSlot
              ̃foCX̃TvOԂ擾܂B

            lpcwNumData
              TvOς݃f[^i[ϐւ̃|C^B

            lpdwStatus
              TvOԂ̃Xe[^Xi[ϐւ̃|C^B

o      *lpcwNumData
              TvOς݃f[^B

            *lpdwStatus
              TvOԂ̃Xe[^XB

߂l    API IAsԂ܂B
              FALSE sB
              TRUE  IB

      lpcwNumData ͌݃TvOꂽf[^Ԃ܂B

            TvOVȌꍇ̓f[^Zbgꂽ_ 1 ƂȂ܂B
            ȊÕ[hł́ATvOĂƂɃf[^XV܂B

            lpdwStatus ́ASẴTvOԂ擾܂B

                MSB                     LSB
                    D5  D4  D3  D2  D1  D0
                    |   |   |   |   |   +--- APCI57_STS_SAMPLING
                    |   |   |   |   +------- APCI57_STS_EOC
                    |   |   |   +----------- APCI57_STS_BUFF_HALF_FULL
                    |   |   +--------------- APCI57_STS_BUFF_FULL
                    |   +------------------- APCI57_STS_BUFF_OVERFLOW
                    +----------------------- APCI57_STS_SAMPLING_OVERRUN

APCI57_STS_SAMPLING
         F TvOsĂƂɂ̃rbg܂B
            TvOVȌꍇ́AX^[g EOC ɂȂ܂ł̊Ԃ̃rbg
            ܂BȊÕ[hł̓X^[gXgbv܂ł̊Ԃ̃rbg܂B
            AOgKX^[gɂꍇ̓gK󂯕t_ł̃rbg܂B

APCI57_STS_EOC
         F TvOVO̎ɁAϊIŃZbgAf[^ǂݏo_Ń
            Zbg܂B
            TvOłȂƂ̃rbg͗܂B

APCI57_STS_BUFF_HALF_FULL
         F Oobt@[h̎ɁAhCõTvOobt@n[ttɂȂ
@@@@@@_ł̃rbg܂B
            ȍ~ HALF_FULL <=  < FULL ̊ԗςȂłB
            TvOłȂƂ̃rbg͗܂B

APCI57_STS_BUFF_FULL
         F Oobt@[h̎ɁAhCõTvOobt@tɂȂ_
@@@@@@̃rbg܂B
            t̂Ƃɂ݂̂̃rbgAI[o[t[ł̓rbg̓Zbg܂B
            TvOłȂƂ̃rbg͗܂B

APCI57_STS_BUFF_OVERFLOW
         F Oobt@[h̎ɁAhCõTvOobt@I[o[t[
@@@@@@Ȃ_ł̃rbg܂B
@@@@@@obt@̓eǂݏo_ł̃rbg̓Zbg܂B

APCI57_STS_SAMPLING_OVERRUN
         F VOTvOSẴ[h̎ŁA`lCNg[h̏ꍇA
            `lɖꍇÃrbg܂BTvO͒~ȂS
            ̃rbg̓Zbg܂BApci57StopSampling s_ł̃rbg̓Zbg
            ܂B

#define APCI57_STS_SAMPLING          0x01
#define APCI57_STS_EOC               0x02
#define APCI57_STS_BUFF_HALF_FULL    0x04
#define APCI57_STS_BUFF_FULL         0x08
#define APCI57_STS_BUFF_OVERFLOW     0x10
#define APCI57_STS_SAMPLING_OVERRUN  0x20

G[    APCI57_ERR_SLOT         // _Xbgԍsł

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

4.2.5.  Apci57GetData

@\      TvOf[^擾

`
EVisual C++
BOOL     Apci57GetData(WORD wLogSlot, DWORD cwNumData, LPWORD lpwData);

EVisual Basic
Function Apci57GetData(ByVal wLogSlot As Integer, ByVal cwNumData As Long, lpwData As Integer) As Long

EDelphi
function Apci57GetData(wLogSlot: WORD; cwNumData: DWORD; var lpwData: WORD): BOOL;

      wLogSlot
              ̃foCX̃TvOς݃f[^擾܂B

            cwNumData
              ǂݏof[^B

            lpwData
              TvOς݃f[^i[̈ւ̃|C^B

o      *lpwData
              TvOς݃f[^B

߂l    API IAsԂ܂B
              FALSE sB
              TRUE  IB

      wLogSlot Ŏw肳ꂽ_Xbg̃TvOς݃f[^擾܂B
            cwNumData Ŏw肵f[^擾܂B

G[    APCI57_ERR_SLOT         // _Xbgԍsł
            APCI57_ERR_NUMDATA      // w肳ꂽ̃f[^obt@ɑ݂܂

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

4.2.6.  Apci57SetData

@\      D/A f[^o

`
EVisual C++
BOOL     Apci57SetData(WORD wLogSlot, WORD wChData, WORD wDaData);

EVisual Basic
Function Apci57SetData(ByVal wLogSlot As Integer, ByVal wChData As Integer, ByVal wDaData As Integer) As Long

EDelphi
function Apci57SetData(wLogSlot: WORD; wChData: WORD; wDaData: WORD): BOOL;

      wLogSlot
              ̃foCXɃf[^Zbg܂B

            wChData
               CH ̎w "0`1"

            wDaData
              D/A ւ̃_CNgf[^

߂l    API IAsԂ܂B
              FALSE sB
              TRUE  IB

      wLogSlot Ŏw肳ꂽfoCX CH f[^ D/A ̏o̓f[^݂܂B

G[    APCI57_ERR_SLOT         // _Xbgԍsł
            APCI57_ERR_CHANNEL      // `lw肪sł

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

4.3.  I/O API

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

4.3.1.  Apci57InPort

@\      ͎s

`
EVisual C++
BOOL     Apci57InPort(WORD wLogSlot, LPBYTE lpbInValue);

EVisual Basic
Function Apci57InPort(ByVal wLogSlot As Integer, lpbInValue As Byte) As Long

EDelphi
function Apci57InPort(wLogSlot: WORD; var lpbInValue: BYTE): BOOL;

      wLogSlot
              foCXwB

            lpbInValue
              ̓f[^i[̈ւ̃|C^B
              NULL ͕sB

o      *lpbInValue
              ̓f[^B

߂l    API IAsԂ܂B
              FALSE sB
              TRUE  IB

      wLogSlot Ŏw肳ꂽfoCX̃p̓|[g͂܂B

G[    APCI57_ERR_SLOT         // _Xbgԍsł

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

4.3.2.  Apci57OutPort

@\      o͎s

`
EVisual C++
BOOL     Apci57OutPort(WORD wLogSlot, BYTE bOutValue);

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

EDelphi
function Apci57OutPort(wLogSlot: WORD; bOutValue: BYTE): BOOL;

      wLogSlot
              foCXwB

            bOutValue
              o̓f[^B

߂l    API IAsԂ܂B
              FALSE sB
              TRUE  IB

      wLogSlot Ŏw肳ꂽfoCX̃po̓|[gɏo͂܂B

G[    APCI57_ERR_SLOT         // _Xbgԍsł

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

4.4.  ̑ API

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

4.4.1.  Apci57GetLastError

@\      G[R[h擾

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

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

EDelphi
function Apci57GetLastError(wLogSlot: WORD): DWORD;

      wLogSlot
              ̃foCX̂ƂŋߋNG[̃R[h擾܂B
              foCXɈˑȂG[ wLogSlot ̔ԍɊւ炸擾܂B

߂l    G[R[h

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

5.  萔

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

5.1.  G[R[h

#define APCI57_SUCCESS                  0       // I
#define APCI57_ERR_NO_DEVICE            5000    // gp\ȃfoCX܂
#define APCI57_ERR_RESOURCE             5001    // \[XG[
#define APCI57_ERR_INVALID_ARG          5002    // sȈw肵܂
#define APCI57_ERR_SLOT                 5003    // _Xbgԍsł (܂͌܂)
#define APCI57_ERR_CHANNEL              5004    // `lw肪sł
#define APCI57_ERR_TIMER                5005    // ^C}lsł
#define APCI57_ERR_NOT_ENOUGH_MEM       5006    // \ȃmۂł܂ł
#define APCI57_ERR_NUMDATA              5007    // w肳ꂽ̃f[^obt@ɑ݂܂
#define APCI57_ERR_NOT_CREATED          5008    // foCXNGCgĂ܂
#define APCI57_ERR_START                5009    // X^[gɎs܂
#define APCI57_ERR_INVALID_FUNC         5010    // Ȋ֐Ăяoł
#define APCI57_ERR_IN_USE               5011    // foCXgpł
#define APCI57_ERR_INTERNAL             5100    // VXeG[
#define APCI57_ERR_UNKNOWN              5101    // VXeG[

    APCI_SUCCESS ́AɏlłB
    ȍ~G[Nꍇ̓G[eXV܂ł̃G[lێ܂B

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

5.2.  bZ[W

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

    WM_EOC   F VOTvO̕ϊIBTvOVOł̂ݔB
                ^C}g킸 A/D ϊsAn[h EOC _ (EOC 荞݂̃^C~
                O) Ŕ܂B

    WM_BUFF_HALF_FULL
             F hCõTvOobt@̃n[ttBOobt@ƂȂꍇ̂
                ɔB
                w肳ꂽobt@TCY 2 ([؂艺) ̈ʒuɏ݂sɔ
                ܂B
                Oobt@点ĘAĎ肱ڂȂTvOꍇ
                WM_BUFF_HALF_FULL ̃^C~OŎ荞݂܂B

    WM_BUFF_FULL
             F hCõTvOobt@̃tBOobt@ƂȂꍇ݂̂ɔB
                w肳ꂽobt@TCY̍Ō̈ʒuɏ݂sɔ܂B
                ̃bZ[W͎w肵TCỸf[^荞ŏIꍇɎgp܂B
                (WM_BUFF_OVERFLOW, WM_BUFF_HALF_FULL ̃bZ[W͖܂)
                I Apci57StopSampling ōs܂B

    WM_BUFF_OVERFLOW
             F hCõTvOobt@̃I[o[t[BOobt@ƂȂꍇ
                ݂̂ɔB
                w肳ꂽobt@TCY𒴂ď݂s^C~OŔ܂B
                ۂɂ͐Vȏ݂͍sꂸAChOԂƂȂ܂B܂Aǂݍ݂s
                āAobt@tƂȂ_Œʏ퓮ƂȂ܂B

    WM_SAMPLING_OVERRUN
             F TvOꍇɊ荞ݏǏ]Ȃꍇɔ܂B
                aPCI-A57 ̏ꍇ̓I[o[n[hIɌooȂ̂ŁA`CN
                g̏ꍇɌA`lɂȂƂoAI[o[Ƃ܂B
                I[o[o_ŃTvO̓Xgbv܂B

@@Ep|[g(PI6)ɂ銄荞݂͑ΉĂ܂B

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

5.3.  ̑̒萔

#define APCI57_SLOT_AUTO    ((WORD) ~0U)
#define APCI57_MAX_SLOTS    16

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