第 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 に入力します。