• 検索結果がありません。

関数個別説明

ドキュメント内 GPC-4116 (ページ 106-154)

第 5 章 リファレンス(汎用DIO部) 105

5.2 関数個別説明

1. SdioOpen

【機能】

HDLC モジュールのデジタル入出力デバイスのオープンを行い、以後のデバイスへのアクセスを行 えるようにします。

Windows NT 以外の OS では、「デバイス マネージャ」に「IfSDio」が追加され認識された弊社 HDLC モジュールのデジタル入出力デバイスが一覧表示されます。

一覧の製品型式の横にインタフェースモジュール上のRSW1 の値とデバイス名が表示されます。

DI入力ユーティリティ、DO出力ユーティリティでも確認できます。

デバイス名は使用するボード枚数やスロット位置の変更等でシステム構成が変化すると割り当て られる名前が変化する場合があります。システム構成が変化する環境でご使用になる場合は、デバ イス名の指定が変更できるようにアプリケーションを作成ください。

【書式】

●C 言語

HANDLE SdioOpen (

LPCTSTR lpszName );

●Visual Basic

Declare Function SdioOpen Lib "IfSdio.DLL"(

ByVal lpszName As String )As Long

●Delphi

function SdioOpen(

lpszName: String

):THandle; stdcall; external 'IfSdio.DLL';

【パラメータ】

lpszName

オープンするデバイス名を指定します。

【戻り値】

関数が正常に終了した場合には、有効なハンドルが返されます。 他の関数は、本関数により取得 し た ハ ン ド ル を 使 用 し て デ バ イ ス の 制 御 を 行 い ま す 。 オ ー プ ン に 失 敗 し た 場 合 に は 、 INVALID_HANDLE_VALUE(-1)が返されます。

© 1999, 2016 Interface Corporation. All rights reserved.

107

【使用例】

●C 言語

HANDLE hDeviceHandle;

hDeviceHandle = SdioOpen("IFSDIO1");

if(hDeviceHandle == INVALID_HANDLE_VALUE){

/* オープンに失敗 */

printf("Fail to open the port\n");

}

●Visual Basic

Dim hDeviceHandle As Long

hDeviceHandle = SdioOpen("IFSDIO1") If hDeviceHandle = -1 Then

' オープンに失敗

MsgBox("Fail to open the port") End If

●Delphi var

hDeviceHandle: THandle;

begin

// ポート初期化

hDeviceHandle := SdioOpen('IFSDIO1');

if hDeviceHandle = INVALID_HANDLE_VALUE then begin

// オープンに失敗

MessageDlg('Fail to open the port', mtInformation, [mbOK], 0);

end;

end;

デ バ イ ス 名 "IFSDIO1" の HDLC モ ジ ュ ー ル の デ ジ タ ル 入 出 力 デ バ イ ス を オ ー プ ン し 、 変 数 hDeviceHandle にデバイスハンドルを返します。

© 1999, 2016 Interface Corporation. All rights reserved.

2. SdioClose

【機能】

HDLC モジュールのデジタル入出力デバイスのクローズを行い、HDLC モジュールのデジタル入出力 デバイスへアクセスのために使用されていた各種リソースの解放を行い、以後の HDLC モジュール のデジタル入出力デバイスへのアクセスを禁止します。

【書式】

●C 言語

INT SdioClose(

HANDLE hDeviceHandle );

●Visual Basic

Declare Function SdioClose Lib "IfSdio.DLL" (

ByVal hDeviceHandle As Long ) As Long

●Delphi

function SdioClose(

hDeviceHandle: Thandle

) : DWORD; stdcall; external 'IfSdio.DLL';

【パラメータ】

hDeviceHandle

SdioOpen関数で取得したデバイスハンドルを指定してください。

【戻り値】

SdioClose関数は処理が正常終了した場合は、IFSDIO_ERROR_SUCCESSが返されます。正常に処理が 終了しなかった場合IFSDIO_ERROR_SUCCESS以外の値を返します。IFSDIO_ERROR_SUCCESS以外の値が 返された場合については、『戻り値一覧』を参照してください。

【備考】

再度、HDLCモジュールのデジタル入出力デバイスへのアクセスを行う場合にはオープン処理 (SdioOpen関数)を呼び出してください。

© 1999, 2016 Interface Corporation. All rights reserved.

109

【使用例】

●C 言語

nRet = SdioClose( hDeviceHandle );

●Visual Basic

nRet = SdioClose( hDeviceHandle )

●Delphi

nRet := SdioClose( hDeviceHandle );

デバイスハンドル hDeviceHandle の HDLC モジュールのデジタル入出力デバイスのクローズ処理を 行います。

© 1999, 2016 Interface Corporation. All rights reserved.

3. SdioInputPoint

【機能】

任意の点数の入力接点の状態を読み込みます。指定した開始接点番号から 1 接点ずつ変数に格納さ れます。

【書式】

●C 言語

LONG SdioInputPoint (

HANDLE hDeviceHandle, PBYTE PbBuffer,

DWORD DwStartNum, DWORD dwnInputNum );

●Visual Basic

Declare Function SdioInputPoint Lib "IfSdio.DLL" ( ByVal hDeviceHandle As Long, ByRef PbBuffer As Byte, ByVal DwStartNum As Long, ByVal dwnInputNum As Long ) As Long

●Delphi

function SdioInputPoint(

HDeviceHandle: THandle;

PbBuffer: pointer;

DwStartNum: Integer;

DwnInputNum: Integer

):Integer; stdcall; external 'IfSdio.DLL';

【パラメータ】

hDeviceHandle

SdioOpen関数で取得したデバイスハンドルを指定してください。

pBuffer

デバイスから読み取ったデータを受け取るバッファを指すポインタです。

dwStartNum

入力開始接点番号 1~24 を指定してください。

入力接点の指定と、信号は下記のように対応しています。

接点番号 1 2 3 … 23 24

入力信号 IN1 IN2 IN3 … IN23 IN24 1: Low レベル 0:High レベル

© 1999, 2016 Interface Corporation. All rights reserved.

111 dwInputNum

入力接点数を指定してください。

【戻り値】

SdioInputPoint関数は正常に終了するとIFSDIO_ERROR_SUCCESSを返します。それ以外の場合は IFSDIO_ERROR_SUCCESS以外の値を返します。IFSDIO_ERROR_SUCCESS以外の値が返された場合につい ては、『戻り値一覧』を参照してください。

【使用例】

●C 言語

HANDLE hDeviceHandle;

LONG nRet;

BYTE bBuffer[8];

nRet = SdioInputPoint( hDeviceHandle, &bBuffer[0], 16, 8 );

●Visual Basic

Dim hDeviceHandle As Long Dim nRet As Long

Dim bBuffer(8) As Byte

nRet = SdioInputPoint( hDeviceHandle, bBuffer(0), 16, 8 )

●Delphi Var

hDeviceHandle: THandle;

nRet: Integer;

bBuffer: Array[0..7] of Byte;

begin

nRet := SdioInputPoint( hDeviceHandle, @bBuffer[0], 16, 8 );

end;

デバイスハンドル hDeviceHandle が示すデバイスの IN16~IN23 の状態を bBuffer[0...7]に入力し ます。

© 1999, 2016 Interface Corporation. All rights reserved.

4. SdioOutputPoint

【機能】

任意の点数の出力接点の出力を制御します。指定した開始接点番号から 1 接点づつ変数に格納され たデータで接点を制御します。

【書式】

●C 言語

LONG SdioOutputPoint(

HANDLE hDeviceHandle, PBYTE pbBuffer, DWORD dwStartNum, DWORD dwOutputNum );

●Visual Basic

Declare Function SdioOutputPoint Lib "IfSdio.DLL" ( ByVal hDeviceHandle As Long,

ByRef pbBuffer As Byte,

ByVal dwStartNum As Long, ByVal dwOutputNum As Long ) As Long

●Delphi

function SdioOutputPoint ( hDeviceHandle Thandle;

pbBuffer pointer;

dwStartNum DWORD;

dwOutputNum DWORD

):Integer; stdcall; external 'IfSdio.DLL';

【パラメータ】

hDeviceHandle

SdioOpen関数で取得したデバイスハンドルを指定してください。

pbBuffer

デバイスから出力させるデータを収めている変数へのポインタです。

dwStartNum

出力開始接点番号 1~24 を指定してください。

出力接点の指定と、信号は下記のように対応しています。

接点番号 1 2 3 … 23 24

出力信号 OUT1 OUT2 OUT3 … OUT23 OUT24 1: Low レベル 0:High レベル

© 1999, 2016 Interface Corporation. All rights reserved.

113 dwOutputNum

出力接点数を指定してください。

【戻り値】

SdioOutputPoint関数は正常に終了するとIFSDIO_ERROR_SUCCESSを返します。それ以外の場合は IFSDIO_ERROR_SUCCESS以外の値を返します。IFSDIO_ERROR_SUCCESS以外の値が返された場合につい ては、『戻り値一覧』を参照してください。

【使用例】

●C 言語

HANDLE hDeviceHandle;

LONG hRet;

BYTE bBuffer[8];

bBuffer[0] = 1;

bBuffer[1] = 0;

bBuffer[2] = 0;

bBuffer[3] = 1;

bBuffer[4] = 0;

bBuffer[5] = 1;

bBuffer[6] = 1;

bBuffer[7] = 0;

nRet = SdioOutputPoint( hDeviceHandle, &bBuffer[0], 16, 8 );

●Visual Basic

Dim hDeviceHandle As Long Dim nRet As Long

Dim bBuffer(8) As Byte bBuffer(0) = 1

bBuffer(1) = 0 bBuffer(2) = 0 bBuffer(3) = 1 bBuffer(4) = 0 bBuffer(5) = 1 bBuffer(6) = 1 bBuffer(7) = 0

nRet = SdioOutputPoint( hDeviceHandle, bBuffer(0), 16, 8 )

© 1999, 2016 Interface Corporation. All rights reserved.

●Delphi Var

hDeviceHandle: THandle;

nRet: Integer;

bBuffer: array[0..7] of Byte begin

bBuffer[0] := 1;

bBuffer[1] := 0;

bBuffer[2] := 0;

bBuffer[3] := 1;

bBuffer[4] := 0;

bBuffer[5] := 1;

bBuffer[6] := 1;

bBuffer[7] := 0;

nRet := SdioOutputPoint( hDeviceHandle, @bBuffer[0], 16, 8 );

end;

デバイスハンドル hDeviceHandle が示すデバイスの OUT16~OUT23 に bBuffer[0...7]の値を出力し ます。

© 1999, 2016 Interface Corporation. All rights reserved.

115

5. SdioInputByte

【機能】

接点 8 点分のデータを読み込み、1 バイト(8 ビット)の変数に格納します。

【書式】

●C 言語

LONG SdioInputByte (

HANDLE hDeviceHandle, DWORD dwInputNo, PBYTE pbValue );

●Visual Basic

Declare Function SdioInputByte Lib "IfSdio.DLL" (

ByVal hDeviceHandle As Long,

ByVal dwInputNo As Long,

ByRef pbValue As Byte

) As Long

●Delphi

function SdioInputByte(

hDeviceHandle: Thandle;

dwInputNo: DWORD;

var pbValue: Byte

):Integer; stdcall; external 'IfSdio.DLL';

【パラメータ】

hDeviceHandle

SdioOpen関数で取得したデバイスハンドルを指定してください。

dwInputNo

読み込む接点を下記の識別子で指定します。

定数 意味

IFSDIO_IN1_8 IN1~IN8 の 8 点分のデータを読み込みます。

IFSDIO_IN9_16 IN9~IN16 の 8 点分のデータを読み込みます。

IFSDIO_IN17_24 IN17~IN24 の 8 点分のデータを読み込みます。

pbValue

読み込まれたデータを格納する変数へのポインタを指定してください。

【戻り値】

SdioInputByte関数は正常に終了するとIFSDIO_ERROR_SUCCESSを返します。それ以外の場合は IFSDIO_ERROR_SUCCESS以外の値を返します。IFSDIO_ERROR_SUCCESS以外の値が返された場合につい ては、『戻り値一覧』を参照してください。

© 1999, 2016 Interface Corporation. All rights reserved.

【備考】

取得したデータは下記のようにビット毎に接点と対応しています。

ビット Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 IFSDIO_IN1_8 IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1 IFSDIO_IN9_16 IN16 IN15 IN14 IN13 IN12 IN11 IN10 IN9 IFSDIO_IN17_24 IN24 IN23 IN22 IN21 IN20 IN19 IN18 IN17 1:Low レベル 0:High レベル

【使用例】

●C 言語

HANDLE hDeviceHandle;

LONG nRet;

BYTE bValue;

nRet = SdioInputByte( hDeviceHandle, IFSDIO_IN1_8, &bValue );

●Visual Basic

Dim hDeviceHandle As Long Dim nRet As Long

Dim bValue As Byte

nRet = SdioInputByte( hDeviceHandle, IFSDIO_IN1_8, bValue )

●Delphi var

hDeviceHandle: THandle;

nRet: Integer;

bValue: Byte;

begin

nRet := SdioInputByte( hDeviceHandle, IFSDIO_IN1_8, bValue );

end;

デバイスハンドル hDeviceHandle が示すデバイスの IN1~IN8 の状態を bValue に入力します。

© 1999, 2016 Interface Corporation. All rights reserved.

117

6. SdioInputWord

【機能】

接点 16 点分のデータを読み込み、1 ワード(16 ビット)の変数に格納します。

【書式】

●C 言語

LONG SdioInputWord (

HANDLE hDeviceHandle, DWORD dwInputNo, PWORD pwValue );

●Visual Basic

Declare Function SdioInputWord Lib "IfSdio.DLL" (

ByVal hDeviceHandle As Long,

ByVal dwInputNo As Long,

ByRef pwValue As Integer

) As Long

●Delphi

function SdioInputWord (

hDeviceHandle: Thandle;

dwInputNo: DWORD;

var pwValue: Word

):Integer; stdcall; external 'IfSdio.DLL';

【パラメータ】

hDeviceHandle

SdioOpen関数で取得したデバイスハンドルを指定してください。

dwInputNo

読み込む接点を下記の識別子で指定します。

定数 意味

IFSDIO_IN1_16 IN1~IN16 の 16 点分のデータを読み込みます。

IFSDIO_IN17_32 IN17~IN32 の 16 点分のデータを読み込みます。

24 点入力の端子台では、IN25~IN32 のデータは取得できません。

またここのデータは全て 0 になります。

pwValue

読み込まれたデータを格納する変数へのポインタを指定してください。

【戻り値】

SdioInputWord関数は正常に終了するとIFSDIO_ERROR_SUCCESSを返します。それ以外の場合は IFSDIO_ERROR_SUCCESS以外の値を返します。IFSDIO_ERROR_SUCCESS以外の値が返された場合につ いては、『戻り値一覧』を参照してください。

© 1999, 2016 Interface Corporation. All rights reserved.

【備考】

データフォーマット

取得したデータは下記のようにビット毎に接点と対応しています。

ビット Bit15 Bit14 Bit13 … Bit2 Bit1 Bit0 IFSDIO_IN1_16 IN16 IN15 IN14 IN3 IN2 IN1 IFSDIO_IN17_32 IN32 IN31 IN30 IN19 IN18 IN17

1:Low レベル 0:High レベル

【使用例】

●C 言語

HANDLE hDeviceHandle;

LONG nRet;

WORD wValue;

nRet = SdioInputWord( hDeviceHandle, IFSDIO_IN1_16, &wValue );

●Visual Basic

Dim hDeviceHandle As Long Dim nRet As Long

Dim wValue As Integer

nRet = SdioInputWord( hDeviceHandle, IFSDIO_IN1_16, wValue )

●Delphi Var

hDeviceHandle: THandle;

nRet: Integer;

wValue: Word;

Begin

nRet := SdioInputWord( hDeviceHandle, IFSDIO_IN1_16, wValue );

end;

デバイスハンドル hDeviceHandle が示すデバイスの IN1~IN16 の状態を wValue に入力します。

© 1999, 2016 Interface Corporation. All rights reserved.

119

7. SdioInputDword

【機能】

接点 32 点分のデータを読み込み、1 ダブルワード(32 ビット)の変数に格納します。

【書式】

●C 言語

LONG SdioInputDword (

HANDLE hDeviceHandle, DWORD dwInputNo, PDWORD pdwValue );

●Visual Basic

Declare Function SdioInputDword Lib "IfSdio.DLL" ( ByVal hDeviceHandle As Long,

ByVal dwInputNo As Long,

ByRef pdwValue As Long

) As Long

●Delphi

function SdioInputDword ( hDeviceHandle: Thandle;

dwInputNo: DWORD;

var pdwValue: DWORD

):Integer; stdcall; external 'IfSdio.DLL';

【パラメータ】

hDeviceHandle

SdioOpen関数で取得したデバイスハンドルを指定してください。

dwInputNo

読み込む接点を下記の識別子で指定します。

定数 意味

IFSDIO_IN1_32 IN1~IN32 の 32 点分のデータを読み込みます。

24 点入力の端子台では IN25~IN32 のデータは取得できません。

またここのデータは全て 0 になります。

pdwValue

読み込まれたデータを格納する変数へのポインタを指定してください。

【戻り値】

SdioInputDword関数は正常に終了するとIFSDIO_ERROR_SUCCESSを返します。それ以外の場合は IFSDIO_ERROR_SUCCESS以外の値を返します。IFSDIO_ERROR_SUCCESS以外の値が返された場合につ いては、『戻り値一覧』を参照してください。

© 1999, 2016 Interface Corporation. All rights reserved.

【備考】

データフォーマット

取得したデータは下記のようにビット毎に接点と対応しています。

ビット Bit31 Bit30 Bit29 … Bit2 Bit1 Bit0 IFSDIO_IN1_32 IN32 IN31 IN30 IN3 IN2 IN1 1:Low レベル 0:High レベル

【使用例】

●C 言語

HANDLE hDeviceHandle;

LONG nRet;

DWORD dwValue;

nRet = SdioInputDword( hDeviceHandle, IFSDIO_IN1_32, &dwValue );

●Visual Basic

Dim hDeviceHandle As Long Dim nRet As Long

Dim dwValue As Long

nRet = SdioInputDword( hDeviceHandle, IFSDIO_IN1_32, dwValue )

●Delphi Var

hDeviceHandle: THandle;

nRet: Integer;

dwValue: DWord;

Begin

nRet := SdioInputDword( hDeviceHandle, IFSDIO_IN1_32, dwValue );

end;

デバイスハンドル hDeviceHandle が示すデバイスの IN1~IN32 の状態を dwValue に入力します。

ドキュメント内 GPC-4116 (ページ 106-154)

関連したドキュメント