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

DPC-0244

N/A
N/A
Protected

Academic year: 2021

シェア "DPC-0244"

Copied!
65
0
0

読み込み中.... (全文を見る)

全文

(1)

DPC-0224

汎用入出力モジュール用

Windows ライブラリ

(2)

目 次

第 1 章 はじめに

3

1.1 概要 ...3

第 2 章 導入方法

4

2.1 インストール手順 ...4 2.2 使用方法 ...4 2.3 実行手順 ...7

第 3 章 リファレンス

9

3.1 関数一覧 ...9 3.2 未サポート関数 ...10 3.3 関数個別説明 ...11 3.4 戻り値一覧 ...62

第 4 章 サンプルプログラム

64

4.1 実行手順 ...64 4.2 サンプルプログラム一覧 ...64

第 5 章 重要な情報

65

(3)

第1章 はじめに

1.1 概要

DPC-0224 は、弊社汎用入出力の I/O 付き Classembly Devices®を制御する為のライブラリ製品 です。

弊社システム監視ライブラリ(DPC-02xx)シリーズでサポートしている汎用入出力機能を、 GPC-2000(デジタル入出力インタフェースモジュール用 Windows 用ドライバ)の API 関数で制御す る事ができます。

(4)

第2章 導入方法

2.1 インストール手順

README.HTM のインストール方法を参照してください。

2.2 使用方法

2.2.1 ライブラリについて DPC-0224 が提供するライブラリ名は、「DPC0224.dll」です。ファイルをインポートしてご使用 ください。 ファイルは、インストール後以下のディレクトリにコピーされます。 ■32bitOS の場合 %SystemRoot%\system32\DPC0224.dll ■64bitOS の場合 %SystemRoot%\system32\DPC0224.dll x64 用 DLL %SystemRoot%\SysWow64\DPC0224.dll x86 用 DLL VC++用のスタティックライブラリ、ヘッダファイルも提供しています。 以下のディレクトリにあるファイルをリンクしてご使用ください。 例)インストール先ドライブを C とした場合 ■Lib ファイル(x86 用) C:\Program Files\Interface\DPC0224lib\DPC0224.lib ■Lib ファイル(x64 用) C:\Program Files\Interface\DPC0224lib\x64\DPC0224.lib ■ヘッダファイル C:\Program Files\Interface\DPC0224lib\include\FbiDio.h

(5)

.NET において専用のクラスライブラリを用意しています。まず下のように参照の設定を行います。 (クラスライブラリのソースファイルも用意しています。DLL 関数の呼び出しをカスタマイズした い場合は、クラスライブラリのソースを参照してください。) IFCDIO クラスは x86 専用の定義です。以前のバージョンとの互換性のために残されています。 新たにアプリケーションを作成される場合には、IFCDIO_ANY クラス(x86、x64 共用)の定義をご使 用下さい。 1. クラスライブラリの作成方法 .NET において DLL 関数を呼び出すには、まずクラスライブラリを用意する必要があります。 Visual C# .NET の場合 Visual Studio を起動し、以下のプロジェクトファイルを開きます。 <インストール先>\interface\DPC0224\samples\CS_NET\IFCDIO\IFCDIO.csproj このプロジェクトをビルドすると、bin フォルダにクラスライブラリ IFCDIO.dll が作成されます。 Visual Basic .NET の場合

Visual Studio を起動し、以下のプロジェクトファイルを開きます。

<インストール先>\interface\DPC0224\samples\VB_NET\IFCDIO\IFCDIO.vbproj

このプロジェクトをビルドすると、bin フォルダにクラスライブラリ IFCDIO.dll が作成されます。 2. クラスライブラリの参照

Visual C# .NET, Visual Basic .NET の場合

Visual Studio のメニューの「プロジェクト」の「参照の追加」を選択してください。 「参照」ボタンをクリックして参照したいクラスライブラリ DLL を指定します。 例) <インストール先>\interface\DPC0224\samples\CS_NET\IFCDIO\bin\Release\IFCDIO.dll <インストール先>\interface\DPC0224\samples\VB_NET\IFCDIO\bin\Relaase\IFCDIO.dll 「選択されたコンポーネント」に指定した DLL が表示されます。 「OK」ボタンをクリックすると設定は完了です。

(6)

次にソースのヘッダで各言語毎に下記のように InterfaceCorpDllWrap の名前空間を追加すれば DLL 関数を次章の「使用例」の方法で呼び出すことができるようになります。

・Visual C# .NET の場合

using InterfaceCorpDllWrap; ・Visual Basic .NET の場合

Imports InterfaceCorpDllWrap

2.2.2 GPC-2000 について

(7)

2.3 実行手順

基本的な制御の手順は GPC-2000 と同様です(記述例は C 言語です)。 1. 初期化 インタフェースモジュールを DioOpen関数で初期化します。 DeviceHandle = DioOpen("FBIDIO512", 0 ); デバイス名(FBIDIO512)を指定します。 初期化が正常終了すると上記の記述例では DeviceHandle にデバイスハンドルが返されます。デバ イスハンドルとは、汎用入出力デバイスを一意に識別するもので、下記以降の関数コールの際に 指定します。 別々のプロセスからの汎用入出力デバイスを使用することが可能です。これにより別々のプロセ ス間で汎用入出力デバイスを共有することが可能です。 複数アプリケーションで同時に一つの汎用入出力デバイスを制御する場合、出力データ及び、汎 用入出力デバイスの設定は整合性を保てるようにアプリケーション間で調整を行ってください。 初期化した汎用入出力デバイスはアプリケーション終了の際には必ず終了処理(DioClose関数) を行ってください。 DioClose 関数を実行すると、出力値は 0 クリアされます。

(8)

2. 出力

DioOutputByte関数, DioOutputWord関数を使用して汎用入出力デバイスの指定した接点の出力を 8 点、16 点単位で制御します。

DioOutputByte( DeviceHandle, FBIDIO_IN1_8, 0x12 ); DioOutputWord( DeviceHandle, FBIDIO_IN1_16, 0x1234 );

DioOutputPoint関数では任意の接点から任意の点数の接点をINT型配列で設定したデータで制御 を行うことが可能です。

DioOutputPoint( DeviceHandle, &Buffer[0], 16, 8 ); 3. 入力

DioInputByte関数, DioInputWord関数を使用して汎用入出力デバイスの指定した接点のデータを 8 点、16 点単位で取り出します。

DioInputByte( DeviceHandle, FBIDIO_IN1_8, &ByteValue ); DioInputWord( DeviceHandle, FBIDIO_IN1_16, &WordValue );

DioInputPoint関数では任意の接点から任意の点数のデータをINT型配列に格納することができま す。

DioInputPoint( DeviceHandle, &Buffer[0], 16, 8 ); 4. 終了処理

DioClose関数で汎用入出力デバイスの終了処理を行います。 DioClose( DeviceHandle );

(9)

第3章 リファレンス

3.1 関数一覧

No 関数名 機能 ●初期化関数 1 DioOpen 汎用入出力デバイスのオープンを行い、以後の汎用入出力デ バイスへのアクセスを行えるようにします。 2 DioClose 汎用入出力デバイスのクローズを行い、汎用入出力デバイス アクセスのために使用されていた各種リソースの解放を行 い、以後の汎用入出力デバイスへのアクセスを禁止します。 ●入出力関数 3 DioInputPoint 任意の点数の入力接点の状態を読み込みます。 4 DioInputByte 指定した 8 点の入力接点の状態を読み込みます。 (BYTE アクセス) 5 DioInputWord 指定した 16 点の入力接点の状態を読み込みます。 (WORD アクセス) 6 DioOutputPoint 任意の点数の出力接点の出力を制御します。 7 DioOutputByte 指定した 8 点の出力接点を制御します。 (BYTE アクセス) 8 DioOutputWord 指定した 16 点の出力接点を制御します。 (WORD アクセス) 9 DioEintSetIrqMask エッジ検出割り込みマスク状態を設定します。 10 DioEintGetIrqMask エッジ検出割り込みマスク状態を取得します。 11 DioEventRequestPendingEx 汎用入出力デバイスの割り込みイベント要求を待ちます。 12 DioEintSetEdgeConfig エッジ検出機能を設定します。 13 DioEintGetEdgeConfig 現在のエッジ検出設定を取得します。

(10)

3.2 未サポート関数

以下の関数は未サポートです。 関数を実行すると、FBIDIO_ERROR_NOT_SUPPORTED が返ります。 関数名 関数名 DioGetDeviceConfig DioStopInputHandShake DioGetDeviceConfigEx DioStopOutputHandShake DioCommonGetPciDeviceInfo DioGetHandShakeStatus DioInputDword DioGetOverlappedResult DioOutputDword DioSetTimeOut DioGetAckStatus DioGetTimeOut DioSetAckPulseCommand DioSetIrqMask DioGetStbStatus DioGetIrqMask DioSetStbPulseCommand DioSetIrqConfig DioInputUniversalPoint DioGetIrqConfig DioOutputUniversalPoint DioEventRequestPending DioSetLatchStatus DioEintSetIrqMaskEx DioGetLatchStatus DioEintGetIrqMaskEx DioSetRstinMask DioSetTimerConfig DioGetRstinMask DioGetTimerConfig DioGetResetInStatus DioGetTimerCount DioGetBackGroundUseTimer DioEintSetEdgeConfigEx DioSetBackGroundUseTimer DioEintGetEdgeConfigEx DioSetBackGround DioEintInputPoint DioFreeBackGround DioEintInputByte DioStopBackGround DioEintInputWord DioGetBackGroundStatus DioEintInputDword DioInputPointBack DioEintSetFilterConfig DioOutputPointBack DioEintGetFilterConfig DioWatchPointBack DioSetEventRequestMode DioGetInputHandShakeConfig DioOutputSync DioSetInputHandShakeConfig DioGetOutputHandShakeConfig DioSetOutputHandShakeConfig DioInputHandShake DioInputHandShakeEx DioOutputHandShake

(11)

3.3 関数個別説明

1. DioOpen

【機能】 汎用入出力デバイスのオープンを行い、以後の汎用入出力デバイスへのアクセスを行えるよう にします。 【書式】 ●C 言語(x86 専用) HANDLE DioOpen( LPCTSTR Name, DWORD Flag ); ●C 言語(x64 専用) HANDLE DioOpen( LPCSTR Name, DWORD Flag ); ●Visual Basic

Declare Function DioOpen Lib "dpc0224.DLL"( _ ByVal Name As String, _

ByVal Flag As Long _ )As Long

●Visual C# .NET(x86、x64 共用) [DllImport("dpc0224.dll")]

public static extern IntPtr DioOpen( string lpszName,

uint fdwFlags );

●Visual C# .NET(x86 専用) [DllImport("dpc0224.dll")]

public static extern uint DioOpen( string lpszName,

uint fdwFlags );

(12)

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

Declare Function DioOpen Lib "dpc0224.dll" ( ByVal lpszName As String,

ByVal fdwFlags As Integer )As IntPtr

●Visual Basic .NET(x86 専用)

Declare Function DioOpen Lib "dpc0224.dll"( ByVal lpszName As String,

ByVal fdwFlags As Integer )As Integer 【パラメータ】 Name オープンするデバイス名を指定します。「FBIDIO512」で指定してください。 Flag オープンフラグを指定します。 指定可能な識別子は下記のものから選択できますが、本製品では FBIDIO_FLAG_SHARE の状 態になります。 識別子 意味 FBIDIO_FLAG_NORMAL 指定可能ですが、設定はできません。 通常のオープン時に使用するフラグです。これを指定す ると重複してオープンすることはできません。 FBIDIO_FLAG_SHARE 1 つのデバイスを複数のプロセス(アプリケーション)か ら重複(共有)して制御することを許可するフラグです。 【戻り値】 DioOpen関数が正常に終了した場合には、有効なハンドルが返されます。 他の関数は、本関数により取得したハンドルを使用してデバイスの制御を行います。 オープンに失敗した場合には、INVALID_HANDLE_VALUE(FFFFFFFFh)が返されます。 【備考】 ・同じデバイスを 2 つ以上のアプリケーションで共有することが可能となります。 ・同一アプリケーションで共有してオープンする事はできません。

(13)

【使用例】

●C 言語(32bit 用コンパイラ) HANDLE DeviceHandle;

DeviceHandle = DioOpen(“FBIDIO512”, FBIDIO_FLAG_SHARE); ●C 言語(32bit 用コンパイラで UNICODE を定義している場合) HANDLE DeviceHandle;

DeviceHandle = DioOpen((LPCTSTR)“FBIDIO512”, FBIDIO_FLAG_SHARE); HANDLE DeviceHandle;

char* lpszName = “FBIDIO512”;

DeviceHandle = DioOpen((LPCTSTR)lpszName, FBIDIO_FLAG_SHARE); HANDLE DeviceHandle;

LPCWSTR UnicodeName = L"FBIDIO512"; char DeviceName[256];

int len;

len = WideCharToMultiByte(CP_ACP, 0, UnicodeName, -1, NULL, 0, NULL, NULL); WideCharToMultiByte(CP_ACP, 0, UnicodeName, -1, DeviceName, len, NULL, NULL); DeviceHandle = DioOpen((LPCTSTR)DeviceName, FBIDIO_FLAG_SHARE);

●C 言語(64bit 用コンパイラ) HANDLE DeviceHandle;

(14)

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

DeviceHandle = DioOpen(Name, FBIDIO_FLAG_SHARE) ●Visual C# .NET(x86、x64 共用)

IntPtr hDeviceHandle; string lpszName;

lpszName = "FBIDIO512";

hDeviceHandle = IFCDIO_ANY.DioOpen(lpszName, IFCDIO_ANY.FBIDIO_FLAG_SHARE ); ●Visual Basic .NET(x86、x64 共用)

Dim hDeviceHandle As IntPtr Dim lpszName As String

lpszName = "FBIDIO512" & Chr(0)

hDeviceHandle = IFCDIO_ANY.DioOpen(lpszName, IFCDIO_ANY.FBIDIO_FLAG_SHARE ) デバイス名「FBIDIO512」のデバイスを重複オープン許可でオープンします。

(15)

2. DioClose

【機能】 汎用入出力デバイスをクローズします。 汎用入出力デバイスアクセスのために使用されていた各種リソースの解放を行い、以後の汎用 入出力デバイスへのアクセスを禁止します。 【書式】 ●C 言語 INT DioClose( HANDLE DeviceHandle ); ●Visual Basic

Declare Function DioClose Lib "dpc0224.DLL"( _ ByVal DeviceHandle As Long _

)As Long

●Visual C# .NET(x86、x64 共用) [DllImport("dpc0224.dll")]

public static extern uint DioClose( IntPtr hDeviceHandle

);

●Visual C# .NET(x86 専用) [DllImport("dpc0224.dll")]

public static extern uint DioClose( uint hDeviceHandle

);

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

Declare Function DioClose Lib "dpc0224.dll"( ByVal hDeviceHandle As IntPtr

)As Integer

●Visual Basic .NET(x86 専用)

Declare Function DioClose Lib "dpc0224.dll"( ByVal hDeviceHandle As Integer )As Integer

(16)

【パラメータ】 DeviceHandle DioOpen関数で取得したデバイスハンドルを指定します。 【戻り値】 正常終了した場合は、FBIDIO_ERROR_SUCCESSが返されます。 FBIDIO_ERROR_SUCCESS以外の値が返された場合については、『3.4 戻り値一覧』をご参照くださ い。 【備考】 再度、汎用入出力デバイスへのアクセスを行う場合にはオープン処理(DioOpen関数)を呼び出し てください。 汎用入出力デバイスクローズ後の各種設定はクリアされます。 Windows NT/2000 以降ではデバッガの制御下でアプリケーションを実行しているときに無効な ハンドルを閉じると、例外が発生します。たとえば、ハンドルを 2 回閉じるなどを行うと発生 します。 DioClose 関数を実行すると、出力値は 0 クリアされます。 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle;

DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL); : : Ret = DioClose(DeviceHandle); ●Visual C# .NET(x86、x64 共用) uint nRet; IntPtr hDeviceHandle; string lpszName; lpszName = ”FBIDIO512”;

hDeviceHandle = IFCDIO_ANY.DioOpenAny(lpszName, IFCDIO_ANY.DIO_FLAG_SHARE); :

(17)

●Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO512" & Chr( 0 )

DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) : : Ret = DioClose(DeviceHandle) ●Visual C# .NET(x86、x64 共用) uint nRet; IntPtr hDeviceHandle; string lpszName; lpszName = ”FBIDIO512”;

hDeviceHandle = IFCDIO_ANY.DioOpenAny(lpszName, IFCDIO_ANY.DIO_FLAG_SHARE); :

nRet = IFCDIO_ANY.DioClose(hDeviceHandle); ●Visual Basic .NET(x86、x64 共用) Dim nRet As Integer

Dim lpszName As String Dim hDeviceHandle As IntPtr lpszName = "FBIDIO512"

hDeviceHandle = IFCDIO_ANY.DioOpenAny(lpszName, IFCDIO_ANY.DIO_FLAG_SHARE ) :

nRet = IFCDIO_ANY.DioClose(hDeviceHandle)

(18)

3. DioInputPoint

【機能】 任意の点数の入力接点の状態を読み込みます。 指定した開始接点番号から 1 接点ずつ INT 型の変数にデータが格納されます。 【書式】 ●C 言語 INT DioInputPoint ( HANDLE DeviceHandle, PINT Buffer, DWORD StartNum, DWORD Num ); ●Visual Basic

Declare Function DioInputPoint Lib "dpc0224.DLL"( _ ByVal DeviceHandle As Long, _

ByRef Buffer As Long, _ ByVal StartNum As Long, _ ByVal Num As Long _ )As Long

●Visual C# .NET(x86、x64 共用) [DllImport("dpc0224.dll")]

public static extern uint DioInputPoint( IntPtr hDeviceHandle,

out int pBuffer, uint dwStartNum, uint dwNum );

[DllImport("dpc0224.dll")]

public static extern uint DioInputPoint( IntPtr hDeviceHandle,

int[] pBuffer, uint dwStartNum, uint dwNum );

(19)

●Visual C# .NET(x86 専用) [DllImport("dpc0224.dll")]

public static extern uint DioInputPoint( uint hDeviceHandle,

out int pBuffer, uint dwStartNum, uint dwNum );

[DllImport("dpc0224.dll")]

public static extern uint DioInputPoint( uint hDeviceHandle,

int[] pBuffer, uint dwStartNum, uint dwNum );

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

Declare Function DioInputPoint Lib "dpc0224.dll"( ByVal hDeviceHandle As IntPtr,

ByRef pBuffer As Integer, ByVal dwStartNum As Integer, ByVal dwNum As Integer )As Integer

Declare Function DioInputPoint Lib "dpc0224.dll"( ByVal hDeviceHandle As IntPtr,

ByVal pBuffer() As Integer, ByVal dwStartNum As Integer, ByVal dwNum As Integer )As Integer

(20)

●Visual Basic .NET(x86 専用)

Declare Function DioInputPoint Lib "dpc0224.dll"( ByVal hDeviceHandle As Integer,

ByRef pBuffer As Integer, ByVal dwStartNum As Integer, ByVal dwNum As Integer )As Integer

Declare Function DioInputPoint Lib "dpc0224.dll"( ByVal hDeviceHandle As Integer,

ByVal pBuffer() As Integer, ByVal dwStartNum As Integer, ByVal dwNum As Integer )As Integer 【パラメータ】 DeviceHandle DioOpen関数で取得したデバイスハンドルを指定します。 Buffer デバイスから読み取ったデータを受け取るバッファを指すポインタ(参照渡し)です。 StartNum 入力開始接点番号 1~16(汎用入出力デバイスがもつ接点数の最大値)を指定します。DI デバイスの場合はピン IN1 が 1 に対応します。DIO デバイス(双方向)の場合ピン I/O1 が 1 に対応します。 Num 入力接点数を指定します。 【戻り値】 正常終了した場合は、FBIDIO_ERROR_SUCCESSが返されます。 FBIDIO_ERROR_SUCCESS以外の値が返された場合については、『3.4 戻り値一覧』をご参照くださ い。

(21)

【使用例】 ●C 言語 INT Ret;

HANDLE DeviceHandle; INT Buffer[8];

DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL); :

Ret = DioInputPoint( DeviceHandle, &Buffer[0], 1, 8 ); ●Visual Basic

Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Buffer(8) As Long

Name = "FBIDIO512" & Chr( 0 )

DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) :

Ret = DioInputPoint( DeviceHandle, Buffer(0), 1, 8 ) ●Visual C# .NET(x86、x64 共用)

IntPtr hDeviceHandle; int nBuffer;

uint nRet;

nRet = IFCDIO_ANY.DioInputPoint( hDeviceHandle, out nBuffer, 1, 8); ●Visual Basic .NET(x86、x64 共用)

Dim hDeviceHandle As IntPtr Dim nBuffer As Integer Dim nRet As Integer

nRet = IFCDIO_ANY.DioInputPoint( hDeviceHandle, nBuffer, 1, 8)

デバイスハンドル hDeviceHandle の汎用入出力デバイスの接点 1 番から接点 8 番までの接点状 態を読み込みます。

(22)

4. DioInputByte

【機能】 汎用入出力デバイスの接点 8 点分のデータを読み込み、1 バイト(8 ビット)の変数に格納しま す。 【書式】 ●C 言語 INT DioInputByte ( HANDLE DeviceHandle, INT No, PBYTE Value ); ●Visual Basic

Declare Function DioInputByte Lib "dpc0224.DLL"( _ ByVal DeviceHandle As Long, _

ByVal No As Long, _ ByRef Value As Byte _ )As Long

●Visual C# .NET(x86、x64 共用) [DllImport("dpc0224.dll")]

public static extern uint DioInputByte( IntPtr hDeviceHandle,

int nNo, out byte pbValue );

●Visual C# .NET(x86 専用) [DllImport("dpc0224.dll")]

public static extern uint DioInputByte( uint hDeviceHandle,

int nNo, out byte pbValue );

(23)

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

Declare Function DioInputByte Lib "dpc0224.dll”( ByVal hDeviceHandle As IntPtr,

ByVal nNo As Integer, ByRef pbValue As Byte )As Integer

●Visual Basic .NET(x86 専用)

Declare Function DioInputByte Lib "dpc0224.dll”( ByVal hDeviceHandle As Integer,

ByVal nNo As Integer, ByRef pbValue As Byte )As Integer 【パラメータ】 DeviceHandle DioOpen関数で取得したデバイスハンドルを指定します。 No 読み込む接点を下記の識別子で指定します。 FBIDIO_IN1_8 IN1~IN8 の 8 点分のデータを読み込みます。 FBIDIO_IN9_16 IN9~IN16 の 8 点分のデータを読み込みます。 Value 読み込まれたデータを格納する変数へのポインタ(参照渡し)を指定します。 【戻り値】 正常終了した場合は、FBIDIO_ERROR_SUCCESSが返されます。 FBIDIO_ERROR_SUCCESS以外の値が返された場合については、『3.4 戻り値一覧』をご参照くださ い。

(24)

【備考】

データフォーマット

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

ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_IN1_8 IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1 FBIDIO_IN9_16 IN16 IN15 IN14 IN13 IN12 IN11 IN10 IN9 【使用例】

●C 言語 INT Ret;

HANDLE DeviceHandle; BYTE Value;

DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL); :

Ret = DioInputByte( DeviceHandle, FBIDIO_IN1_8, &Value ); ●Visual Basic

Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Value As Byte

Name = "FBIDIO512" & Chr( 0 )

DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) :

Ret = DioInputByte( DeviceHandle, FBIDIO_IN1_8, Value ) ●Visual C# .NET(x86、x64 共用) IntPtr hDeviceHandle; byte nBuffer; uint nRet; nRet = IFCDIO_ANY.DioInputByte( hDeviceHandle,

(25)

●Visual Basic .NET(x86、x64 共用) Dim hDeviceHandle As IntPtr

Dim nBuffer As Byte Dim nRet As Integer

nRet = IFCDIO_ANY.DioInputByte( hDeviceHandle, IFCDIO_ANY.FBIDIO_IN1_8, nBuffer) デバイス名「FBIDIO512」のデバイスの IN1~IN8 の 1 バイトデータを変数 Value に取得します。

(26)

5. DioInputWord

【機能】 汎用入出力デバイスの接点 16 点分のデータを読み込み、1 ワード(16 ビット)の変数に格納し ます。 【書式】 ●C 言語 INT DioInputWord ( HANDLE DeviceHandle, INT No, PWORD Value ); ●Visual Basic

Declare Function DioInputWord Lib "dpc0224.DLL"( _ ByVal DeviceHandle As Long, _

ByVal No As Long, _ ByRef Value As Integer _ )As Long

●Visual C# .NET(x86、x64 共用) [DllImport("dpc0224.dll")]

public static extern uint DioInputWord( IntPtr hDeviceHandle,

int nNo,

out ushort pwValue );

●Visual C# .NET(x86 専用) [DllImport("dpc0224.dll")]

public static extern uint DioInputWord( int hDeviceHandle,

int nNo,

out ushort pwValue );

(27)

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

Declare Function DioInputWord Lib "dpc0224.dll”( ByVal hDeviceHandle As IntPtr,

ByVal nNo As Integer, ByRef pwValue As Short )As Integer

●Visual Basic .NET(x86 専用)

Declare Function DioInputWord Lib "dpc0224.dll”( ByVal hDeviceHandle As Integer,

ByVal nNo As Integer, ByRef pwValue As Short )As Integer 【パラメータ】 DeviceHandle DioOpen関数で取得したデバイスハンドルを指定します。 No 読み込む接点を下記の識別子で指定します。 FBIDIO_IN1_16 IN1~IN16 の 16 点分のデータを読み込みます。 Value 読み込まれたデータを格納する変数へのポインタ(参照渡し)を指定します。 【戻り値】 正常終了した場合は、FBIDIO_ERROR_SUCCESSが返されます。 FBIDIO_ERROR_SUCCESS以外の値が返された場合については、『3.4 戻り値一覧』をご参照くださ い。 【備考】 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています。

ビット bit15 bit14 bit13 ・・・ bit2 bit1 bit0 FBIDIO_IN1_16 IN16 IN15 IN14 ・・・ IN3 IN2 IN1

(28)

【使用例】 ●C 言語 INT Ret;

HANDLE DeviceHandle; WORD Value;

DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL); :

Ret = DioInputWord( DeviceHandle, FBIDIO_IN1_16, &Value ); ●Visual Basic

Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Value As Integer

Name = "FBIDIO512" & Chr( 0 )

DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) :

Ret = DioInputWord( DeviceHandle, FBIDIO_IN1_16, Value ) ●Visual C# .NET(x86、x64 共用) IntPtr hDeviceHandle; ushort nBuffer; uint nRet; nRet = IFCDIO_ANY.DioInputWord( hDeviceHandle,

IFCDIO_ANY.FBIDIO_IN1_16, out nBuffer); ●Visual Basic .NET(x86、x64 共用)

Dim hDeviceHandle As IntPtr Dim nBuffer As Short

Dim nRet As Integer

(29)

6. DioOutputPoint

【機能】 任意の点数の出力接点の出力を制御します。 指定した開始接点番号から 1 接点づつ INT 型の変数に格納されたデータで接点を制御します。 【書式】 ●C 言語 INT DioOutputPoint ( HANDLE DeviceHandle, PINT Buffer, DWORD StartNum, DWORD Num ); ●Visual Basic

Declare Function DioOutputPoint Lib "dpc0224.DLL"( _ ByVal DeviceHandle As Long, _

ByRef Buffer As Long, _ ByVal StartNum As Long, _ ByVal Num As Long _ )As Long

●Visual C# .NET(x86、x64 共用) [DllImport("dpc0224.dll")]

public static extern uint DioOutputPoint( IntPtr hDeviceHandle,

ref int pBuffer, uint dwStartNum, uint dwNum );

[DllImport("dpc0224.dll")]

public static extern uint DioOutputPoint( IntPtr hDeviceHandle,

int[] pBuffer, uint dwStartNum, uint dwNum );

(30)

●Visual C# .NET(x86 専用) [DllImport("dpc0224.dll")]

public static extern uint DioOutputPoint( uint hDeviceHandle,

ref int pBuffer, uint dwStartNum, uint dwNum );

[DllImport("dpc0224.dll")]

public static extern uint DioOutputPoint( uint hDeviceHandle,

int[] pBuffer, uint dwStartNum, uint dwNum );

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

Declare Function DioOutputPoint Lib "dpc0224.dll"( ByVal hDeviceHandle As IntPtr,

ByRef pBuffer As Integer, ByVal dwStartNum As Integer, ByVal dwNum As Integer )As Integer

Declare Function DioOutputPoint Lib "dpc0224.dll"( ByVal hDeviceHandle As IntPtr,

ByVal pBuffer() As Integer, ByVal dwStartNum As Integer, ByVal dwNum As Integer )As Integer

(31)

●Visual Basic .NET(x86 専用)

Declare Function DioOutputPoint Lib "dpc0224.dll"( ByVal hDeviceHandle As Integer,

ByRef pBuffer As Integer, ByVal dwStartNum As Integer, ByVal dwNum As Integer )As Integer

Declare Function DioOutputPoint Lib "dpc0224.dll"( ByVal hDeviceHandle As Integer,

ByVal pBuffer() As Integer, ByVal dwStartNum As Integer, ByVal dwNum As Integer )As Integer 【パラメータ】 DeviceHandle DioOpen関数で取得したデバイスハンドルを指定します。 Buffer デバイスへ出力するデータのバッファを指すポインタ(参照渡し)です。 StartNum 出力開始接点番号 1~16(汎用入出力デバイスがもつ接点数の最大値)を指定します。DO デバイスの場合はピン OUT1 が 1 に対応します。DIO デバイス(双方向)の場合ピン I/O1 が 1 に対応します。 Num 出力接点数を指定します。 【戻り値】 正常終了した場合は、FBIDIO_ERROR_SUCCESSが返されます。 FBIDIO_ERROR_SUCCESS以外の値が返された場合については、『3.4 戻り値一覧』をご参照くださ い。

(32)

【使用例】 ●C 言語 INT Ret;

HANDLE DeviceHandle; INT Buffer[8];

DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL); : : Buffer[0] = 1; Buffer[1] = 0; Buffer[2] = 0; Buffer[3] = 1; Buffer[4] = 0; Buffer[5] = 1; Buffer[6] = 1; Buffer[7] = 0;

Ret = DioOutputPoint( DeviceHandle, &Buffer[0], 1, 8 ); ●Visual Basic

Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Buffer(8) As Long

Name = "FBIDIO512" & Chr( 0 )

DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) : : Buffer(0) = 1 Buffer(1) = 0 Buffer(2) = 0 Buffer(3) = 1 Buffer(4) = 0 Buffer(5) = 1 Buffer(6) = 1 Buffer(7) = 0

(33)

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

uint nRet;

int [] nBuffer = new int[8]; nBuffer[0] = 1; nBuffer[1] = 0; nBuffer[2] = 0; nBuffer[3] = 1; nBuffer[4] = 0; nBuffer[5] = 1; nBuffer[6] = 1; nBuffer[7] = 0;

nRet = IFCDIO_ANY.DioOutputPoint( hDeviceHandle, nBuffer, 1, 8);

●Visual Basic .NET(x86、x64 共用) Dim hDeviceHandle As IntPtr

Dim nRet As Integer Dim nBuffer(8) As Integer nBuffer(0) = 1 nBuffer(1) = 0 nBuffer(2) = 0 nBuffer(3) = 1 nBuffer(4) = 0 nBuffer(5) = 1 nBuffer(6) = 1 nBuffer(7) = 0

nRet = IFCDIO_ANY.DioOutputPoint( hDeviceHandle, nBuffer, 1, 8 )

デバイス名「FBIDIO1」のデバイスの接点 1 番に 1、接点 2 番に 0、接点 3 番に 0、接点 4 番に 1、 接点 5 番に 0、接点 6 番に 1、接点 7 番に 1、接点 8 番に 0 を出力します。

(34)

7. DioOutputByte

【機能】 汎用入出力デバイスの接点 8 点分を制御します。 【書式】 ●C 言語 INT DioOutputByte ( HANDLE DeviceHandle, INT No, BYTE Value ); ●Visual Basic

Declare Function DioOutputByte Lib "dpc0224.DLL"( _ ByVal DeviceHandle As Long, _

ByVal No As Long, _ ByVal Value As Byte _ )As Long

●Visual C# .NET(x86、x64 共用) [DllImport("fbidio.dll")]

public static extern uint DioOutputByte( IntPtr hDeviceHandle, int nNo, byte bValue ); ●Visual C# .NET(x86 専用) [DllImport("dpc0224.dll")]

public static extern uint DioOutputByte( uint hDeviceHandle,

int nNo, byte bValue );

(35)

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

Declare Function DioOutputByte Lib "dpc0224.dll”( ByVal hDeviceHandle As IntPtr,

ByVal nNo As Integer, ByVal bValue As Byte )As Integer

●Visual Basic .NET(x86 専用)

Declare Function DioOutputByte Lib "dpc0224.dll”( ByVal hDeviceHandle As Integer,

ByVal nNo As Integer, ByVal bValue As Byte )As Integer 【パラメータ】 DeviceHandle DioOpen関数で取得したデバイスハンドルを指定します。 No データを出力する接点を下記の識別子で指定します。 FBIDIO_OUT1_8 OUT1~OUT8 の 8 点分のデータを出力します。 FBIDIO_OUT9_16 OUT9~OUT16 の 8 点分のデータを出力します。 Value 指定した接点へ出力するデータを指定します。 【戻り値】 正常終了した場合は、FBIDIO_ERROR_SUCCESSが返されます。 FBIDIO_ERROR_SUCCESS以外の値が返された場合については、『3.4 戻り値一覧』をご参照くださ い。

(36)

【備考】

データフォーマット

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

ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_OUT1_8 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 FBIDIO_OUT9_16 OUT16 OUT15 OUT14 OUT13 OUT12 OUT11 OUT10 OUT9 【使用例】

●C 言語 INT Ret;

HANDLE DeviceHandle;

DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL); :

Ret = DioOutputByte( DeviceHandle, FBIDIO_OUT1_8, 0x12 ); ●Visual Basic

Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO512" & Chr( 0 )

DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) :

Ret = DioOutputByte( DeviceHandle, FBIDIO_OUT1_8, &H12 ) ●Visual C# .NET(x86、x64 共用)

IntPtr hDeviceHandle; uint nRet;

nRet = IFCDIO_ANY.DioOutputByte( hDeviceHandle, IFCDIO_ANY.FBIDIO_OUT1_8, 0x12); ●Visual Basic .NET(x86、x64 共用)

Dim hDeviceHandle As IntPtr Dim nRet As Integer

(37)

8. DioOutputWord

【機能】 汎用入出力デバイスの接点 16 点分を制御します。 【書式】 ●C 言語 INT DioOutputWord ( HANDLE DeviceHandle, INT No, WORD Value ); ●Visual Basic

Declare Function DioOutputWord Lib "dpc0224.DLL"( _ ByVal DeviceHandle As Long, _

ByVal No As Long, _ ByVal Value As Integer _ )As Long

●Visual C# .NET(x86、x64 共用) [DllImport("dpc0224.dll")]

public static extern uint DioOutputWord( IntPtr hDeviceHandle, int nNo, ushort wValue ); ●Visual C# .NET(x86 専用) [DllImport("dpc0224.dll")]

public static extern uint DioOutputWord( uint hDeviceHandle,

int nNo,

ushort wValue );

(38)

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

Declare Function DioOutputWord Lib "dpc0224.dll"( ByVal hDeviceHandle As IntPtr,

ByVal nNo As Integer, ByVal wValue As Short )As Integer

●Visual Basic .NET(x86 専用)

Declare Function DioOutputWord Lib "dpc0224.dll"( ByVal hDeviceHandle As Integer,

ByVal nNo As Integer, ByVal wValue As Short )As Integer 【パラメータ】 DeviceHandle DioOpen関数で取得したデバイスハンドルを指定します。 No データを出力する接点を下記の識別子で指定します。 FBIDIO_OUT1_16 OUT1~OUT16 の 16 点分のデータを出力します。 Value 指定した接点へ出力するデータを指定します。 【戻り値】 正常終了した場合は、FBIDIO_ERROR_SUCCESSが返されます。 FBIDIO_ERROR_SUCCESS以外の値が返された場合については、『3.4 戻り値一覧』をご参照くださ い。

(39)

【備考】

データフォーマット

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

ビット bit15 bit14 bit13 ・・・ bit2 bit1 bit0 FBIDIO_OUT1_16 OUT16 OUT15 OUT14 ・・・ OUT3 OUT2 OUT1 【使用例】

●C 言語 INT Ret;

HANDLE DeviceHandle;

DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL); :

Ret = DioOutputWord( DeviceHandle, FBIDIO_OUT1_16, 0x1234 ); ●Visual Basic

Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO512" & Chr( 0 )

DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) :

Ret = DioOutputWord( DeviceHandle, FBIDIO_OUT1_16, &H1234 ) ●Visual C# .NET(x86、x64 共用)

IntPtr hDeviceHandle; uint nRet;

nRet = IFCDIO_ANY.DioOutputDword( hDeviceHandle,

IFCDIO_ANY.FBIDIO_OUT1_16, 0x1234); ●Visual Basic .NET(x86、x64 共用)

Dim hDeviceHandle As IntPtr Dim nRet As Integer

nRet = IFCDIO_ANY.DioOutputDword( hDeviceHandle, _

(40)

9. DioEintSetIrqMask

【機能】 エッジ検出割り込みマスク状態を設定します。 【書式】 ●C 言語 INT DioEintSetIrqMask ( HANDLE DeviceHandle, DWORD IrqMask ); ●Visual Basic

Declare Function DioEintSetIrqMask Lib "dpc0224.DLL"( _ ByVal DeviceHandle As Long, _

ByVal IrqMask As Long _ )As Integer

●Visual C# .NET(x86、x64 共用) [DllImport("dpc0224.dll")]

public static extern uint DioEintSetIrqMask ( IntPtr hDeviceHandle,

uint dwSetIrqMask, );

●Visual C# .NET(x86 専用) [DllImport("dpc0224.dll")]

public static extern uint DioEintSetIrqMask ( uint hDeviceHandle,

uint dwSetIrqMask, );

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

Declare Function DioEintSetIrqMask Lib "dpc0224.dll" ( ByVal hDeviceHandle As IntPtr,

ByVal dwSetIrqMask As Integer )As Integer

(41)

【パラメータ】 DeviceHandle

DioOpen関数で取得したデバイスハンドルを指定します。 IrqMask

IR1~IR8 のエッジ検出割り込みのマスク/アンマスクを設定するデータを指定します。

bit31 ・・・ bit8 bit7 ・・・ bit0

予約 IR8 ・・・ IR1 電源投入時はすべてマスク状態(0)です。 0:マスク 1:アンマスク 【戻り値】 正常終了した場合は、FBIDIO_ERROR_SUCCESSが返されます。 FBIDIO_ERROR_SUCCESS以外の値が返された場合については、『3.4 戻り値一覧』をご参照くださ い。 【備考】 DioEintSetEdgeConfig関数実行後は、本関数を必ず実行してください。

(42)

【使用例】 ●C 言語 INT Ret;

HANDLE DeviceHandle;

DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL); :

Ret = DioEintSetIrqMask( DeviceHandle, 0x0000000f ); ●Visual Basic

Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO512" & Chr( 0 )

DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) :

Ret = DioEintSetIrqMask( DeviceHandle, &HF ) ●Visual C# .NET(x86、x64 共用)

IntPtr hDeviceHandle; uint nRet;

nRet = IFCDIO_ANY.DioEintSetIrqMask( hDeviceHandle, 0x0000000f ); ●Visual Basic .NET(x86、x64 共用)

Dim hDeviceHandle As IntPtr Dim nRet As Integer

nRet = IFCDIO_ANY.DioEintSetIrqMask( hDeviceHandle, &H0000000f )

(43)

10. DioEintGetIrqMask

【機能】 エッジ検出割り込みマスク状態を取得します。 【書式】 ●C 言語 INT DioEintGetIrqMask ( HANDLE DeviceHandle, PDWORD IrqMask ); ●Visual Basic

Declare Function DioEintGetIrqMask Lib "dpc0224.DLL"( _ ByVal DeviceHandle As Long, _

ByRef IrqMask As Long _ )As Integer

●Visual C# .NET(x86、x64 共用) [DllImport("dpc0224.dll")]

public static extern uint DioEintGetIrqMask ( IntPtr hDeviceHandle,

out uint pdwSetIrqMask );

●Visual C# .NET(x86 専用) [DllImport("dpc0224.dll")]

public static extern uint DioEintGetIrqMask ( uint hDeviceHandle,

out uint pdwSetIrqMask );

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

Declare Function DioEintGetIrqMask Lib "dpc0224.dll" ( ByVal hDeviceHandle As Integer,

ByRef pdwSetIrqMask As Integer )As Integer

●Visual Basic .NET(x86 専用)

(44)

【パラメータ】 DeviceHandle DioOpen関数で取得したデバイスハンドルを指定します。 IrqMask IR1~IR8 のエッジ検出割り込みのマスク/アンマスクを取得する変数へのポインタ(参照 渡し)を指定します。 IrqMask の形式は、次のようになっています。

bit31 ・・・ bit8 bit7 ・・・ bit0

予約 IR8 ・・・ IR1 0:マスク 1:アンマスク 【戻り値】 正常終了した場合は、FBIDIO_ERROR_SUCCESSが返されます。 FBIDIO_ERROR_SUCCESS以外の値が返された場合については、『3.4 戻り値一覧』をご参照くださ い。

(45)

【使用例】 ●C 言語 INT Ret;

HANDLE DeviceHandle; DWORD IrqMask;

DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL); :

Ret = DioEintGetIrqMask( DeviceHandle, &IrqMask ); ●Visual Basic

Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim IrqMask As Long

Name = "FBIDIO512" & Chr( 0 )

DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) :

Ret = DioEintGetIrqMask( DeviceHandle, IrqMask) ●Visual C# .NET(x86、x64 共用)

uint dwGetIrqMask; IntPtr hDeviceHandle; uint nRet;

nRet = IFCDIO_ANY.DioEintGetIrqMask( hDeviceHandle, out dwGetIrqMask ); ●Visual Basic .NET(x86、x64 共用)

Dim dwGetIrqMask As Integer Dim hDeviceHandle As IntPtr Dim nRet As Integer

nRet = IFCDIO_ANY.DioEintGetIrqMask( hDeviceHandle, dwGetIrqMask)

(46)

11. DioEventRequestPendingEx

【機能】 汎用入出力デバイスの割り込みイベント要求を待ちます。 【書式】 ●C 言語 INT DioEventRequestPendingEx ( HANDLE DeviceHandle, PDWORD EventEnableMask, PDWORD EventBuf, LPOVERLAPPED Overlapped, ); ●Visual Basic

Declare Function DioEventRequestPendingEx Lib "dpc0224.DLL"( _ ByVal DeviceHandle As Long, _

ByRef EventEnableMask As Long, _ ByRef EventBuf As Long, _ ByRef Overlapped As OVERLAPPED _ )As Long

●Visual C# .NET(x86、x64 共用) [DllImport("dpc0224.dll")]

public static extern uint DioEventRequestPendingEx ( IntPtr hDeviceHandle, uint[] pdwEventEnableMask, IntPtr pEventBuf, IntPtr lpOverlapped ); ●Visual C# .NET(x86 専用) [DllImport("dpc0224.dll")]

public static extern uint DioEventRequestPendingEx ( uint hDeviceHandle,

uint[] pdwEventEnableMask, IntPtr pEventBuf,

IntPtr lpOverlapped );

(47)

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

Declare Function DioEventRequestPendingEx Lib "dpc0224.dll"( ByVal hDeviceHandle As IntPtr,

ByVal dwEventEnableMask() As Integer, ByVal pEventBuf As IntPtr, BaVal lpOverlapped As IntPtr )As Integer

●Visual Basic .NET(x86 専用)

Declare Function DioEventRequestPendingEx Lib "dpc0224.dll"( ByVal hDeviceHandle As Integer,

ByVal dwEventEnableMask() As Integer, ByVal pEventBuf As IntPtr, ByVal lpOverlapped As IntPtr )As Integer

【パラメータ】 DeviceHandle

(48)

EventEnableMask 許可するイベントのマスク設定を格納しているバッファへのポインタ(参照渡し)を指定 します。 各要素の内容は次のようになっています。 EventEnableMask + 0 予約 EventEnableMask + 1 IR1~IR8 立下りエッジ検出イベント EventEnableMask + 2 IR1~IR8 立上りエッジ検出イベント EventEnableMask + 3 予約 EventEnableMask + 4 予約 イベント内容(該当ビットが”1”で有効) ・IR1~IR8 立下りエッジ検出イベント bit0 : IR1 に立下りエッジが検出されたときのイベント : : bit7 : IR8 に立下りエッジが検出されたときのイベント bit8 : 予約 : : bit31: 予約 ・IR1~IR8 立上りエッジ検出イベント bit0 : IR1 に立上りエッジが検出されたときのイベント : : bit7 : IR8 に立上りエッジが検出されたときのイベント bit8 : 予約 : : bit31: 予約 EventBuf 通知されたイベント内容を格納するバッファへのポインタ(参照渡し)です。 各要素の内容は次のようになっています。 EventBuf+ 0 予約 EventBuf + 1 IR1~IR8 立下りエッジ検出イベント EventBuf + 2 IR1~IR8 立上りエッジ検出イベント EventBuf + 3 予約 EventBuf + 4 予約 通知イベント内容(該当ビットが”1”で有効)

(49)

・IR1~IR8 立下りエッジ検出イベント bit0 : IR1 に立下りエッジが検出されたときのイベント : : bit7 : IR8 に立下りエッジが検出されたときのイベント bit8 : 予約 : : bit31: 予約 ・IR1~IR8 立上りエッジ検出イベント bit0 : IR1 に立上りエッジが検出されたときのイベント : : bit7 : IR8 に立上りエッジが検出されたときのイベント bit8 : 予約 : : bit31: 予約 Overlapped イベント待ちに使用する Overlapped 構造体へのポインタ(参照渡し)を指定します。(非同 期処理) また、NULL(0)を指定すると、イベントが発生するまで、DioEventRequestPendingEx関数は、 処理を戻しません。(同期処理) 【戻り値】

DioEventRequestPendingEx 関 数 は 、 Overlapped に NULL(0) 以 外 が 指 定 さ れ た 場 合 、 FBIDIO_ERROR_IO_PENDINGを返します。その後、Win32APIのWaitForSingleObject関数等を呼び 出して、イベント待ちを行ってください。 OverlappedにNULL(0)が指定された場合、DioEventRequestPendingEx関数は、イベント待ち状態 になり、イベントが発生したときに、FBIDIO_ERROR_SUCCESSを返します。 いずれの場合も、イベント発生後、EventBuf が指す位置へ、発生したイベントの情報が返され ます。 FBIDIO_ERROR_IO_PENDING・FBIDIO_ERROR_SUCCESS以外の値が返された場合については、『3.4 戻り値一覧』をご参照ください。 【備考】 ・DioEintSetIrqMask関数で、イベントを有効にしていなければイベントは発生しません。 ・イベント待ち処理を連続して実行する場合、Overlapped 構造体に指定するイベントハンドル

(50)

【使用例】 ●C 言語 非同期処理 INT Ret; HANDLE DeviceHandle; DWORD EventEnableMask[5]; DWORD EventBuff[5]; OVERLAPPED Overlapped;

DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL); : : EventEnableMask[0] = 0; EventEnableMask[1] = 0x0000000F; EventEnableMask[2] = 0; EventEnableMask[3] = 0; EventEnableMask[4] = 0; Overlapped.Offset = 0; Overlapped.OffsetHigh = 0;

Overlapped.hEvent = CreateEvent(0, FALSE, FALSE, NULL);

Ret = DioEventRequestPendingEx( DeviceHandle, EventEnableMask, EventBuf, &Overlapped ); if (Ret == FBIDIO_ERROR_IO_PENDING) { // 非同期処理では、WaitFirSingleObject を使ってイベントを待つので、 // DioEventRequestPendingEx 実行後、他の処理を行った後でイベント待ちを // 行うことが可能。 WaitForSingleObject(Overlapped.hEvent, INFINITE); } 同期処理 INT Ret; HANDLE DeviceHandle; DWORD EventEnableMask[5]; DWORD EventBuff[5];

DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL); :

(51)

●Visual Basic 非同期処理 Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim EventEnableMask(5) As Long Dim EventBuf(5) As Long

Dim Overlapped As OVERLAPPED Name = "FBIDIO512" & Chr( 0 )

DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) : : EventEnableMask(0) = 0; EventEnableMask(1) = &HF; EventEnableMask(2) = 0; EventEnableMask(3) = 0; EventEnableMask(4) = 0; Overlapped.Offset = 0 Overlapped.OffsetHigh = 0

Overlapped.hEvent = CreateEvent(0, False, False, 0)

Ret = DioEventRequestPendingEx( DeviceHandle, EventEnableMask(0), EventBuf(0), _ Overlapped )

If Ret = FBIDIO_ERROR_IO_PENDING Then

Ret = WaitForSingleObject(Overlapped.hEvent, INFINITE) End If

同期処理

Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim EventEnableMask(5) As Long Dim EventBuf(5) As Long

Name = "FBIDIO512" & Chr( 0 )

DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) :

(52)

●Visual C# .NET(x86、x64 共用) 非同期処理

uint[] dwEventEnableMask = new uint[5]; uint[] dwEventBuff = new uint[5];

IFCDIO_ANY.OVERLAPPED lpOverlapped = new IFCDIO_ANY.OVERLAPPED(); IntPtr hDeviceHandle;

uint nRet;

GCHandle Pinnedovl; GCHandle PinnedEvent;

Pinnedovl = GCHandle.Alloc(lpOverlapped, GCHandleType.Pinned); PinnedEvent = GCHandle.Alloc(dwEventBuff, GCHandleType.Pinned); dwEventEnableMask[0] = 0; dwEventEnableMask[1] = 0x0000000F; dwEventEnableMask[2] = 0; dwEventEnableMask[3] = 0; dwEventEnableMask[4] = 0; nRet = IFCDIO_ANY.DioEventRequestPendingEx( hDeviceHandle, EventEnableMask, PinnedEvent.AddrOfPinnedObject(), Pinnedovl.AddrOfPinnedObject()); // 割り込み終了後、解放する。 Pinnedovl.Free(); PinnedEvent.Free();

(53)

●Visual C# .NET(x86、x64 共用) 同期処理

uint[] dwEventEnableMask = new uint[5]; uint[] dwEventBuff = new uint[5]; IntPtr hDeviceHandle;

uint nRet;

GCHandle PinnedEvent;

PinnedEvent = GCHandle.Alloc(dwEventBuff, GCHandleType.Pinned); dwEventEnableMask[0] = 0; dwEventEnableMask[1] = 0x0000000F; dwEventEnableMask[2] = 0; dwEventEnableMask[3] = 0; dwEventEnableMask[4] = 0; nRet = IFCDIO_ANY.DioEventRequestPendingEx( hDeviceHandle, EventEnableMask, PinnedEvent.AddrOfPinnedObject(), IntPtr.Zero); // 割り込み終了後、解放する。 PinnedEvent.Free();

(54)

●Visual Basic .NET(x86、x64 共用) 非同期処理

Dim dwEventEnableMask(5) As Integer Dim dwEventBuf(5) As Integer

Dim lpOverlapped As IFCDIO_ANY.OVERLAPPED = New IFCDIO_ANY.OVERLAPPED Dim hDeviceHandle As IntPtr

Dim nRet As Integer Dim Pinnedovl As GCHandle Dim PinnedEvent As GCHandle

Pinnedovl = GCHandle.Alloc(lpOverlapped, GCHandleType.Pinned) PinnedEvent = GCHandle.Alloc(dwEventBuf, GCHandleType.Pinned) dwEventEnableMask(0) = 0 dwEventEnableMask(1) = &H0000000F dwEventEnableMask(2) = 0 dwEventEnableMask(3) = 0 dwEventEnableMask(4) = 0 nRet = IFCDIO_ANY.DioEventRequestPendingEx( hDeviceHandle, _ dwEventEnableMask, _ PinnedEvent.AddrOfPinnedObject() _, Pinnedovl.AddrOfPinnedObject()) ' 割り込み処理終了後、解放する。 Pinnedovl.Free() PinnedEvent.Free()

(55)

●Visual Basic .NET(x86、x64 共用) 同期処理

Dim dwEventEnableMask(5) As Integer Dim dwEventBuf(5) As Integer

Dim hDeviceHandle As IntPtr Dim nRet As Integer

Dim PinnedEvent As GCHandle

PinnedEvent = GCHandle.Alloc(dwEventBuf, GCHandleType.Pinned) dwEventEnableMask(0) = 0 dwEventEnableMask(1) = &H0000000F dwEventEnableMask(2) = 0 dwEventEnableMask(3) = 0 dwEventEnableMask(4) = 0 nRet = IFCDIO_ANY.DioEventRequestPendingEx( hDeviceHandle, _ dwEventEnableMask, _ PinnedEvent.AddrOfPinnedObject() _, IntPtr.Zero) ' 割り込み処理終了後、解放する。 PinnedEvent.Free() デバイス名「FBIDIO512」のデバイスから「IR1 から IR4 立ち下がりエッジ検出」のイベント要 求を待ちます。

(56)

12. DioEintSetEdgeConfig

【機能】 エッジ検出機能を設定します。 【書式】 ●C 言語 INT DioEintSetEdgeConfig ( HANDLE DeviceHandle, DWORD FallEdgeConfig, DWORD RiseEdgeConfig ); ●Visual Basic

Declare Function DioEintSetEdgeConfig Lib "dpc0224.DLL"( _ ByVal DeviceHandle As Long, _

ByVal FallEdgeConfig As Long, _ ByVal RiseEdgeConfig As Long _ )As Integer

●Visual C# .NET(x86、x64 共用) [DllImport("dpc0224.dll")]

public static extern uint DioEintSetEdgeConfig ( IntPtr hDeviceHandle, uint dwSetFallEdgeConfig, uint dwSetRiseEdgeConfig, ); ●Visual C# .NET(x86 専用) [DllImport("dpc0224.dll")]

public static extern uint DioEintSetEdgeConfig ( uint hDeviceHandle,

uint dwSetFallEdgeConfig, uint dwSetRiseEdgeConfig, );

(57)

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

Declare Function DioEintSetEdgeConfig Lib "dpc0224.dll"( ByVal hDeviceHandle As IntPtr,

ByVal dwSetFallEdgeConfig As Integer, ByVal dwSetRiseEdgeConfig As Integer )As Integer

●Visual Basic .NET(x86 専用)

Declare Function DioEintSetEdgeConfig Lib "dpc0224.dll"( ByVal hDeviceHandle As Integer,

ByVal dwSetFallEdgeConfig As Integer, ByVal dwSetRiseEdgeConfig As Integer )As Integer 【パラメータ】 DeviceHandle DioOpen関数で取得したデバイスハンドルを指定します。 FallEdgeConfig IR1~IR8 の立下りエッジ検出を有効にするか、無効にするかを指定します。

bit31 ・・・ bit8 bit7 ・・・ bit0

予約 IR8 ・・・ IR1 電源投入時はすべて無効(0)です。 0:無効 1:有効 RiseEdgeConfig IR1~IR8 の立上りエッジ検出を有効にするか、無効にするかを指定します。

bit31 ・・・ bit8 bit7 ・・・ bit0

予約 IR8 ・・・ IR1

電源投入時はすべて無効(0)です。 0:無効

(58)

【戻り値】 正常終了した場合は、FBIDIO_ERROR_SUCCESSが返されます。 FBIDIO_ERROR_SUCCESS以外の値が返された場合については、『3.4 戻り値一覧』をご参照くださ い。 【備考】 ・本関数実行後は、DioEintSetIrqMask関数を必ず実行してください。 ・本関数は同じ IRx に対して立下り/立ち上がりの両エッジを指定することは出来ません。 両エッジを指定した場合、立ち上がりエッジが優先されます。 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle;

DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL); :

Ret = DioEintSetEdgeConfig( DeviceHandle, 0x0000000f, 0x000000f0 ); ●Visual Basic

Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO512" & Chr( 0 )

DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) :

Ret = DioEintSetEdgeConfig( DeviceHandle, &HF, &HF0 ) ●Visual C# .NET(x86、x64 共用)

IntPtr hDeviceHandle; uint nRet;

nRet = IFCDIO_ANY.DioEintSetEdgeConfig( hDeviceHandle, 0x0000000f, 0x000000f0 ); ●Visual Basic .NET(x86、x64 共用)

(59)

13. DioEintGetEdgeConfig

【機能】 現在のエッジ検出設定を取得します。 【書式】 ●C 言語 INT DioEintGetEdgeConfig ( HANDLE DeviceHandle, PDWORD FallEdgeConfig, PDWORD RiseEdgeConfig ); ●Visual Basic

Declare Function DioEintGetEdgeConfig Lib "dpc0224.DLL"( _ ByVal DeviceHandle As Long, _

ByRef FallEdgeConfig As Long, _ ByRef RiseEdgeConfig As Long _ )As Integer

●Visual C# .NET(x86、x64 共用) [DllImport("dpc0224.dll")]

public static extern uint DioEintGetEdgeConfig ( IntPtr hDeviceHandle,

out uint pdwGetFallEdgeConfig, out uint pdwGetRiseEdgeConfig );

●Visual C# .NET(x86 専用) [DllImport("dpc0224.dll")]

public static extern uint DioEintGetEdgeConfig ( uint hDeviceHandle,

out uint pdwGetFallEdgeConfig, out uint pdwGetRiseEdgeConfig );

(60)

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

Declare Function DioEintGetEdgeConfig Lib "dpc0224.dll"( ByVal hDeviceHandle As IntPtr,

ByRef pdwSetFallEdgeConfig As Integer, ByRef pdwSetRiseEdgeConfig As Integer )As Integer

●Visual Basic .NET(x86 専用)

Declare Function DioEintGetEdgeConfig Lib "dpc0224.dll"( ByVal hDeviceHandle As Integer,

ByRef pdwSetFallEdgeConfig As Integer, ByRef pdwSetRiseEdgeConfig As Integer )As Integer 【パラメータ】 DeviceHandle DioOpen関数で取得したデバイスハンドルを指定します。 FallEdgeConfig IR1~IR8 の立下りエッジ検出設定状態を返す変数へのポインタ(参照渡し)を指定します。 FallEdgeConfig には、次の形式で立下りエッジ検出設定が返されます。

bit31 ・・・ bit8 bit7 ・・・ bit0

予約 IR8 ・・・ IR1 電源投入時はすべて無効(0)です。 0:無効 1:有効 RiseEdgeConfig IR1~IR8 の立上りエッジ検出設定状態を返す変数へのポインタ(参照渡し)を指定します。 RiseEdgeConfig には、次の形式で立上りエッジ検出設定が返されます。

bit31 ・・・ bit8 bit7 ・・・ bit0

予約 IR8 ・・・ IR1

電源投入時はすべて無効(0)です。 0:無効

(61)

【戻り値】 正常終了した場合は、FBIDIO_ERROR_SUCCESSが返されます。 FBIDIO_ERROR_SUCCESS以外の値が返された場合については、『3.4 戻り値一覧』をご参照くださ い。 【使用例】 ●C 言語 INT Ret; HANDLE DeviceHandle;

DWORD FallEdgeConfig, RiseEdgeConfig;

DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL); :

Ret = DioEintGetEdgeConfig( DeviceHandle, &FallEdgeConfig, &RiseEdgeConfig ); ●Visual Basic

Dim Ret As Long Dim Name As String Dim DeviceHandle As Long

Dim FallEdgeConfig As Long, RiseEdgeConfig As Long Name = "FBIDIO512" & Chr( 0 )

DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) :

Ret = DioEintGetEdgeConfig( DeviceHandle, FallEdgeConfig, RiseEdgeConfig) ●Visual C# .NET(x86、x64 共用)

uint dwGetFallEdgeConfig, dwGetRiseEdgeConfig; IntPtr hDeviceHandle;

uint nRet;

nRet = IFCDIO_ANY.DioEintGetEdgeConfig( hDeviceHandle, out dwGetFallEdgeConfig, out dwGetRiseEdgeConfig ); ●Visual Basic .NET(x86、x64 共用)

Dim dwGetFallEdgeConfig As Long, dwGetRiseEdgeConfig As Long Dim hDeviceHandle As IntPtr

(62)

3.4 戻り値一覧

エラー識別子 値 意味 対処方法 FBIDIO_ERROR_SUCCESS 0 正常終了 - FBIDIO_ERROR_NOT_DEVICE C0000001h ドライバを呼び出せま せん。 指定したデバイスが見つかりま せんでした。 指定したデバイス番号が存在す るかどうかを確認してください。 FBIDIO_ERROR_NOT_OPEN C0000002h ドライバを OPEN できま せん。 デバイスのオープン時、何らかの エラーが発生しました。 ドライバ内部のメモリ確保に失 敗したなど。 FBIDIO_ERROR_INVALID_HANDLE C0000003h デバイスハンドルが正 しくありません。 不正なデバイスハンドルで呼び 出しを行おうとしました。 OPEN 関数で返されたデバイスハ ンドルを使用してください。 FBIDIO_ERROR_ALREADY_OPEN C0000004h すでに OPEN しているデ バイスを OPEN しようと しました 既に OPEN されているデバイスで す。共有させる場合には、フラグ’ FLAG_SHARE’の指定をして OPEN し てください。 FBIDIO_INSUFFICIENT_BUFFER C0000007h システムコールに渡さ れたデータ領域が小さ すぎます ドライバの内部エラーです。どの ような状況でエラーが発生した かをご連絡ください FBIDIO_ERROR_IO_PENDING C0000008h 非同期 I/O 操作が進行 中です Win32API の WaitForSingleObject 関数等でイ ベントの完了を待つことができ ます。 FBIDIO_ERROR_NOT_SUPPORTED C0000009h サポートされていない 機能です ご使用になるインタフェースモ ジュールがサポートしていない 機能を制御する関数をコールし た 場 合 に エ ラ ー コ ー ド FBIDIO_ERROR_NOT_SUPPORTED が 返されます。DioOutputByte関数 にDIデバイスのデバイスハンド ルを指定してコールした場合な どが当てはまります FBIDIO_ERROR_MEMORY_NOTALLOC ATED C0001000h 作業用メモリの確保に 失敗しました 利用可能なメモリが足りなくな っています。不要なアプリケーシ ョンなどを終了させ、利用可能な メモリを増やすようにしてくだ

(63)

エラー識別子 値 意味 対処方法 FBIDIO_ERROR_INVALID_CALL C0001002h 不正な呼び出しです インタフェースモジュールの動 作状況によりコールが禁止され るている関数をコールした場合 に返されるエラーです。 FBIDIO_ERROR_DRVCAL C0001003h ドライバをコールでき ません ドライバファイルがインストー ルされていない場合等に発生し ます。ドライバのインストールを 行ってください FBIDIO_ERROR_NULL_POINTER C0001004h DLL、ドライバ間で NULL ポインタ(又は 0)が渡 されました システムに障害が発生している 可能性がございます。どのような 状況でエラーが発生したかをご 連絡ください。 FBIDIO_ERROR_IO_INCOMPLETE C0001005h 非同期 I/O イベントが、 シグナル状態になって いません 非同期 I/O 操作が進行中です。 Win32API の WaitForSingleObject 関数等でイベント完了を待った 後に実行して下さい。 FBIDIO_ERROR_USB_TIMEOUT C0001006h USB デバイスとの通信が タイムアウトしました 再 起 動 を 行 な う か 、 DPC-0401 の 「IfUsbDevicePowerCtl」関数を使用 し、USB デバイスの電源を OFF→ON し て下さい。 「IfUsbDevicePowerCtl」関数の使用 方法は、DPC-0401 の Help を参照して ください。 FBIDIO_ERROR_USBIO_FAILED C0001007h USB デバイスの実行に失 敗しました 再 起 動 を 行 な う か 、 DPC-0401 の 「IfUsbDevicePowerCtl」関数を使用 し、USB デバイスの電源を OFF→ON し て下さい。 「IfUsbDevicePowerCtl」関数の使用 方法は、DPC-0401 の Help を参照して ください。

(64)

第4章 サンプルプログラム

各言語用に用意したサンプルプログラムの概要を説明します。

4.1 実行手順

サンプルプログラムには実行形式のファイルが付属していません。 ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。 ●Visual C++の場合

Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」を 選び、メイクファイル「*.dsp」を開き、ビルドしてください。 ●Visual Basic の場合 Visual Basic を起動し、プロジェクトファイル「*.vbp」を開き、ビルドしてください。 ●Visual C++ .NET の場合 Visual Studio を起動し、「ファイル」メニューから「開く」→「プロジェクト」を選び、プロジ ェクトファイル「*.vcproj」を開き、ビルドしてください。 ●Visual C# .NET の場合 Visual Studio を起動し、「ファイル」メニューから「開く」→「プロジェクト」を選び、プロジ ェクトファイル「*.csproj」※1を開き、ビルドしてください。

●Visual Basic .NET の場合

Visual Studio を起動し、「ファイル」メニューから「開く」→「プロジェクト」を選び、プロジ ェクトファイル「*.vbproj」※1を開き、ビルドしてください。 ※1 クラスライブラリもビルドされます

4.2 サンプルプログラム一覧

各サンプルプログラムの概要は、下記の様になります。 サンプルプログラム名 概要 InputByte 入力サンプリングプログラム OutputByte 出力サンプリングプログラム Event 割り込みサンプルプログラム

(65)

第5章 重要な情報

保証の内容と制限 弊社は本ドキュメントに含まれるソースプログラムの実行が中断しないこと、またはその実行に 誤りが無いことを保証していません。 本製品の品質や使用に起因する、性能に起因するいかなるリスクも使用者が負うものとします。 弊社はドキュメント内の情報の正確さに万全を期しています。万一、誤記または誤植などがあっ た場合、弊社は予告無く改訂する場合があります。ドキュメントまたはドキュメント内の情報に 起因するいかなる損害に対しても弊社は責任を負いません。 ドキュメント内の図や表は説明のためであり、ユーザ個別の応用事例により変化する場合があり ます。 著作権、知的所有権 弊社は本製品に含まれるおよび本製品に対する権利や知的所有権を保持しています。 本製品はコンピュータ ソフトウェア、映像/音声(例えば図、文章、写真など)を含んでいます。 医療機器/器具への適用における注意 弊社の製品は人命に関わるような状況下で使用される機器に用いられる事を目的として設計、製 造された物では有りません。 弊社の製品は人体の検査などに使用するに適する信頼性を確保する事を意図された部品や検査 機器と共に設計された物では有りません。 医療機器、治療器具などの本製品の適用により、製品の故障、ユーザ、設計者の過失などにより、 損傷/損害を引き起こす場合が有ります。 複製の禁止 弊社の許可なく、本ドキュメントの全て、または一部に関わらず、複製、改変などを行うことは できません。 責任の制限 弊社は、弊社または再販売者の予見の有無にかかわらず発生したいかなる特別損害、偶発的損害、 間接的な損害、重大な損害について、責任を負いません。 本製品(ハードウェア,ソフトウェア)のシステム組み込み、使用、ならびに本製品から得られる 結果に関する一切のリスクについては、本製品の使用者に帰属するものとします。 本製品に含まれるバグ、あるいは本製品の供給(納期遅延)、性能もしくは使用に起因する付帯 的損害もしくは間接的損害に対して、弊社に全面的に責がある場合でも、弊社はその製品に対す る改良(正常に動作する)、代品交換までとし、金銭面での賠償の責任は負わないものとします ので、予めご了承ください。 本製品(ソフトウェアを含む)は、日本国内仕様です。本製品を日本国外で使用された場合、弊 社は一切責任を負いかねます。また、弊社は本製品に関し、海外での保守サービスおよび技術サ

参照

関連したドキュメント

We show that a discrete fixed point theorem of Eilenberg is equivalent to the restriction of the contraction principle to the class of non-Archimedean bounded metric spaces.. We

8.1 In § 8.1 ∼ § 8.3, we give some explicit formulas on the Jacobi functions, which are key to the proof of the Parseval-Plancherel type formula of branching laws of

So far, most spectral and analytic properties mirror of M Z 0 those of periodic Schr¨odinger operators, but there are two important differences: (i) M 0 is not bounded from below

In addition, under the above assumptions, we show, as in the uniform norm, that a function in L 1 (K, ν) has a strongly unique best approximant if and only if the best

The explicit treatment of the metaplectic representa- tion requires various methods from analysis and geometry, in addition to the algebraic methods; and it is our aim in a series

We have avoided most of the references to the theory of semisimple Lie groups and representation theory, and instead given direct constructions of the key objects, such as for

Bipartite maps (also called hypermaps, or dessins d’enfants ) : vertices are either black or white, and monochromatic edges

We apply combinatorial tools, including P´ olya’s theorem, to enumerate all possible networks for which (1) the network contains distinguishable input and output nodes as well