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

関数個別説明

ドキュメント内 GPC-4161 (ページ 92-168)

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

7.2 関数個別説明

【機能】

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

Windows XP/2000/2003 では、「デバイス マネージャ」に「IfSdio」が追加され認識された弊社 通信モジュールのデジタル入出力デバイスが一覧表示されます。

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

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

デバイス名は使用するボード枚数やスロット位置の変更等でシステム構成が変化すると割り当 てられる名前が変化する場合があります。システム構成が変化する環境でご使用になる場合は、

デバイス名の指定が変更できるようにアプリケーションを作成ください。

【書式】

(x86 専用)の定義は以前のバージョンとの互換性のために残されています。

新たにアプリケーションを作成される場合には、(x86、x64 共用)の定義をご使用下さい。

●C 言語(x86 専用) HANDLE SdioOpen(

LPCTSTR Name );

●C 言語(x64 専用) HANDLE SdioOpen(

LPCSTR Name );

●Visual Basic

Declare Function SdioOpen Lib "IfSdio.DLL"( _ ByVal Name As String_

)As Long

●Delphi

function SdioOpen(

Name: String

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

●Visual C# .NET(x86、x64 共用) [DllImport(“IfSdio.dll”)]

public static extern IntPtr SdioOpen(

string Name // デバイス名

);

© 2002, 2016 Interface Corporation. All rights reserved.

●Visual C# .NET(x86 専用) [DllImport(“IfSdio.dll”)]

public static extern uint SdioOpen(

string Name // デバイス名

);

●Visual Basic .NET(x86、x64 共用)

Declare Function SdioOpen Lib “IfSdio.dll” ( _ ByVal Name As String _ ‘ デバイス名 ) As IntPtr

●Visual Basic .NET(x86 専用)

Declare Function SdioOpen Lib “IfSdio.dll” ( _ ByVal Name As String _ ‘ デバイス名 ) As uint

【パラメータ】

Name

オープンするデバイス名を指定してください。

【戻り値】

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

INVALID_HANDLE_VALUE(FFFFFFFFh)が返されます。

【備考】

●UNICODE 文字列について

C 言語(x86 専用)で、SdioOpen の引数 Name に指定する文字列は LPCTSTR 型として定義していま すが、UNICODE 文字列には対応しておりません。

x86 環境でご使用になる場合、使用例に沿って記述してください。

【使用例】

●C 言語(x86 専用) HANDLE Device;

Device = SdioOpen((LPCTSTR)"IFSDIO1");

if(Device == INVALID_HANDLE_VALUE) { /* オープンに失敗 */

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

}

●C 言語(x64 専用) HANDLE Device;

char* lpszName = “IFSDIO1”;

Device = SdioOpen((LPCSTR) lpszName);

if(Device == INVALID_HANDLE_VALUE) { /* オープンに失敗 */

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

}

●Visual Basic Dim Device As Long

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

' オープンに失敗

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

●Delphi var

Device: THandle;

begin

// ポート初期化

Device := SdioOpen('IFSDIO1');

if DeviceHandle = INVALID_HANDLE_VALUE then begin

// オープンに失敗

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

end;

end;

●Visual C# .NET IntPtr DeviceHandle;

DeviceHandle = IFCSDIO_ANY.SdioOpen(“IFSDIO1”);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

DeviceHandle = IFCSDIO_ANY.SdioOpen(“IFSDIO1”)

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

© 2002, 2016 Interface Corporation. All rights reserved.

2. SdioClose

【機能】

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

【書式】

(x86 専用)の定義は以前のバージョンとの互換性のために残されています。

新たにアプリケーションを作成される場合には、(x86、x64 共用)の定義をご使用下さい。

●C 言語

LONG SdioClose(

HANDLE DeviceHandle );

●Visual Basic

Declare Function SdioClose Lib "IfSdio.DLL"( _ ByVal DeviceHandle As Long _

)As Long

●Delphi

function SdioClose ( DeviceHandle: Thandle

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

●Visual C# .NET(x86、x64 共用)

[DllImport(“IfSdio.dll”)]

public static extern uint SdioClose(

IntPtr DeviceHandle // デバイスハンドル );

●Visual C# .NET(x86 専用)

[DllImport(“IfSdio.dll”)]

public static extern uint SdioClose(

uint DeviceHandle // デバイスハンドル );

●Visual Basic .NET(x86、x64 共用)

Declare Function SdioClose Lib “IfSdio.dll” ( _

ByVal DeviceHandle As IntPtr _ ‘ デバイスハンドル ) As Integer

●Visual Basic .NET(x86 専用)

Declare Function SdioClose Lib “IfSdio.dll” ( _

ByVal DeviceHandle As Integer _ ‘ デバイスハンドル ) As Integer

【パラメータ】

DeviceHandle

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

【戻り値】

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

【備考】

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

【使用例】

●C 言語 INT Ret;

HANDLE DeviceHandle;

DeviceHandle = SdioOpen(“IFSDIO1”);

: :

Ret = SdioClose(DeviceHandle);

●Visual Basic Dim Name As String Dim DeviceHandle As Long Name = "IFSDIO1" & Chr( 0 ) DeviceHandle = SdioOpen(Name) :

Ret = SdioClose(DeviceHandle)

●Delphi var

Name: String;

DeviceHandle: THandle;

begin

Name := 'IFSDIO1';

DeviceHandle := SdioOpen(Name);

: :

© 2002, 2016 Interface Corporation. All rights reserved.

●Visual C# .NET IntPtr DeviceHandle;

uint Ret;

Ret = IFCSDIO_ANY.SdioClose(DeviceHandle);

●Visual Basic .NET

Dim DeviceHandle As IntPtr Dim Ret As Integer

Ret = IFCSDIO_ANY.SdioClose(DeviceHandle)

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

3. SdioCommonGetDeviceInfo

【機能】

デバイスのリソース情報を取得します。

SdioCommonGetDeviceInfo 関数で得られる情報は、以下のとおりです。

♦ デバイス ID

♦ ベンダ ID

♦ リビジョン ID

♦ サブシステム ID

♦ サブシステムベンダ ID

♦ ボード ID (RSW1 設定値)

♦ 端子台番号

【書式】

(x86 専用)の定義は以前のバージョンとの互換性のために残されています。

新たにアプリケーションを作成される場合には、(x86、x64 共用)の定義をご使用下さい。

●C 言語

LONG SdioCommonGetDeviceInfo(

HANDLE DeviceHandle, PDWORD DeviceID, PDWORD VendorID, PDWORD RevisionID, PDWORD SubSystemID, PDWORD SubsystemVendorID, PDWORD BoardID,

PDWORD TerminalNo );

●Visual Basic

Declare Function SdioCommonGetDeviceInfo Lib "IfSdio.DLL"( _ ByVal DeviceHandle As Long, _

ByRef DeviceID As Long, _ ByRef VendorID As Long, _ ByRef RevisionID As Long, _ ByRef SubSystemID As Long, _

ByRef SubsystemVendorID As Long, _ ByRef BoardID As Long, _

ByRef TerminalNo As Long _ ) As Long

© 2002, 2016 Interface Corporation. All rights reserved.

●Delphi

function SdioCommonGetDeviceInfo(

DeviceHandle : THandle;

var DeviceID: DWord;

var VendorID DWord;

var RevisionID DWord;

var SubSystemID DWord;

var SubsystemVendorID DWord;

var BoardID DWord;

var TerminalNo DWord

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

●Visual C# .NET(x86、x64 共用)

[DllImport(“IfSdio.dll”)]

public static extern uint SdioCommonGetDeviceInfo(

IntPtr DeviceHandle, out uint DeviceID, out uint VendorID, out uint RevisionID, out uint SubSystemID, out uint SubsystemVendorID, out uint BoardID,

out uint TerminalNo );

●Visual C# .NET(x86 専用)

[DllImport(“IfSdio.dll”)]

public static extern uint SdioCommonGetDeviceInfo(

uint DeviceHandle, out uint DeviceID, out uint VendorID, out uint RevisionID, out uint SubSystemID, out uint SubsystemVendorID, out uint BoardID,

out uint TerminalNo );

●Visual Basic .NET(x86、x64 共用)

Declare Function SdioCommonGetDeviceInfo Lib “IfSdio.dll” ( _ ByVal DeviceHandle As IntPtr, _

ByRef DeviceID As Integer, _ ByRef VendorID As Integer, _ ByRef RevisionID As Integer, _ ByRef SubSystemID As Integer, _ ByRef SubsystemVendorID As Integer, _ ByRef BoardID As Integer, _ ByRef TerminalNo As Integer _ ) As Integer

●Visual Basic .NET(x86 専用)

Declare Function SdioCommonGetDeviceInfo Lib “IfSdio.dll” ( _ ByVal DeviceHandle As Integer, _

ByRef DeviceID As Integer, _ ByRef VendorID As Integer, _ ByRef RevisionID As Integer, _ ByRef SubSystemID As Integer, _ ByRef SubsystemVendorID As Integer, _ ByRef BoardID As Integer, _ ByRef TerminalNo As Integer _ ) As Integer

【パラメータ】

DeviceHandle

リソース情報を取得したいデバイスの、SdioOpen関数によって得られたハンドル。

DeviceID

デバイス ID を返す変数へのポインタ。

VendorID

ベンダ ID を返す変数へのポインタ。

弊社のベンダ ID は 1147h です。

RevisionID

リビジョン ID を返す変数へのポインタ。

SubSystemID

サブシステム ID を返す変数へのポインタ。

SubsystemVendorID

サブシステムベンダ ID を返す変数へのポインタ。

© 2002, 2016 Interface Corporation. All rights reserved.

TerminalNo

端子台番号を返す変数へのポインタ。

【戻り値】

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

【使用例】

●C 言語

HANDLE hDeviceHandle;

DWORD dwDeviceID;

DWORD dwVendorID;

DWORD dwRevisionID;

DWORD dwSubSystemID;

DWORD dwSubSystemVendorID;

DWORD dwBoardID;

DWORD dwTerminalNo;

LONG nRet;

nRet = SdioCommonGetDeviceInfo(hDeviceHandle, &dwDeviceID, &dwVendorID, &dwRevisionID,

&dwSubSystemID, &dwSubSystemVendorID, &dwBoardID,&dwTerminalNo );

●Visual Basic

Dim hDeviceHandle As Long Dim dwDeviceID As Long Dim dwVendorID As Long Dim dwRevisionID As Long Dim dwSubSystemID As Long Dim dwSubSystemVendorID As Long Dim dwBoardID As Long

Dim dwTerminalNo As Long Dim nRet As Long

nRet = SdioCommonGetDeviceInfo(hDeviceHandle, dwDeviceID, dwVendorID, _

RevisionID,dwSubSystemID, dwSubSystemVendorID, dwBoardID, dwTerminalNo )

●Delphi var

hDeviceHandle: THandle;

dwDeviceID: DWord;

dwVendorID: DWord;

dwRevisionID: DWord;

dwSubSystemID: DWord;

dwSubSystemVendorID: DWord;

dwBoardID: DWord;

dwTerminalNo: DWord;

nRet: DWord;

begin

nRet := SdioCommonGetDeviceInfo(hDeviceHandle, dwDeviceID, dwVendorID, dwRevisionID, dwSubSystemID, dwSubSystemVendorID, dwBoardID, dwTerminalNo );

end;

●Visual C# .NET IntPtr DeviceHandle;

uint Ret;

uint DeviceID;

uint VendorID;

uint RevisionID;

uint SubSystemID;

uint SubSystemVendorID;

uint BoardID;

uint TerminalNo;

Ret = IFCSDIO_ANY.SdioClose(DeviceHandle, out DeviceID, out VendorID, out RevisionID, out SubSystemID, out SubSystemVendorID, out BoardID, out TerminalNo);

●Visual Basic .NET

Dim DeviceHandle As IntPtr Dim Ret As Integer

Dim DeviceID As Integer Dim VendorID As Integer Dim RevisionID As Integer Dim SubSystemID As Integer Dim SubSystemVendorID As Integer Dim BoardID As Integer

Dim TerminalNo As Integer

Ret = IFCSDIO_ANY.SdioClose(DeviceHandle, DeviceID, VendorID, RevisionID, _ SubSystemID, SubSystemVendorID, BoardID, TerminalNo);

© 2002, 2016 Interface Corporation. All rights reserved.

4. SdioInputPoint

【機能】

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

【書式】

(x86 専用)の定義は以前のバージョンとの互換性のために残されています。

新たにアプリケーションを作成される場合には、(x86、x64 共用)の定義をご使用下さい。

●C 言語

LONG SdioInputPoint (

HANDLE DeviceHandle, PBYTE Buffer, DWORD StartNum, DWORD InputNum );

●Visual Basic

Declare Function SdioInputPoint Lib "IfSdio.DLL"( _ ByVal DeviceHandle As Long, _

ByRef Buffer As Byte, _ ByVal StartNum As Long, _ ByVal InputNum As Long _ )As Long

●Delphi

function SdioInputPoint(

DeviceHandle: Thandle;

Buffer: pointer;

StartNum: DWORD;

InputNum DWORD

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

●Visual C# .NET(x86、x64 共用)

[DllImport(“IfSdio.dll”)]

public static extern uint SdioInputPoint(

IntPtr DeviceHandle, out byte Buffer, uint StartNum uint Num );

[DllImport(“IfSdio.dll”)]

public static extern uint SdioInputPoint(

IntPtr DeviceHandle, byte[] Buffer, uint StartNum uint Num );

●Visual C# .NET(x86 専用)

[DllImport(“IfSdio.dll”)]

public static extern uint SdioInputPoint(

uint DeviceHandle, out byte Buffer, uint StartNum uint Num );

[DllImport(“IfSdio.dll”)]

public static extern uint SdioInputPoint(

uint DeviceHandle, byte[] Buffer, uint StartNum uint Num );

●Visual Basic .NET(x86、x64 共用)

Declare Function SdioInputPoint Lib “IfSdio.dll” ( _ ByVal DeviceHandle As IntPtr, _

ByRef Buffer As Byte, _ ByVal StartNum As Integer, _ ByVal Num As Integer _ ) As Integer

Declare Function SdioInputPoint Lib “IfSdio.dll” ( _ ByVal DeviceHandle As IntPtr, _

ByVal Buffer() As Byte, _ ByVal StartNum As Integer, _ ByVal Num As Integer _ ) As Integer

© 2002, 2016 Interface Corporation. All rights reserved.

●Visual Basic .NET(x86 専用)

Declare Function SdioInputPoint Lib “IfSdio.dll” ( _ ByVal DeviceHandle As Integer, _

ByRef Buffer As Byte, _ ByVal StartNum As Integer, _ ByVal Num As Integer _ ) As Integer

Declare Function SdioInputPoint Lib “IfSdio.dll” ( _ ByVal DeviceHandle As Integer, _

ByVal Buffer() As Byte, _ ByVal StartNum As Integer, _ ByVal Num As Integer _ ) As Integer

【パラメータ】

DeviceHandle

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

Buffer

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

StartNum

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

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

接点番号 1 2 3 … 23 24

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

InputNum

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

【戻り値】

正常終了した場合は、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;

●Visual C# .NET IntPtr DeviceHandle;

uint Ret;

byte[] Buffer = new byte[8];

Ret = IFCSDIO_ANY.SdioInputPoint(DeviceHandle, Buffer, 16, 8);

●Visual Basic .NET

Dim DeviceHandle As IntPtr Dim Ret As Integer

Dim Buffer(8) As Byte

Ret = IFCSDIO_ANY.SdioInputPoint(DeviceHandle, Buffer, 16, 8)

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

© 2002, 2016 Interface Corporation. All rights reserved.

5. SdioOutputPoint

【機能】

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

【書式】

(x86 専用)の定義は以前のバージョンとの互換性のために残されています。

新たにアプリケーションを作成される場合には、(x86、x64 共用)の定義をご使用下さい。

●C 言語

LONG SdioOutputPoint(

HANDLE DeviceHandle, PBYTE Buffer, DWORD StartNum, DWORD OutputNum );

●Visual Basic

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

ByRef Buffer As Byte, _ ByVal StartNum As Long, _ ByVal OutputNum As Long _ )As Long

●Delphi

function SdioOutputPoint(

DeviceHandle: Thandle;

Buffer: pointer;

StartNum: DWORD;

OutputNum DWORD

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

●Visual C# .NET(x86、x64 共用)

[DllImport(“IfSdio.dll”)]

public static extern uint SdioOutputPoint(

IntPtr DeviceHandle, ref byte Buffer, uint StartNum, uint Num );

[DllImport(“IfSdio.dll”)]

public static extern uint SdioOutputPoint(

IntPtr DeviceHandle, byte[] Buffer, uint StartNum, uint Num );

●Visual C# .NET(x86 専用)

[DllImport(“IfSdio.dll”)]

public static extern uint SdioOutputPoint(

uint DeviceHandle, ref byte Buffer, uint StartNum, uint Num );

[DllImport(“IfSdio.dll”)]

public static extern uint SdioOutputPoint(

uint DeviceHandle, byte[] Buffer, uint StartNum, uint Num );

●Visual Basic .NET(x86、x64 共用)

Declare Function SdioOutputPoint Lib “IfSdio.dll” ( _ ByVal DeviceHandle As IntPtr, _

ByRef Buffer As Byte, _ ByVal StartNum As Integer, _ ByVal Num As Integer _ ) As Integer

Declare Function SdioOutputPoint Lib “IfSdio.dll” ( ByVal DeviceHandle As IntPtr, _

ByVal Buffer() As Byte, _ ByVal StartNum As Integer, _ ByVal Num As Integer _ ) As Integer

ドキュメント内 GPC-4161 (ページ 92-168)

関連したドキュメント