GPC-2000

Size: px
Start display at page:

Download "GPC-2000"

Transcription

1 DIO(PCI/C-PCI) GPC-2000 デジタル入出力インタフェースモジュール用 Windows ドライバ Help for Windows

2 目次 第 1 章はじめに 概要 特長...3 第 2 章製品仕様 基本仕様 製品構成...5 第 3 章導入方法 インストール手順 実行手順 インタフェースモジュール固有情報...12 第 4 章リファレンス 関数一覧 関数個別説明 コールバック関数 構造体説明 戻り値一覧 第 5 章サンプルプログラム InBack InPoint OutBack OutPoint WatchBack HndShk Event EventEx EintPoint InputByte OutputByte EventCheck プログラム例 第 6 章ユーティリティ DI 入力ユーティリティ DO 出力ユーティリティ 自己診断プログラム カードバスID 設定ユーティリティ 第 7 章重要な情報 333 2

3 第 1 章はじめに 1.1 概要 GPC-2000 は Windows 上のアプリケーションから 弊社デジタル入出力製品を制御する為のソフトウェアです 弊社デジタル入出力製品を Windows 上のアプリケーションから DLL をダイナミックリンクし API をコールすることにより制御します 本ドキュメントは Windows 上で GPC-2000 を使用するための情報を掲載しています 1.2 特長 階層化ドライバと各種統一 共通化により DLL レベルでインタフェースモジュールの型式を意識する必要がありません ( インタフェースモジュール固有機能は除く ) BYTE WORD DWORD 単位の入出力ができます 任意の接点数での入出力ができます STB/ACK 制御信号を使用したハンドシェーク入出力ができます インタフェースモジュールからの割り込み発生時およびインターバルタイマにて ユ - ザアプリケーションにイベントを通知できます パルス出力 (PULS.OUT1 PULS.OUT2) を行うことができます ( 型式により仕様が異なります ) 付属の自己診断プログラムにより動作不具合時の原因がハードウェア的なものかソフトウェア的なものか容易に判断することができます また付属のユーティリティプログラムによりプログラムを作成することなしにインタフェースモジュールの基本的な動作を行うことができます 機能や使い方を説明するヘルプ (Help.pdf) をサポートしていますので 開発中に関数の詳細説明など 簡単に参照することができます 各種 64 ビット OS に対応しています 3

4 第 2 章製品仕様 2.1 基本仕様 最大デバイス数 255 デバイス ( 複数型式 ) ただし 同一型式は 16 枚まで 制御信号 ( ご使用のインタフェースモジュールのタイプにより存在しない信号がございます インタフェースモジュールの USER'S MANUAL にて仕様をご確認ください ) 割り込み機能 ( ご使用のインタフェースモジュールのタイプにより存在しない信号がございます インタフェースモジュールの USER'S MANUAL にて仕様をご確認ください ) 割り込みマスク機能インターバルタイマ機能 (STB ACK) による同期入出力入力用制御信号 STB1 ACK1 と出力用制御信号 STB2 ACK2 を使用し外部回路と同期をとりながらデータを入出力することができます また 信号 STB1 により入力データをラッチ ( 保持 ) し 取り込むことができます 制御信号を用いた入出力信号の動作は インタフェースモジュールの USER S MANUAL を参照してください 割り込みが発生した場合に アプリケーションにイベントにて通知することができます 本 DLLは 以下の割り込み要因によりイベントをシグナル状態とします IN1 からの入力信号または STB1 からの入力信号 IN2 からの入力信号または IR.IN1( 外部割り込み入力信号 ) からの入力信号 IN3 からの入力信号または ACK2 からの入力信号 IN4 からの入力信号または IR.IN2( 外部割り込み入力信号 ) からの入力信号 インターバルタイマ割り込み 外部リセット入力(RSTIN) 割り込み 割り込み要因は本 DLL の関数にて変更します 割込み要因毎にマスク設定 / マスク解除することができます 指定した周期で割込みを発生させることができます (10ms ~1500ms) Windows では 10ms より短い周期 (9ms など ) でインターバルタイマ割り込みを使用するとアプリケーションが処理しきれずフリーズした状態に陥りますので 10ms より短い周期でインターバルタイマ割り込みを使用することはできません ただし 負荷の大きいアプリケーションにおいては 10ms 以上の周期で使用してもフリーズしてしまうことがあるため 上記の数値はあくまでも通常の状態 ( 他のアプリケーションが動作していない状態など ) での目安です 周期は Windows システムの動作の影響を受けるため 誤差が生じることをご了承ください 外部リセット入力 (RSTIN) 機能本インタフェースモジュールに対して外部からリセットをかけるための入力です 出力やインタフェースモジュールの各設定値をリセットすることができます インターバルタイマも停止します 4

5 2.2 製品構成 製品構成 ファイル名 説明 弊社管理用ファイル GPC2000.VER 弊社ソフト管理用ファイル 最新情報ドキュメント README.HTM 最新ドキュメント掲載ファイル インストールプログラム SETUP.EXE インストール用ファイル 自己診断プログラム DIAGDIO.EXE 自己診断プログラム サンプルプログラム Visual C#.NET IFCDIO Visual C#.NET 用クラスライブラリ INPOINT Visual C#.NET 用入力サンプルプログラム OUTPOINT Visual C#.NET 用出力サンプルプログラム Visual C++ INPOINT 入力サンプルプログラム OUTPOINT 出力サンプルプログラム INBACK バックグランド入力サンプルプログラム OUTBACK バックグランド出力サンプルプログラム WatchBack バックグランド監視サンプルプログラム HndShk ハンドシェーク入出力サンプルプログラム Event 割り込みサンプルプログラム EintPoint PCI-2162, CTP-2162, CPZ 用ラッチ入力サンプルプログラム EventEx PCI-2162, CTP-2162, CPZ 用割り込みサンプルプログラム InputByte 入力サンプルプログラム ( マニュアル記載 ) OutputByte 出力サンプルプログラム ( マニュアル記載 ) EventCheck 割り込みサンプルプログラム ( マニュアル記載 ) Visual Basic.NET IFCDIO Visual Basic.NET 用クラスライブラリ INPOINT Visual Basic.NET 用入力サンプルプログラム OUTPOINT Visual Basic.NET 用出力サンプルプログラム Visual Basic INPOINT 入力サンプルプログラム OUTPOINT 出力サンプルプログラム INBACK バックグランド入力サンプルプログラム OUTBACK バックグランド出力サンプルプログラム WatchBack バックグランド監視サンプルプログラム HndShk ハンドシェーク入出力サンプルプログラム Event 割り込みサンプルプログラム EintPoint PCI-2162, CTP-2162, CPZ 用ラッチ入力サンプルプログラム EventEx PCI-2162, CTP-2162, CPZ 用割り込みサンプルプログラム InputByte 入力サンプルプログラム ( マニュアル記載 ) OutputByte 出力サンプルプログラム ( マニュアル記載 ) EventCheck 割り込みサンプルプログラム ( マニュアル記載 ) 5

6 Delphi INPOINT 入力サンプルプログラム OUTPOINT 出力サンプルプログラム INBACK バックグランド入力サンプルプログラム OUTBACK バックグランド出力サンプルプログラム WatchBack バックグランド監視サンプルプログラム HndShk ハンドシェーク入出力サンプルプログラム Event 割り込みサンプルプログラム EintPoint PCI-2162, CTP-2162, CPZ 用ラッチ入力サンプルプログラム EventEx PCI-2162, CTP-2162, CPZ 用割り込みサンプルプログラム ユーティリティ DIUTIL.EXE DI 入力ユーティリティ DOUTIL.EXE DO 出力ユーティリティ DLL FBIDIO.DLL ダイナミックリンクライブラリファイル FBIDIO.LIB インポートライブラリファイル FBIDIO.H ヘッダファイル MSVCRT.DLL C ランタイム共有 DLL デバイスドライバ CP2000.SYS CP2000U.SYS CP1513.SYS Windows 2000 以降用ドライバ CP1519.SYS GPC2XXX.INF ( 製品型式毎 ) Windows 2000 以降用ドライバインストールファイル GPC2XXX.SLD Windows Embedded 用ドライバ SLD ファイル ( 製品型式毎 ) CP2000.SYS Windows NT 4.0 用ドライバ GPC2XXX.INF ( 製品型式毎 ) Windows NT 4.0 用ドライバインストールファイル CP2000.VXD Windows Me/98/95 用ドライバ GPC2XXX.INF ( 製品型式毎 ) Windows Me/98/95 用ドライバインストールファイル ヘッダファイル FBIDIO.H Visual C++ 用ヘッダファイル FBIDIO.BAS Visual Basic 用ヘッダファイル FBIDIO.PAS Delphi 用ヘッダファイル オンラインヘルプ HELP.PDF オンラインヘルプ (PDF 形式 ) Visual C#.NET,Visual Basic.NET 用サンプルプログラムは それぞれ Viausl C#.NET 2003, Visual Basic.NET 2003 を使用して作成しています 6

7 第 3 章導入方法 3.1 インストール手順 README.HTM のインストール方法を参照してください CBI/CSI シリーズの複数枚使用 CBI/CSI シリーズの同一型式を複数枚使用する場合 ドライバインストール後にカードバス ID 設定ユーティリティを使用して カード毎に異なる ID 番号を設定します この ID 番号によりそれぞれのカードを識別して下さい 3.2 実行手順 同一型式を複数枚使用する場合は CompactPCI, PCI 製品の場合 インタフェースモジュール上のロータリスイッチの設定値 CardBus 製品の場合 CardBus ID の設定値が同一型式同士で重複しないように設定してからスロットに実装し システムを起動して下さい 同一型式が複数存在する場合 制御対象を一意に識別するための番号となります 重複していた場合 本ソフトウェアは正常に動作いたしません CardBus シリーズにつきましては カードバス ID 設定ユーティリティで設定した ID がインタフェースモジュール ID として取得されます 基本的な制御の手順は以下の通りです ( 記述例は C 言語です ) 初期化 インタフェースモジュールを DioOpen 関数で初期化します DeviceHandle = DioOpen( "FBIDIO1", 0 ); デバイス名 (FBIDIO1) を指定して初期化を行います このデバイス名はドライバによって一意に設定されます FBIDIO1 FBIDIO2 FBIDIO255 デバイス名はインタフェースモジュール上のロータリスイッチ (RSW1) の値で決定されるわけではありません デバイス名は使用するインタフェースモジュール枚数やスロット位置の変更等でシステム構成が変化すると割り当てられる名前が変化する場合があります システム構成が変化する環境でご使用になる場合は デバイス名の指定が変更できるようにアプリケーションを作成ください インタフェースモジュール上に実装された RSW1( インタフェースモジュール ID 設定 ) の値を取得し アプリケーションで目的のインタフェースモジュールであるかを判断することができます 詳しくは DioCommonGetPciDeviceInfo 関数の説明をご参照ください 7

8 初期化が正常終了すると上記の記述例では DeviceHandle にデバイスハンドルが返されます デバイスハンドルとは デジタル入出力デバイスを一意に識別するもので 下記以降の関数コールの際に指定します 複数のデジタル入出力デバイスを使用する場合は DioOpen 関数を各インタフェースモジュールに対してコールし それぞれ対応するデバイスハンドルを取得する必要があります 別々のプロセスから同一のデジタル入出力デバイスを初期化 ( 使用 ) することが可能です これにより別々のプロセス間で一枚のデジタル入出力デバイスを共有することが可能です 一枚のインタフェースモジュールを複数アプリケーションで共有する場合 出力データ 割り込み設定 マスク設定等は最後に設定を行った値となります ( アプリケーション毎に設定は保持されません ) 複数アプリケーションで同時に一枚のインタフェースモジュールを制御する場合 出力データ及び インタフェースモジュールの設定は整合性を保てるようにアプリケーション間で調整を行ってください 初期化したデジタル入出力デバイスはアプリケーション終了の際には必ず終了処理 (DioClose 関数 ) を行ってください 出力 DioOutputByte 関数, DioOutputWord 関数, DioOutputDword 関数を使用してインタフェースモジュールの指定した接点の出力を 8 点 16 点 32 点単位で制御します DioOutputByte( DeviceHandle, FBIDIO_IN1_8, 0x12 ); DioOutputWord( DeviceHandle, FBIDIO_IN1_16, 0x1234 ); DioOutputDword( DeviceHandle, FBIDIO_IN1_32, 0x ); DioOutputPoint 関数では任意の接点から任意の点数の接点を INT 型配列で設定したデータで制御を行うことが可能です DioOutputPoint( DeviceHandle, &Buffer[0], 16, 8 ); 入力 DioInputByte 関数, DioInputWord 関数, DioInputDword 関数を使用してインタフェースモジュールの指定した接点のデータを 8 点 16 点 32 点単位で取り出します DioInputByte( DeviceHandle, FBIDIO_IN1_8, &ByteValue ); DioInputWord( DeviceHandle, FBIDIO_IN1_16, &WordValue ); DioInputDword( DeviceHandle, FBIDIO_IN1_32, &DwordValue ); DioInputPoint 関数では任意の接点から任意の点数のデータを INT 型配列に格納することができます DioInputPoint( DeviceHandle, &Buffer[0], 16, 8 ); 8

9 3.2.4 タイマ 制御信号の制御 DioSetTimerConfig 関数 DioGetTimerConfig 関数 DioGetTimerCount 関数を使用してインタフェースモジュール上に搭載されたタイマを直接使用することができます ただし バックグランド処理でインタフェースモジュールに搭載されたタイマを使用している場合 これらの関数は使用できません DioGetAckStatus 関数 DioSetAckPulseCommand 関数 DioGetStbStatus 関数 DioSetStbPulseCommand 関数を使用して STB ACK 信号 PULS.OUT 端子等を直接制御することができます また DioGetResetInStatus 関数で外部リセット入力端子の状態を取得することができます 割り込み DioEventRequestPending 関数 DioEventRequestPendingEx 関数にて各種割り込みイベントを待つことができます DioEventRequestPending 関数 DioEventRequestPendingEx 関数にて割り込みイベントを待つ前に下記の関数にて設定 アンマスクが必要です DioSetIrqMask 関数 DioGetIrqMask 関数 DioSetIrqConfig 関数 DioGetIrqConfig 関数にて割り込みイベントの設定 アンマスクを制御します また 発生した割り込みイベントはドライバ内のバッファに格納されており DioSetEventRequestMode 関数にて 割り込みイベントのバッファリング設定を変更することができます デフォルトではバッファリングが有効になっているため 最初に DioEventRequestPending 関数を実行した後は ドライバ内のバッファに割り込みイベントが保存される状態となります ( モードの詳細については DioSetEventRequestMode の説明を参照ください ) バックグランド処理 バックグランド関数は 処理回数を指定することにより定期的に指定した間隔で処理を繰り返す関数です 一定時間ごとに入出力関数をコールして実現する処理をバックグランド関数 1 度のコールにより実現できます バックグランド処理には バックグランド入力 DioInputPointBack 関数 バックグランド出力 DioOutputPointBack 関数 バックグランド監視 DioWatchPointBack 関数を用意しております DioGetBackGroundUseTimer 関数 DioSetBackGroundUseTimer 関数にてバックグランド処理をインタフェースモジュールに搭載されているのタイマを使用するかパソコンのタイマ (OS が提供するタイマサービス ) を使用するかの設定ができます インタフェースモジュール上のタイマを使用した方が時間精度が良くなります ただし インタフェースモジュール上に搭載されたタイマを使用することができるのは同時に 32 個のバックグランド処理までです バックグランド処理が 32 個以上になるとパソコンのタイマを使用します 9

10 バックグランド処理を行うには 最初に DioSetBackGround 関数にて処理を行う接点等の設定を行いバックグランド処理ハンドルを取得します そのバックグランド処理ハンドルを指定してバックグランド処理を開始します 一つのバックグランド処理ハンドルを同時に複数のバックグランド処理関数に指定することはできません DioSetBackGround 関数を複数回コールすることにより 同一または重複した接点に対して別々にバックグランド処理ハンドルを取得することができますので 同一接点に対して同時に複数のバックグランド処理を動作させることが可能です バックグランド処理は DioStopBackGround 関数にて途中で停止できます バックグランド処理ハンドルは必要なくなった場合 必ず DioFreeBackGround 関数で解放する必要があります DioGetBackGroundStatus 関数でバックグランド処理の状態を取得できます インタフェースモジュールの設定等 DioSetLatchStatus 関数 DioGetLatchStatus 関数にて入力データラッチ機能の設定ができます STB1 信号によるデータラッチ ( 保持 ) 機能をサポートしているインタフェースモジュールで使用できます DioGetDeviceConfig 関数にてインタフェースモジュールがサポートしている機能の情報を取得します ハンドシェーク入出力 DioGetInputHandShakeConfig 関数 DioSetInputHandShakeConfig 関数 DioGetOutputHandShakeConfig 関数 DioSetOutputHandShakeConfig 関数にてハンドシェーク入力 及び出力処理の設定を行います 入力 及び出力データの有効 / 無効マスクの設定 STB ACK 信号の論理の設定等を行います 電源 ON 時はデータがすべて無効に設定されています すべての入力データが 0 となり 出力接点の状態は変化しませんのでハンドシェーク入出力処理を行う前に必ず設定を行ってください DioInputHandShake 関数 DioInputHandShakeEx 関数 (Windows 2000/NT 以降 ) にてハンドシェーク入力を開始します DioOutputHandShake 関数 DioOutputHandShakeEx 関数 (Windows 2000/NT 以降 ) にてハンドシェーク出力を開始します ハンドシェーク入出力の停止は DioStopInputHandShake 関数 DioStopOutputHandShake 関数で可能です DioGetHandShakeStatus 関数にてハンドシェーク入出力の状態を取得できます 10

11 DioSetTimeOut 関数 DioGetTimeOut 関数にてハンドシェーク入出力のタイムアウト時間を指定します 電源 ON 時のデフォルトではタイムアウトは無し (0msec) に設定されています 終了処理 DioClose 関数でインタフェースモジュールの終了処理を行います DioClose( DeviceHandle ); 非同期処理関数についてバックグランド処理 ハンドシェーク入出力 割り込みイベント待ちの関数はオーバーラップ構造体を指定することで非同期 ( 処理完了前に制御が戻ります ) で動作させることが可能です Win32 API の CreateEvent WaitForSingleObject 関数を使用することによりイベント待ち処理を行うことができます CreateEvent WaitForSingleObject 関数の使用方法は Microsoft 社提供の Win32 API リファレンス等をご参照ください 11

12 3.3 インタフェースモジュール固有情報本ソフトウェアは 弊社 PCI/CompactPCI デジタル入出力デバイスに共通なソフトウェアですが 下記に示すインタフェースモジュールについてはインタフェースモジュール固有の使用方法 または専用の関数が用意されています PCI-2470 固有情報 PCI-2470 固有の機能 1. 過電圧 過熱 負荷ショート時の異常検出機能 8 点の出力端子の制御は DioInputByte 関数 DioInputPoint 関数で行います PCI-2470 は過電圧時 過熱 負荷ショート時に異常を検出できます 異常が発生しているかどうかは DioInputByte 関数 DioInputWord 関数 DioInputDword 関数で取得します また 異常検出時に割込みを発生させることが可能です OUT1~OUT8 それぞれに DioOutputByte 関数 DioOutputWord 関数 DioOutputDword 関数で割込みのマスク設定が可能です OUT1~OUT8 の異常検出信号のうち 非マスク状態の信号が OR されて一つの割込みイベントとして 発生します OR された異常検出信号割込みのマスク設定は DioSetIrqMask 関数で設定します 異常検出時の割込みを取得する手順は以下のようになります DioOutputByte 関数 DioOutputWord 関数 DioOutputDword 関数で異常検出を行う出力端子のマスク設定を行います DioSetIrqMask 関数で OR された異常検出で割込みを発生される為のマスク設定を行います DioEventRequestPending 関数で割込み発生を待ちます 割込み発生待ちを非同期で行うには CreateEvent 関数 WaitForSingleObject 関数等の Win32API の知識が必要です 異常を検出した場合は 異常を検出した OUT 端子を OFF します どの OUT 端子が異常を検出したかを DioInputByte 関数で取得します 異常を検出した OUT 端子を DioOutputByte DioOutputPoint 関数で OFF にします 異常検出時に行う任意の処理を開始します 12

13 2. 汎用入力 1 点汎用入力端子が 1 点あります (USER'S MANUAL のピンアサインメントでの信号名は -IN 端子です +IN 端子が電源です ) 汎用入力端子の状態は DioInputByte 関数 DioInputWord 関数 DioInputDword 関数で行います その場合は接点端子名の指定が 他の DIO デバイスの IN25 に対応します DioInputPoint 関数で入力接点 IN25 を指定しても入力できます 詳しくは下記の対応表をご参照ください 3. 出力状態の読み込み可能出力状態を読み込むことができます 実際に接点が ON しているか OFF しているかの確認に使用します 関数は DioInputByte 関数 DioInputWord 関数 DioInputDword 関数を使用します DioInputPoint 関数で入力接点 IN1 から IN8 を指定しても同様です 各関数説明で使用する信号名と PCI-2470 固有機能割り当ての対応表 本ソフトウェアの関数説明では 弊社 PCI/CompactPCI バス用 DIO デバイスで共通に使用される信号名で説明している箇所があります PCI-2470 では それらの信号名に対応するデータの意味が他の DIO デバイスと違います 下記に対応表を示します 出力信号各関数説明で使用する信号名 OUT1~OUT8 OUT9~OUT16 OUT17~OUT24 OUT25~OUT64 PCI-2470 で対応する信号 OUT1~OUT8 の出力未使用 OUT1~OUT8 の異常検出割込みマスク設定未使用 入力信号 各関数説明で使用する信号名 PCI-2470 で対応する信号 IN1~IN8 OUT1~OUT8 の出力状態読み込み IN9~IN16 OUT1~OUT8 の診断信号読み込み IN17~IN24 OUT1~OUT8 の異常検出割込みマスク設定状態読み込み IN25 汎用入力 -IN の状態読み込み (+IN 端子が電源 ) IN26~IN64 未使用 13

14 3.3.2 PCI-2162, CTP-2162, CPZ 固有情報 PCI-2162, CTP-2162, CPZ のエッジ検出機能と 各関数による設定は 次のような関係になっています DioInputPoint 関数, DioInputByte 関数, DioInputWord 関数, DioInputDword 関数は 現在の入力状態をそのまま読み取ることができます PCI-2162, CTP-2162, CPZ には エッジ検出回路が搭載されています DioEintInputPoint 関数, DioEintInputByte 関数, DioEintInputWord 関数, DioEintInputDword 関数は 現在の入力状態ではなく エッジ検出回路が検出したエッジ検出データを読み取ることができます 入力にエッジが存在した場合 PCI-2162, CTP-2162, CPZ はそのデータを保持しています エッジ検出を行うためには DioEintSetEdgeConfig 関数, DioEintSetEdgeConfigEx 関数により 14

15 エッジ検出マスク解除し エッジ検出を有効としなければなりません PCI-2162, CTP-2162, CPZ のエッジ検出回路には デジタルフィルタが付加されています デジタルフィルタは 一定時間より短い幅のパルスをカットします 入力のチャタリングやノイズを除去する目的に利用することが出来ます エッジ検出回路は このデジタルフィルタを通した入力信号に対してエッジ検出を行います カットするパルス幅は DioEintSetFilterConfig 関数のパラメータ FilterConfig で設定します デジタルフィルタを設定すると 設定したフィルタ時間の遅れが発生します PCI-2162, CTP-2162, CPZ が保持しているエッジ検出データは 次のいずれかの条件を満たしたときにクリアされます DioEintInputPoint 関数, DioEintInputByte 関数, DioEintInputWord 関数, DioEintInputDword 関数で 読み込みを行った接点のデータがクリアされます DioEintSetEdgeConfig 関数が実行されたとき IR1~IR32 の接点の情報がクリアされます DioEintSetEdgeConfigEx 関数が実行されたとき パラメータ No で指定した接点の情報がクリアされます DioEintSetFilterConfig 関数を実行したとき パラメータ No で指定したデジタルフィルタ設定を行った接点の情報がクリアされます DioEintSetIrqMask 関数, DioEintSetIrqMaskEx 関数によりエッジ検出割り込みが許可されている場合は 割り込み発生と同時にクリアされます 15

16 3.3.3 LPC , PEX 固有情報 LPC , PEX は入力 4 点 / 出力 4 点の入出力機能を持ちますが 各関数による制御を行う際は入力 8 点 / 出力 8 点のデバイスとして扱われます DioInputByte 関数や DioOutputByte 関数を実行する際には 1Byte データの下位 4bit を使用して入出力の制御を行います 上位 4bit に関しては 入出力を実行しても関数エラーは発生しませんが 制御自体は行われません PCI-2798C 固有情報 PCI-2798C は OUT1~OUT64 / ACK / STB の出力の同期を行ないます たとえば OUT1~OUT8 の出力設定中 OUT9~OUT16 の出力を行なった場合 OUT1~OUT8 の出力設定が完了してから OUT9~ OUT16 への出力設定を行ないます 出力設定が同時となった場合 関数エラーは発生しませんが 出力が正常に行なわれない可能性があるため 排他をとった制御を行なうようにして下さい 16

17 点 DIO 製品の固有情報下記型式の製品 (128 点 DIO 製品 ) は 128 点の入力 出力または入出力機能を持ちます PCI , PEX-H (DI128 点 ) PCI , PEX-H (DO128 点 ) PCI , PEX-H (DI64 点, DO64 点 ) PCI , PEX-H (DI128 点 ) PCI , PEX-H (DO128 点 ) PCI , PEX-H (DI128 点 ) PCI , PEX-H (DI64 点, DO64 点 ) PCI , PEX-H (DIO128 点 ) PCI , PEX-H (DIO128 点 ) 上記製品は一枚のインタフェースモジュール上でデバイスが 2 個搭載されている製品です そのため 2 つのデバイスのそれぞれにデバイス名が割り振られます 各関数による制御を行う際は それぞれでデバイスオープンを行い 制御を行ってください DI128 点, DO128 点製品, DIO128 点製品では DIO のピン番号が CNA は 1~64, CNB は 65~128 と なります CNB を制御する場合 下記のように読み替えて制御を行ってください DI128 点 DO128 点 DIO128 点 ピン番号 [CNB] 読み替え ピン番号 [CNB] 読み替え ピン番号 [CNB] 読み替え IN65 IN1 OUT65 OUT1 IN/OUT65 IN/OUT1 IN66 IN2 OUT66 OUT2 IN/OUT66 IN/OUT2 IN128 IN64 OUT128 OUT64 IN/OUT128 IN/OUT64 17

18 128 点 DIO 製品は 再起動を行なうことで CNA と CNB のデバイス名が入れ替わることがあります 下記が 各デバイスのデバイス ID とサブシステム ID の対応表です デバイスを制御する場合 デバイスオープンを行い DioCommonGetPciDeviceInfo 関数を実行した後で デバイスID サブシステムIDからどのデバイスをオープンしたか判別してください デバイスを複数毎使用する場合は RSW 番号も合わせてご確認ください 型式 CNx デバイス ID サブシステム ID PCI CNA 2114h 8CAh CNB 2194h PEX-H CNA 2D14h 8CAh CNB 2D94h PCI CNA 2102h 92Eh CNB 2182h PEX-H CNA 2D02h 92Eh CNB 2D82h PCI CNA 210Bh B22h CNB 218Bh PEX-H CNA 2D0Bh B22h CNB 2D8Bh PCI CNA 2114h 8C0h CNB 2194h PEX-H CNA 2D14h 8C0h CNB 2D94h PCI CNA 2102h 924h CNB 2182h PEX-H CNA 2D02h 924h CNB 2D82h PCI CNA 210Bh B18h CNB 218Bh PEX-H CNA 2D0Bh B18h CNB 2D8Bh PCI CNA 2116h B5Eh CNB 2196h PEX-H CNA 2D16h B5Eh CNB 2D96h PCI CNA 2116h B68h CNB 2196h PEX-H CNA 2D16h B68h CNB 2D96h PCI CNA 2116h B72h CNB 2196h PEX-H CNA 2D16h B72h CNB 2D96h 18

19 3.3.6 ADP-U2937 固有情報弊社 I/O タッチパネル CD シリーズ (TIO-C2937Y(S)021) に搭載されている DIO 機能には 使用できる関数に制限があります 使用可能関数 DioOpen DioClose DioCommonGetPciDeviceInfo DioGetDeviceConfig DioGetDeviceConfigEx DioInputPoint DioInputByte DioInputWord DioInputDword DioOutputPoint DioOutputByte DioOutputWord DioOutputDword 19

20 3.3.7 PCI / エコ 3 デジタル入出力タイプ固有情報弊社マザコン製品 (IMC-x2848(y)) エコ 3 製品 (ECC-xxxxxx) に搭載されている DIO 機能には 使用できる関数に制限があります 使用可能関数 DioOpen DioClose DioCommonGetPciDeviceInfo DioGetDeviceConfig DioGetDeviceConfigEx DioInputPoint DioInputByte DioInputWord DioInputDword DioOutputPoint DioOutputByte DioOutputWord DioOutputDword DioSetRstinMask DioGetRstinMask DioGetResetInStatus DioGetBackGroundUseTimer DioSetBackGroundUseTimer DioSetBackGround DioFreeBackGround DioStopBackGround DioGetBackGroundStatus DioInputPointBack DioOutputPointBack DioWatchPointBack DioSetIrqMask DioGetIrqMask DioEintSetIrqMask DioEintGetIrqMask DioEventRequestPendingEx DioSetTimerConfig DioGetTimerConfig DioGetTimerCount DioEintSetEdgeConfig DioEintGetEdgeConfig DioEintSetFilterConfig DioEintGetFilterConfig DioSetEventRequestMode 20

21 3.3.8 PCI / エコ 3 カウンタタイプ / CFast タイプ / NTSC タイプ固有情報弊社マザコン製品 (IMC-x6323(y)) エコ 3 製品 (ECC-xxxxxx) に搭載されている DIO 機能には 使用できる関数に制限があります 使用可能関数 DioOpen DioClose DioCommonGetPciDeviceInfo DioGetDeviceConfig DioGetDeviceConfigEx DioInputPoint DioInputByte DioInputWord DioInputDword DioOutputPoint DioOutputByte DioOutputWord DioOutputDword 21

22 3.3.9 PCI N / エコ 3 NTSC タイプ固有情報弊社マザコン製品 (IMC-T5540(y)) エコ 3 製品 (ECC-xxxxxx) に搭載されている DIO 機能には 使用できる関数に制限があります 本製品は DIO 機能を GPC-5300 と共用で使用する事が出来ます 各デバイスで制御できるビットは以下のようになります GPC-5300 での DI/DO の制御方法は GPC-5300 の Help を参照してください 制御出来るデバイス bit7 bit6 bit1 bit0 GPC-2000 / GPC-5520 IN/OUT8 IN/OUT7 IN/OUT2 IN/OUT1 GPC-2000 のみで制御 bit15 bit14 bit9 bit8 IN/OUT16 IN/OUT15 IN/OUT10 IN/OUT9 使用可能関数 DioOpen DioClose DioCommonGetPciDeviceInfo DioGetDeviceConfig DioGetDeviceConfigEx DioInputPoint DioInputByte DioInputWord DioInputDword DioOutputPoint DioOutputByte DioOutputWord DioOutputDword 22

23 タフコンデジタル入出力タイプ固有情報弊社タフコン製品に搭載されている DIO 機能には 使用できる関数に制限があります 使用可能関数 DioOpen DioClose DioCommonGetPciDeviceInfo DioGetDeviceConfig DioGetDeviceConfigEx DioInputPoint DioInputByte DioInputWord DioInputDword DioOutputPoint DioOutputByte DioOutputWord DioOutputDword DioGetBackGroundUseTimer DioSetBackGroundUseTimer DioSetBackGround DioFreeBackGround DioStopBackGround DioGetBackGroundStatus DioInputPointBack DioOutputPointBack DioWatchPointBack DioSetIrqMask DioGetIrqMask DioSetTimerConfig DioGetTimerConfig DioGetTimerCount 23

24 PCI 固有情報弊社タフコン製品 (ITC-x2984(y)), 弊社 I/O タッチパネル CD シリーズ (TIO-N2984(x)) に搭載されている DIO の型式です 使用できる関数に制限があります 対象型式は デバイスマネージャ上で下記のように表示されます DIO 1~64 点 Interface PCI <DIO1~64> DIO 65~128 点 Interface PCI <DIO65~128> 上記製品はデバイスが 2 個搭載されている製品です そのため 2 つのデバイスのそれぞれにデバイス名が割り振られます 各関数による制御を行う際は それぞれでデバイスオープンを行い 制御を行ってください DIO のピン番号が Interface PCI <DIO1~64> は 1~64, Interface PCI <DIO65 ~128> は 65~128 となります Interface PCI <DIO65~128> を制御する場合 Help 内の説明を下記のように読み替えて制御を行ってください ピン番号読み替え IN/OUT65 IN/OUT1 IN/OUT66 IN/OUT2 IN/OUT128 IN/OUT64 使用可能関数 DioOpen DioClose DioCommonGetPciDeviceInfo DioGetDeviceConfig DioGetDeviceConfigEx DioInputPoint DioInputByte DioInputWord DioInputDword DioOutputPoint DioOutputByte DioOutputWord DioOutputDword DioSetRstinMask DioGetRstinMask DioGetResetInStatus DioGetBackGroundUseTimer DioSetBackGroundUseTimer DioSetBackGround DioFreeBackGround DioStopBackGround DioGetBackGroundStatus DioInputPointBack DioOutputPointBack 24

25 DioWatchPointBack DioSetIrqMask DioGetIrqMask DioEintSetIrqMask DioEintGetIrqMask DioEventRequestPendingEx DioSetTimerConfig DioGetTimerConfig DioGetTimerCount DioEintSetEdgeConfig DioEintGetEdgeConfig DioEintSetFilterConfig DioEintGetFilterConfig DioSetEventRequestMode 25

26 PCI 固有情報弊社タフコン製品 (ITC-x5537(y), ITC-x5538(y)) 弊社 I/O タッチパネル CD シリーズ (TIO-N5537x(y), TIO-N5538x(y)) に搭載されている DIO 機能には 使用できる関数に制限があります 本製品は DIO 機能を GPC-5520 と共用で使用する事が出来ます 各デバイスで制御できるビットは以下のようになります GPC-5520 での DI/DO の制御方法は GPC-5520 の Help を参照してください 制御出来るデバイス bit7 bit6 bit1 bit0 IN/OUT8 IN/OUT7 IN/OUT2 IN/OUT1 bit15 bit14 bit9 bit8 GPC-2000 / GPC-5520 共用で制御 GPC-2000 のみで制御 使用可能関数 DioOpen DioClose DioCommonGetPciDeviceInfo DioGetDeviceConfig DioGetDeviceConfigEx DioInputPoint DioInputByte DioInputWord DioInputDword DioOutputPoint DioOutputByte DioOutputWord DioOutputDword DioSetRstinMask DioGetRstinMask DioGetResetInStatus DioGetBackGroundUseTimer DioSetBackGroundUseTimer DioSetBackGround DioFreeBackGround DioStopBackGround DioGetBackGroundStatus DioInputPointBack DioOutputPointBack DioWatchPointBack IN/OUT16 IN/OUT15 IN/OUT10 IN/OUT9 bit23 bit22 bit17 bit16 IN/OUT24 IN/OUT23 IN/OUT18 IN/OUT17 bit23 bit22 bit17 bit16 IN/OUT24 IN/OUT23 IN/OUT18 IN/OUT17 bit31 bit30 bit25 bit24 IN/OUT32 IN/OUT31 IN/OUT26 IN/OUT25 26

27 DioSetIrqMask DioGetIrqMask DioEintSetIrqMask DioEintGetIrqMask DioEventRequestPendingEx DioSetTimerConfig DioGetTimerConfig DioGetTimerCount DioEintSetEdgeConfig DioEintGetEdgeConfig DioEintSetFilterConfig DioEintGetFilterConfig DioSetEventRequestMode 27

28 PCI 固有情報弊社ソルコン製品, 弊社 I/O タッチパネル CD シリーズに搭載されている DIO の型式です 使用できる関数 一部機能に制限があります 使用可能関数 DioOpen シェアオープンしか行うことができません Flag の値は無視されます DioClose DioCommonGetPciDeviceInfo DeviceID VenderID SubSystemID BoardID 以外は不定値が取得されます DioGetDeviceConfig DioGetDeviceConfigEx DioInputPoint DioInputByte DioInputWord DioInputDword DioOutputPoint DioOutputByte DioOutputWord DioOutputDword DioSetRstinMask DioGetRstinMask DioGetResetInStatus DioGetBackGroundUseTimer DioSetBackGroundUseTimer Use に 0 を指定することはできません DioSetBackGround DioFreeBackGround DioStopBackGround DioGetBackGroundStatus DioInputPointBack DioOutputPointBack DioSetIrqMask DioGetIrqMask DioSetIrqConfig IrqConfig の bit0~bit3(sig1~sig4) は 0 以外は指定できません DioGetIrqConfig DioSetTimerConfig TimerConfigValue の bit4~bit6(ctl5~ctl7) は 0 は指定できません 100μs1 から設定可能です DioGetTimerConfig DioGetTimerCount DioEventRequestPending 28

29 PCI U / PCI 固有情報弊社ソルコン製品, 弊社 I/O タッチパネル CD シリーズに搭載されている DIO の型式です 使用できる関数 一部機能に制限があります 使用可能関数 DioOpen シェアオープンしか行うことができません Flag の値は無視されます DioClose DioCommonGetPciDeviceInfo DeviceID VenderID SubSystemID BoardID 以外は不定値が取得されます DioGetDeviceConfig DioGetDeviceConfigEx DioInputPoint DioInputByte DioInputWord DioInputDword DioOutputPoint DioOutputByte DioOutputWord DioOutputDword DioSetRstinMask DioGetRstinMask DioGetResetInStatus DioGetBackGroundUseTimer DioSetBackGroundUseTimer Use に 0 を指定することはできません DioSetBackGround DioFreeBackGround DioStopBackGround DioGetBackGroundStatus DioInputPointBack DioOutputPointBack DioOutputPointBack 実行中 DioOutputPoint/DioOutputByte/DioOutputWord/DioOutputDword 関数を使用することが出来ません DioSetIrqMask DioGetIrqMask DioSetIrqConfig IrqConfig の bit0~bit3(sig1~sig4) は 0 以外は指定できません DioGetIrqConfig DioEventRequestPending DioEintSetFilterConfig DioEintGetFilterConfig 29

30 第 4 章リファレンス 4.1 関数一覧 No 関数名 機能 初期化関数 1 DioOpen デジタル入出力デバイスのオープンを行い 以後のインタフェースモジュールへのアクセスを行えるようにします 2 DioClose デジタル入出力デバイスのクローズを行い インタフェースモジュールアクセスのために使用されていた各種リソースの解放を行い 以後のインタフェースモジュールへのアクセスを禁止します 3 DioCommonGetPciDeviceInfo デバイス ID リソース情報 インタフェースモジュール ID (RSW1) 等の情報を取得します 4 DioGetDeviceConfig デバイスがサポートしている機能情報を取得します 5 DioGetDeviceConfigEx *2 デバイスがサポートしている機能情報を取得します DioGetDeviceConfigと同機能ですが PCI-2162, CTP-2162 のエッジ検出機能 デジタルフィルタ機能にも対応しています 入出力関数 6 DioInputPoint 任意の点数の入力接点の状態を読み込みます 7 DioInputByte 指定した 8 点の入力接点の状態を読み込みます (BYTE アクセス ) 8 DioInputWord 指定した 16 点の入力接点の状態を読み込みます (WORD アクセス ) 9 DioInputDword 指定した 32 点の入力接点の状態を読み込みます (DWORD アクセス ) 10 DioOutputPoint 任意の点数の出力接点の出力を制御します 11 DioOutputByte 指定した 8 点の出力接点を制御します (BYTE アクセス ) 12 DioOutputWord 指定した 16 点の出力接点を制御します (WORD アクセス ) 13 DioOutputDword 指定した 32 点の出力接点を制御します (DWORD アクセス ) 制御信号関数 14 DioGetAckStatus ACK2 端子の状態 ACK2 レジスタの状態 STB2 端子の状態を読み込みます 15 DioSetAckPulseCommand ACK1 の出力制御 汎用パルス出力 PULS.OUT1 の出力制御を行います 16 DioGetStbStatus STB1 端子の状態 STB1 レジスタの状態 ACK1 端子の状態を読み込みます 17 DioSetStbPulseCommand STB2 の出力制御 汎用パルス出力 PULS.OUT2 の出力制御を行います 18 DioInputUniversalPoint 汎用入力端子の状態を読み込みます 19 DioOutputUniversalPoint 汎用出力端子の出力を制御します 20 DioSetLatchStatus 入力状態ラッチ回路の接続を設定します 21 DioGetLatchStatus 入力状態ラッチ回路の接続状態を取得します 22 DioSetRstinMask *3 外部リセット (RSTIN) 入力のマスクを設定します 30

31 23 DioGetRstinMask *3 外部リセット (RSTIN) 入力のマスク状態を取得します 24 DioGetResetInStatus 外部リセット入力信号端子 (RSTIN) の状態を取得します バックグランド関数 25 DioGetBackGroundUseTimer バックグランド処理でインタフェースモジュール上のタイマを使用するか パソコンのタイマを使用するかの設定情報を取得します 26 DioSetBackGroundUseTimer バックグランド処理でインタフェースモジュール上のタイマを使用するか パソコンのタイマを使用するかを設定します 27 DioSetBackGround バックグランド処理 ( 関数名に Back が付加されている関数による処理 ) を行う接点番号 接点数 処理回数を設定します バックグランド処理を行う前に本関数での設定が必要です 28 DioFreeBackGround DioSetBackGround 関数で設定したバックグランド処理の設定を解放します バックグランド処理を行う必要がなくなった時点で必ず本関数で設定を解放してください 29 DioStopBackGround バックグランド処理 ( 関数名に Back が付加されている関数による処理 ) を停止します 30 DioGetBackGroundStatus バックグランド処理 ( 関数名に Back が付加されている関数による処理 ) の設定情報 実行状態等を取得します 31 DioInputPointBack DioSetBackGround 関数で設定した任意の点数の入力接点の状態をバックグランドで読み込みます 32 DioOutputPointBack DioSetBackGround 関数で設定した任意の点数の出力接点の出力をバックグランドで制御します 33 DioWatchPointBack DioSetBackGround 関数で設定した任意の点数の状態を監視します ハンドシェーク関数 34 DioGetInputHandShakeConfig 制御信号を使用したハンドシェーク入力について STB1 イベントの使用 / 未使用 入力データのマスク設定の情報を取得します 35 DioSetInputHandShakeConfig 制御信号を使用したハンドシェーク入力について STB1 イベントの使用 / 未使用 入力データのマスクの設定を行います 36 DioGetOutputHandShakeConfig 制御信号を使用したハンドシェーク出力について ACK2 イベントの使用 / 未使用 出力データのマスク設定の情報を取得します 37 DioSetOutputHandShakeConfig 制御信号を使用したハンドシェーク出力について ACK2 イベントの使用 / 未使用 出力データのマスクの設定を行います 38 DioInputHandShake 制御信号を使用したハンドシェーク入力を行います 39 DioInputHandShakeEx 制御信号を使用したハンドシェーク入力を行います ( コールバック関数有り Windows 2000/NT 以降で使用可能 ) 40 DioOutputHandShake 制御信号を使用したハンドシェーク出力を行います 41 DioOutputHandShakeEx 制御信号を使用したハンドシェーク出力を行います ( コールバック関数有り Windows 2000/NT 以降で使用可能 ) 42 DioStopInputHandShake ハンドシェーク入力を停止します 43 DioStopOutputHandShake ハンドシェーク出力を停止します 44 DioGetHandShakeStatus ハンドシェーク入出力の状態を取得します 45 DioGetOverlappedResult ハンドシェーク入出力 (DioInputHandShake/DioOutputHandShake) 関数の非同期コール時の 実際に入出力されたバイト数を取得します 46 DioSetTimeOut ハンドシェーク入出力時のタイムアウト時間を設定します 31

32 47 DioGetTimeOut ハンドシェーク入出力時のタイムアウト設定値を取得します 割り込み関数 48 DioSetIrqMask 割り込みのマスク / アンマスクの設定を行います 49 DioGetIrqMask 割り込みマスク状態を取得します 50 DioSetIrqConfig 割り込み要因割り当て及び割り込み発生論理の設定を行います 51 DioGetIrqConfig 割り込み要因割り当て及び割り込み発生論理の設定状態を取得します 52 DioEventRequestPending デジタル入出力デバイスのイベント要求を待ちます 53 DioEintSetIrqMask *1 エッジ検出割り込みのマスク / アンマスクの設定を行います (IR1~IR32) 54 DioEintGetIrqMask *1 エッジ検出割り込みのマスク / アンマスク設定状態を取得します (IR1~IR32) 55 DioEintSetIrqMaskEx *1 エッジ検出割り込みのマスク / アンマスクの設定を行います 56 DioEintGetIrqMaskEx *1 エッジ検出割り込みのマスク / アンマスク設定状態を取得します 57 DioEventRequestPendingEx *2 デジタル入出力デバイスのイベント要求を待ちます DioEventRequestPendingと同機能ですが PCI-2162, CTP-2162, CPZ のエッジ検出割り込みに対応しています インターバルタイマ関数 58 DioSetTimerConfig インターバルタイマの設定を行います 59 DioGetTimerConfig インターバルタイマの設定情報を取得します 60 DioGetTimerCount インターバルタイマのカウント値を取得します エッジ検出関数 61 DioEintSetEdgeConfig *1 エッジ検出の有効 / 無効の設定を行います (IR1~IR32) 62 DioEintGetEdgeConfig *1 エッジ検出の有効 / 無効設定状態を取得します (IR1~IR32) 63 DioEintSetEdgeConfigEx *1 エッジ検出の有効 / 無効の設定を行います 64 DioEintGetEdgeConfigEx *1 エッジ検出の有効 / 無効設定状態を取得します 65 DioEintInputPoint *1 任意の点数のエッジ検出データを読み込みます 66 DioEintInputByte *1 指定した 8 点のエッジ検出データを読み込みます (BYTE アクセス ) 67 DioEintInputWord *1 指定した 16 点のエッジ検出データを読み込みます (WORD アクセス ) 68 DioEintInputDword *1 指定した 32 点のエッジ検出データを読み込みます (DWORD アクセス ) デジタルフィルタ関数 69 DioEintSetFilterConfig *1 デジタルフィルタ時間の設定を行います 70 DioEintGetFilterConfig *1 デジタルフィルタ時間設定を取得します 割り込みモード設定関数 71 DioSetEventRequestMode 割り込み待ちモードの設定を行います 内部同期設定関数 72 DioOutputSync デジタル入出力デバイスの内部同期制御を設定します PCI でのみ対応しています *1 PCI-2162, CTP-2162, CPZ 専用の関数です PCI-2162, CTP-2162, CPZ 以外では 使用できません *2 PCI-2162, CTP-2162, CPZ の機能をサポートするために拡張された関数です PCI-2162, 32

33 CTP-2162, CPZ 以外でも使用できます *3 外部リセット (RSTIN) 入力のマスク機能を持った製品の専用関数です 外部リセット入力のマスク機能の有無は DioGetDeviceConfigEx 関数にて確認できます 33

34 4.2 関数個別説明 1. DioOpen 機能 デジタル入出力デバイスのオープンを行い 以後のインタフェースモジュールへのアクセスを行えるようにします 書式 C 言語 (x86 専用 ) HANDLE DioOpen( LPCTSTR Name, DWORD Flag ); C 言語 (x64 専用 ) HANDLE DioOpen( LPCSTR Name, DWORD Flag ); Visual Basic Declare Function DioOpen Lib "FbiDio.DLL"( _ ByVal Name As String, _ ByVal Flag As Long _ )As Long Delphi function DioOpen( Name String; Flag DWORD )THandle; stdcall; external 'FbiDio.DLL'; パラメータ Name オープンするデバイス名を指定します Flag オープンフラグを指定します 指定可能な識別子は下記のものから選択します 識別子意味 FBIDIO_FLAG_NORMAL 通常のオープン時に使用するフラグです これを指定すると重複してオープンすることはできません FBIDIO_FLAG_SHARE 1 つのデバイスを複数のプロセス ( アプリケーション ) から重複 ( 共有 ) して制御することを許可するフラグです PCI , PCI U, PCI の場合 本パラメータは無視され 常に FBIDIO_FLAG_SHARE を指定した動作となります 34

35 戻り値 DioOpen 関数が正常に終了した場合には 有効なハンドルが返されます 他の関数は 本関数により取得したハンドルを使用してデバイスの制御を行います オープンに失敗した場合には INVALID_HANDLE_VALUE(FFFFFFFFh) が返されます 備考 FBIDIO_FLAG_SHARE の動作について本フラグを指定することにより 同じデバイスを 2 つ以上のアプリケーションで共有することが可能となります FBIDIO_FLAG_SHARE を指定せずにオープンされているデバイスに対して FBIDIO_FLAG_SHARE を指定したオープンを実行した場合 オープンは失敗します オープン (DioOpen 関数 ) とクローズ (DioClose 関数 ) の実行回数は必ず一致しなければなりません デバイス名についてオープンするにはデバイス名を指定します デバイス名はインタフェースモジュール上のロータリスイッチ (RSW1) の値で決定されるわけではありません OS がインタフェースモジュールを認識した順番により決定されます 使用するインタフェースモジュール枚数やスロット位置の変更等でシステム構成が変化すると割り当てられる名前が変化する場合があります システム構成が変化する環境でご使用になる場合は デバイス名の指定が変更できるようにアプリケーションを作成ください インタフェースモジュール上に実装された RSW1( インタフェースモジュール ID 設定 ) の値を取得し アプリケーションで目的のインタフェースモジュールであるかを判断することができます 詳しくは DioCommonGetPciDeviceInfo 関数の説明をご参照ください CardBus シリーズにつきましては カードバス ID 設定ユーティリティで設定した ID がインタフェースモジュール ID として取得されます 各デバイス名の確認は Windows 2000 以降または Windows Me/98/95 の場合 デバイスマネージャにて確認できます デバイスマネージャに FbiPciDio が追加され 認識された弊社デジタル入出力デバイスが一覧表示されます 一覧の製品型式の横にインタフェースモジュール上のロータリスイッチの値とデバイス名が表示されます DI 入力ユーティリティ (DIUTIL.EXE) DO 出力ユーティリティ (DOUTIL.EXE) でも確認できます Windows NT では DI 入力ユーティリティ (DIUTIL.EXE) DO 出力ユーティリティ (DOUTIL.EXE) にて割り当てられたデバイス名をご確認ください UNICODE 文字列について C 言語 (x86 専用 ) で DioOpen の引数 Name に指定する文字列は LPCTSTR 型として定義していますが UNICODE 文字列には対応しておりません x86 環境でご使用になる場合 使用例に沿って記述してください 35

36 使用例 C 言語 (32bit 用コンパイラ ) HANDLE DeviceHandle; DeviceHandle = DioOpen( FBIDIO1, FBIDIO_FLAG_SHARE); C 言語 (32bit 用コンパイラで UNICODE を定義している場合 ) HANDLE DeviceHandle; DeviceHandle = DioOpen((LPCTSTR) FBIDIO1, FBIDIO_FLAG_SHARE); HANDLE DeviceHandle; char* lpszname = FBIDIO1 ; DeviceHandle = DioOpen((LPCTSTR)lpszName, FBIDIO_FLAG_SHARE); HANDLE DeviceHandle; LPCWSTR UnicodeName = L"FBIDIO1"; 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; DeviceHandle = DioOpen( FBIDIO1, FBIDIO_FLAG_SHARE); Visual Basic Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_SHARE) 36

37 Delphi var Name String; DeviceHandle THandle; Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_SHARE); デバイス名 FBIDIO1 のデバイスを重複オープン許可でオープンします 37

38 2. DioClose 機能 デジタル入出力デバイスをクローズします インタフェースモジュールアクセスのために使用されていた各種リソースの解放を行い 以後のインタフェースモジュールへのアクセスを禁止します 書式 C 言語 INT DioClose( HANDLE DeviceHandle ); Visual Basic Declare Function DioClose Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long _ )As Long Delphi function DioClose ( DeviceHandle Thandle ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 再度 インタフェースモジュールへのアクセスを行う場合にはオープン処理 (DioOpen 関数 ) を呼び出してください インタフェースモジュールクローズ後の各種設定はクリアされます Windows NT/2000 以降ではデバッガの制御下でアプリケーションを実行しているときに無効なハンドルを閉じると 例外が発生します たとえば ハンドルを 2 回閉じるなどを行うと発生します 38

39 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioClose(DeviceHandle); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioClose(DeviceHandle) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioClose(DeviceHandle); end; デバイス名 FBIDIO1 のデバイスのクローズ処理を行います 39

40 3. DioCommonGetPciDeviceInfo 機能 デバイス ID リソース情報 インタフェースモジュール ID(RSW1) 等の情報を取得します 書式 C 言語 INT DioCommonGetPciDeviceInfo ( HANDLE DeviceHandle, PDWORD DeviceID, PDWORD VendorID, PDWORD ClassCode, PDWORD RevisionID, PDWORD BaseAddress0, PDWORD BaseAddress1, PDWORD BaseAddress2, PDWORD BaseAddress3, PDWORD BaseAddress4, PDWORD BaseAddress5, PDWORD SubsystemID, PDWORD SubsystemVendorID, PDWORD InterruptLine, PDWORD BoardID ); Visual Basic Declare Function DioCommonGetPciDeviceInfo Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef DeviceID As Long, _ ByRef VendorID As Long, _ ByRef ClassCode As Long, _ ByRef RevisionID As Long, _ ByRef BaseAddress0 As Long, _ ByRef BaseAddress1 As Long, _ ByRef BaseAddress2 As Long, _ ByRef BaseAddress3 As Long, _ ByRef BaseAddress4 As Long, _ ByRef BaseAddress5 As Long, _ ByRef SubsystemID As Long, _ ByRef SubsystemVendorID As Long, _ ByRef InterruptLine As Long, _ ByRef BoardID As Long _ )As Integer 40

41 Delphi function DioCommonGetPciDeviceInfo ( DeviceHandle Thandle; var DeviceID DWORD; var VendorID DWORD; var ClassCode DWORD; var RevisionID DWORD; var BaseAddress0 DWORD; var BaseAddress1 DWORD; var BaseAddress2 DWORD; var BaseAddress3 DWORD; var BaseAddress4 DWORD; var BaseAddress5 DWORD; var SubsystemID DWORD; var SubsystemVendorID DWORD; var InterruptLine DWORD; var BoardID DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します DeviceID デバイス ID データを格納する変数へのポインタ ( 参照渡し ) を指定します デバイスを区別するための ID です 弊社 PCI 及び CompactPCI バス用 DIO デバイスは 製品型式の数字部分 4 桁が適用されます PCI-2104C ならば 2104(16 進数では 838h) CTP-2725 ならば 2725(16 進数では AA5h) です また 6 桁の型式をもつ製品の場合には上位 4 桁がデバイス ID を示します CSI の場合には 2923(16 進数では B6Bh) となります PCI デバイス CompactPCI デバイス PCI Express デバイス CardBus カードを判別する必要がある場合 SubsystemID を参照して下さい また 128 点 DIO 製品の場合に 同一ボード内の CNA, CNB を判別する必要がある場合 SubsystemID を参照してください デバイス ID から 下記割込みラインまでのデータは PCI Rev2.1 で規定される PCI バス用デバイスが持つデータです インタフェースモジュール ID は弊社のインタフェースモジュール上に実装される RSW1 の値であり PCI バス用デバイスが標準で実装するデータではありません VendorID ベンダ ID データを格納する変数へのポインタ ( 参照渡し ) を指定します 弊社のベンダ ID は 1147h(16 進数 ) です 41

42 ClassCode クラスコードデータを格納する変数へのポインタ ( 参照渡し ) を指定します デバイスのクラスコードが格納されます PCI Rev2.1 で規定されている値が格納されます RevisionID リビジョン ID データを格納する変数へのポインタ ( 参照渡し ) を指定します インタフェースモジュールのリビジョン ID が格納されます BaseAddress0 リソース 0 データを格納する変数へのポインタ ( 参照渡し ) を指定します インタフェースモジュールが占有する I/O または メモリ領域が格納されます BaseAddress1 リソース 1 データを格納する変数へのポインタ ( 参照渡し ) を指定します インタフェースモジュールが占有する I/O または メモリ領域が格納されます BaseAddress2 リソース 2 データを格納する変数へのポインタ ( 参照渡し ) を指定します インタフェースモジュールが占有する I/O または メモリ領域が格納されます BaseAddress3 リソース 3 データを格納する変数へのポインタ ( 参照渡し ) を指定します インタフェースモジュールが占有する I/O または メモリ領域が格納されます BaseAddress4 リソース 4 データを格納する変数へのポインタ ( 参照渡し ) を指定します インタフェースモジュールが占有する I/O または メモリ領域が格納されます BaseAddress5 リソース 5 データを格納する変数へのポインタ ( 参照渡し ) を指定します インタフェースモジュールが占有する I/O または メモリ領域が格納されます SubsystemID サブシステム ID データを格納する変数へのポインタ ( 参照渡し ) を指定します インタフェースモジュールのサブシステム ID が格納されます SubsystemVendorID サブシステムベンダ ID データを格納する変数へのポインタ ( 参照渡し ) を指定します インタフェースモジュールのサブシステム ID が格納されます InterruptLine 割込みラインデータを格納する変数へのポインタ ( 参照渡し ) を指定します インタフェースモジュールが使用する割込みレベルが格納されます 42

43 BoardID インタフェースモジュール ID データを格納する変数へのポインタ ( 参照渡し ) を指定します インタフェースモジュール上に実装されている RSW1 の値が格納されます CardBus シリーズにつきましては カードバス ID 設定ユーティリティで設定した値が格納されます 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 PCI , PCI U PCI の場合 DeviceID VenderID SubSystemID BoardID 以外は不定値が取得されます 使用例 C 言語 #include <windows.h> #include <stdio.h> #include <string.h> #include "FBIDIO.h" #define BOARD_NUM 4 // インタフェースモジュール枚数 typedef struct { ULONG BoardModel; // インタフェースモジュール型式 ULONG RswNumber; // RSW 番号 char DeviceName[16]; // デバイス名 } BOARDINFO, *PBOARDINFO; void main(void) { BOARDINFO Info[BOARD_NUM]; char Name[64]; INT i, j, Count, Ret; HANDLE DeviceHandle; DWORD DeviceID, VendorID, ClassCode, RevisionID; DWORD BaseAddress0, BaseAddress1,BaseAddress2, BaseAddress3; DWORD BaseAddress4, BaseAddress5, SubsystemID, SubsystemVendorID; DWORD InterruptLine, BoardID; // デバイス名を取得する型式 RSW 番号を設定 Info[0].BoardModel = 2726; 43

44 Info[0].RswNumber = 0; Info[0].DeviceName[0] = '\0'; Info[1].BoardModel = 2726; Info[1].RswNumber = 1; Info[1].DeviceName[0] = '\0'; Info[2].BoardModel = 2726; Info[2].RswNumber = 2; Info[2].DeviceName[0] = '\0'; Info[3].BoardModel = 2726; Info[3].RswNumber = 3; Info[3].DeviceName[0] = '\0'; // 関連付け処理 for (i = 1, Count = 0; i < 256; i++) { // インタフェースモジュールオープン wsprintf(name, "FBIDIO%d", i); DeviceHandle = DioOpen(Name,0); if (DeviceHandle == INVALID_HANDLE_VALUE) continue; // インタフェースモジュール情報取得 Ret = DioCommonGetPciDeviceInfo( DeviceHandle, // デバイスハンドル &DeviceID, // デバイス ID &VendorID, // ベンダ ID &ClassCode, // クラスコード &RevisionID, // リビジョン ID &BaseAddress0, // リソース 0 &BaseAddress1, // リソース 1 &BaseAddress2, // リソース 2 &BaseAddress3, // リソース 3 &BaseAddress4, // リソース 4 &BaseAddress5, // リソース 5 &SubsystemID, // サブシステム ID &SubsystemVendorID, // サブシステムベンダ ID &InterruptLine, // 割込みライン &BoardID // インタフェースモジュール ID ); if (Ret!= FBIDIO_ERROR_SUCCESS) { printf("error DioCommonGetPciDeviceInfo\n"); } else { for (j = 0; j < BOARD_NUM; j++) { // インタフェースモジュール型式をデバイス ID で確認 if( DeviceID == Info[j].BoardModel){ // RSW 番号の確認 if (BoardID == Info[j].RswNumber){ 44

45 } } } } // 型式 RSW 番号が一致したのでデバイス名を保存する strcpy(info[j].devicename, Name); Count++; break; // インタフェースモジュールクローズ Ret = DioClose(DeviceHandle); if (Ret!= FBIDIO_ERROR_SUCCESS) { printf("error DioClose\n"); } } // 全インタフェースモジュール検索が終われば終了 if (Count == BOARD_NUM) break; } // 取得したデバイス名を表示 for (i = 0; i < BOARD_NUM; i++) { // 型式の C は後から付けて表示 printf("pci-%dc RSW-%x %s\n", Info[i].BoardModel, Info[i].RswNumber, Info[i].DeviceName); } Visual Basic Public Const BOARD_NUM = 4 Type BOARDINFO BoardModel As Long RswNumber As Long DeviceName As String End Type Private Sub Command1_Click() Dim Info(BOARD_NUM - 1) As BOARDINFO Dim Name As String Dim i, j, Count, Ret As Integer Dim DeviceHandle As Long Dim DeviceID As Long Dim VendorID As Long Dim ClassCode As Long Dim RevisionID As Long Dim BaseAddress0 As Long 45

46 Dim BaseAddress1 As Long Dim BaseAddress2 As Long Dim BaseAddress3 As Long Dim BaseAddress4 As Long Dim BaseAddress5 As Long Dim SubsystemID As Long Dim SubsystemVendorID As Long Dim InterruptLine As Long Dim BoardID As Long ' デバイス名を取得する型式 RSW 番号を設定 Info(0).BoardModel = 2726 Info(0).RswNumber = 0 Info(0).DeviceName = Chr(0) Info(1).BoardModel = 2726 Info(1).RswNumber = 1 Info(1).DeviceName = Chr(0) Info(2).BoardModel = 2726 Info(2).RswNumber = 2 Info(2).DeviceName = Chr(0) Info(3).BoardModel = 2726 Info(3).RswNumber = 3 Info(3).DeviceName = Chr(0) ' 関連付け処理 Count = 0 For i = 1 To 255 ' インタフェースモジュールオープン Name = "FBIDIO" & i & Chr(0) DeviceHandle = DioOpen(Name, 0) If DeviceHandle = &HFFFFFFFF Then GoTo Continue ' インタフェースモジュール情報取得 Ret = DioCommonGetPciDeviceInfo( _ DeviceHandle, DeviceID, VendorID, _ ClassCode, RevisionID, BaseAddress0, _ BaseAddress1, BaseAddress2, BaseAddress3, _ BaseAddress4, BaseAddress5, SubsystemID, _ SubsystemVendorID, InterruptLine, BoardID ) If Ret <> FBIDIO_ERROR_SUCCESS Then Ret = MsgBox("Error DioCommonGetPciDeviceInfo", _ vbokonly + vbcritical, "FBIDIO") Else For j = 0 To (BOARD_NUM - 1) 46

47 End Sub ' インタフェースモジュール型式をデバイス ID で確認 If DeviceID = Info(j).BoardModel Then ' RSW 番号の確認 If BoardID = Info(j).RswNumber Then ' 型式 RSW 番号が一致したのでデバイス名を保存する Info(j).DeviceName = szname Count = Count + 1 Exit For End If End If Next j End If ' インタフェースモジュールクローズ Ret = DioClose(DeviceHandle) If Ret <> FBIDIO_ERROR_SUCCESS Then Ret = MsgBox("Error DioClose", vbokonly + vbcritical, "FBIDIO") End If ' 全インタフェースモジュール検索が終われば終了 If Count = BOARD_NUM Then Exit For Continue Next i ' 取得したデバイス名を表示 ' 型式の C は後から付けて表示 Label1.Caption = "PCI-" & Info(0).BoardModel & "C" & " RSW-" & _ Info(0).RswNumber & " " & ginfo(0).szdevicename Label2.Caption = "PCI-" & Info(1).BoardModel & "C" & " RSW-" & _ Info(1).RswNumber & " " & Info(1).DeviceName Label3.Caption = "PCI-" & Info(2).BoardModel & "C" & " RSW-" & _ Info(2).RswNumber & " " & Info(2).DeviceName Label4.Caption = "PCI-" & Info(3).BoardModel & "C" & " RSW-" & _ Info(3).RswNumber & " " & Info(3).DeviceName 47

48 Delphi type BOARDINFO = record BoardModel Cardinal; RswNumber Cardinal; DeviceName array[0..15] of Char; end; procedure TForm1.Button1Click(Sender TObject); var Info array[0..4] of BOARDINFO; Name array[0..15] of Char; i, j, Count, Ret Integer; DeviceID, VendorID, ClassCode, RevisionID DWORD; BaseAddress0, BaseAddress1, BaseAddress2, BaseAddress3 DWORD; BaseAddress4, BaseAddress5, SubsystemID, SubsystemVendorID DWORD; InterruptLine, BoardID DWORD; begin // デバイス名を取得する型式 RSW 番号を設定 Info[0].BoardModel = 2726; Info[0].RswNumber = 0; Info[0].DeviceName[0] = #0; Info[1].BoardModel = 2726; Info[1].RswNumber = 1; Info[1].DeviceName[0] = #0; Info[2].BoardModel = 2726; Info[2].RswNumber = 2; Info[2].DeviceName[0] = #0; Info[3].BoardModel = 2726; Info[3].RswNumber = 3; Info[3].DeviceName[0] = #0; // 関連付け処理 Count = 0; for i = 1 to 255 do begin // インタフェースモジュールオープン StrPCopy(Name,'FBIDIO'+ IntToStr(i)); DeviceHandle = DioOpen(@Name[0],0); if DeviceHandle = INVALID_HANDLE_VALUE then Continue; // インタフェースモジュール情報取得 Ret = DioCommonGetPciDeviceInfo( DeviceHandle, // デバイスハンドル DeviceID, // デバイス ID 48

49 VendorID, // ベンダ ID ClassCode, // クラスコード RevisionID, // リビジョン ID BaseAddress0, // リソース 0 BaseAddress1, // リソース 1 BaseAddress2, // リソース 2 BaseAddress3, // リソース 3 BaseAddress4, // リソース 4 BaseAddress5, // リソース 5 SubsystemID, // サブシステム ID SubsystemVendorID, // サブシステムベンダ ID InterruptLine, // 割込みライン BoardID // インタフェースモジュール ID ); if Ret <> FBIDIO_ERROR_SUCCESS then MessageDlg('Error DioCommonGetPciDeviceInfo', mterror, [mbok], 0) else begin for j = 0 to 4 do begin // インタフェースモジュール型式をデバイス ID で確認 if DeviceID = Info[j].BoardModel then begin // RSW 番号の確認 if BoardID = Info[j].RswNumber then begin // 型式 RSW 番号が一致したのでデバイス名を保存する StrCopy(Info[j].DeviceName, Name); Count = Count + 1; Break; end; end; end; end; // インタフェースモジュールクローズ Ret = DioClose(DeviceHandle); if Ret <> FBIDIO_ERROR_SUCCESS then MessageDlg('Error DioClose', mterror, [mbok], 0); // 全インタフェースモジュール検索が終われば終了 if Count = 4 then Break; end; // 取得したデバイス名を表示 // 型式の C は後から付けて表示 Label1.Caption = 'PCI-' + IntToStr(Info[0].BoardModel) + 'C' + ' RSW-' + IntToStr(Info[0].RswNumber) + ' ' + Info[0].DeviceName; Label2.Caption = 'PCI-' + IntToStr(Info[1].BoardModel) + 'C' + ' RSW-' + IntToStr(Info[1].RswNumber) 49

50 end; end; + ' ' + Info[1].DeviceName; Label3.Caption = 'PCI-' + IntToStr(Info[2].BoardModel) + 'C' + ' RSW-' + IntToStr(Info[2].RswNumber) + ' ' + Info[2].DeviceName; Label4.Caption = 'PCI-' + IntToStr(Info[3].BoardModel) + 'C' + ' RSW-' + IntToStr(Info[3].RswNumber) + ' ' + Info[3].DeviceName; インタフェースモジュール ID を別々に設定した 4 枚の PCI-2726C の それぞれのデバイス名を検索します 型式の部分を実際にご使用になるインタフェースモジュールの型式に変更ください FBIDIO1~FBIDIO255 に対してオープンを試み オープンが成功した場合 DioCommonGetPciDeviceInfoを実行します そして 取得したデバイス ID と インタフェースモジュール ID で判断します 50

51 4. DioGetDeviceConfig 機能 デバイスがサポートしている機能情報を取得します 書式 C 言語 INT DioGetDeviceConfig ( HANDLE DeviceHandle, PDWORD DeviceConfig ); Visual Basic Declare Function DioGetDeviceConfig Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef DeviceConfig As Long _ )As Integer Delphi function DioGetDeviceConfig ( DeviceHandle Thandle; var DeviceConfig DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します DeviceConfig デバイスがサポートしている機能情報を格納する変数へのポインタ ( 参照渡し ) を指定します 以下のビット構成で格納します ( 該当ビットが 1 で有効 ) bit0 IN1~IN8 サポート bit1 IN9~IN16 サポート bit2 IN17~IN24 サポート bit3 IN25~IN32 サポート bit4 IN33~IN40 サポート bit5 IN41~IN48 サポート bit6 IN49~IN56 サポート bit7 IN57~IN64 サポート bit8 OUT1~OUT8 サポート bit9 OUT9~OUT16 サポート bit10 OUT17~OUT24 サポート bit11 OUT25~OUT32 サポート bit12 OUT33~OUT40 サポート bit13 OUT41~OUT48 サポート 51

52 bit14 OUT49~OUT56 サポート bit15 OUT57~OUT64 サポート bit16 STB1 ACK1 信号 bit17 STB2 ACK2 信号 bit18 IR.IN1 信号 bit19 IR.IN2 信号 bit20 PULS.OUT1 信号 bit21 PULS.OUT2 信号 bit22 汎用 DI1 のみサポート bit23 汎用 DI1~4 bit24 汎用 DI5~8 bit25 汎用 DO1 のみサポート bit26 汎用 DO1~4 bit27 汎用 DO5~8 bit28 低速出力応答 1 bit29 低速出力応答 2 bit30 インターバルタイマ 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 低速出力応答 1/ 低速出力応答 2 について 低速出力応答 1 もしくは低速出力応答 2 が有効 (=1) となっているデバイスでは ハンドシェ ーク出力関数を実行時に STB2 が有効になるまでの固有の時間が異なります 低速出力応答 1 速出力応答 2 内容 0 0 出力データ設定後 30μs 後に STB2 が有効 1 0 出力データ設定後 300μs 後に STB2 が有効 0 1 出力データ設定後 3ms 後に STB2 が有効 DioSetOutputHandShakeConfig 関数でSTB2 の遅延時間を設定した場合 上記の固有の遅延時間 は無効となり 関数で指定した遅延時間が使用されます 52

53 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DWORD DeviceConfig; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetDeviceConfig( DeviceHandle, &DeviceConfig ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim DeviceConfig As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetDeviceConfig( DeviceHandle, DeviceConfig ) Delphi var Ret Integer; Name String; DeviceHandle THandle; DeviceConfig DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetDeviceConfig( DeviceHandle, DeviceConfig ); end; デバイス名 FBIDIO1 のデバイスがサポートしているデバイス機能情報を取得します 53

54 5. DioGetDeviceConfigEx 機能 デバイスがサポートしている機能情報を取得します DioGetDeviceConfigEx は 外部リセット (RSTIN) 入力のマスク機能 および PCI-2162, CTP-2162, CPZ のエッジ検出機能 デジタルフィルタ機能の機能情報に対応しています 書式 C 言語 INT DioGetDeviceConfigEx ( HANDLE DeviceHandle, PDWORD DeviceConfig, PDWORD DeviceConfigEx ); Visual Basic Declare Function DioGetDeviceConfigEx Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef DeviceConfig As Long, _ ByRef DeviceConfigEx As Long _ )As Integer Delphi function DioGetDeviceConfigEx ( DeviceHandle Thandle; var DeviceConfig DWORD; var DeviceConfigEx DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します DeviceConfig デバイスがサポートしている機能情報を格納する変数へのポインタ ( 参照渡し ) を指定します 以下のビット構成で格納します ( 該当ビットが 1 で有効 ) bit0 IN1~IN8 サポート bit1 IN9~IN16 サポート bit2 IN17~IN24 サポート bit3 IN25~IN32 サポート bit4 IN33~IN40 サポート bit5 IN41~IN48 サポート bit6 IN49~IN56 サポート bit7 IN57~IN64 サポート bit8 OUT1~OUT8 サポート 54

55 bit9 OUT9~OUT16 サポート bit10 OUT17~OUT24 サポート bit11 OUT25~OUT32 サポート bit12 OUT33~OUT40 サポート bit13 OUT41~OUT48 サポート bit14 OUT49~OUT56 サポート bit15 OUT57~OUT64 サポート bit16 STB1 ACK1 信号 bit17 STB2 ACK2 信号 bit18 IR.IN1 信号 bit19 IR.IN2 信号 bit20 PULS.OUT1 信号 bit21 PULS.OUT2 信号 bit22 汎用 DI1 のみサポート bit23 汎用 DI1~4 bit24 汎用 DI5~8 bit25 汎用 DO1 のみサポート bit26 汎用 DO1~4 bit27 汎用 DO5~8 bit28 低速出力応答 1 bit29 低速出力応答 2 bit30 インターバルタイマ bit31 拡張情報有無 DeviceConfigEx デバイスがサポートしている拡張機能情報を格納する変数へのポインタ ( 参照渡し ) を指定します 以下のビット構成で格納します ( 該当ビットが 1 で有効 ) DeviceConfig の bit31='1' の場合に有効です bit0 IR1~IR8 エッジ検出機能 bit1 IR9~IR16 エッジ検出機能 bit2 IR17~IR24 エッジ検出機能 bit3 IR25~IR32 エッジ検出機能 bit4 IR33~IR40 エッジ検出機能 bit5 IR41~IR48 エッジ検出機能 bit6 IR49~IR56 エッジ検出機能 bit7 IR57~IR64 エッジ検出機能 bit8~23 将来拡張用 bit24 IRx(x 入力ピン番号 ) のデジタルフィルタ機能 bit25 RSTIN 入力マスク機能 bit26 IR.IN1 IR.IN2 STB1 のデジタルフィルタ機能 bit27~31 将来拡張用 55

56 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 低速出力応答 1/ 低速出力応答 2 について 低速出力応答 1 もしくは低速出力応答 2 が有効 (=1) となっているデバイスでは ハンドシェ ーク出力関数を実行時に STB2 が有効になるまでの固有の時間が異なります 低速出力応答 1 速出力応答 2 内容 0 0 出力データ設定後 30μs 後に STB2 が有効 1 0 出力データ設定後 300μs 後に STB2 が有効 0 1 出力データ設定後 3ms 後に STB2 が有効 DioSetOutputHandShakeConfig 関数でSTB2 の遅延時間を設定した場合 上記の固有の遅延時間 は無効となり 関数で指定した遅延時間が使用されます 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DWORD DeviceConfig; DWORD DeviceConfigEx; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetDeviceConfigEx( DeviceHandle, &DeviceConfig, &DeviceConfigEx); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim DeviceConfig As Long Dim DeviceConfigEx As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetDeviceConfigEx( DeviceHandle, DeviceConfig, DeviceConfigEx ) 56

57 Delphi var Ret Integer; Name String; DeviceHandle THandle; DeviceConfig DWORD; DeviceConfigEx DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); begin Ret = ); end; デバイス名 FBIDIO1 のデバイスがサポートしているデバイス機能情報を取得します 57

58 6. DioInputPoint 機能 任意の点数の入力接点の状態を読み込みます 指定した開始接点番号から 1 接点ずつ INT 型の変数にデータが格納されます データ 1 外部回路 ON 状態データ 0 外部回路 OFF 状態 書式 C 言語 INT DioInputPoint ( HANDLE DeviceHandle, PINT Buffer, DWORD StartNum, DWORD Num ); Visual Basic Declare Function DioInputPoint Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef Buffer As Long, _ ByVal StartNum As Long, _ ByVal Num As Long _ )As Long Delphi function DioInputPoint ( DeviceHandle Thandle; Buffer Pinteger; StartNum DWORD; Num DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Buffer デバイスから読み取ったデータを受け取るバッファを指すポインタ ( 参照渡し ) です StartNum 入力開始接点番号 1~64( インタフェースモジュールがもつ接点数の最大値 ) を指定します DI デバイスの場合はピン IN1 が 1 に対応します DIO デバイス ( 双方向 ) の場合ピン I/O1 が 1 に対応します 58

59 Num 入力接点数を指定します PCI-2470 の場合 入力接点の指定と その指定で入力されるデータは下記のように対応しています IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 OUT1~OUT8 出力状態を読み込みます 出力状態の確認に利用できます 0 出力 OFF 1 出力 ON IN16 IN15 IN14 IN13 IN12 IN11 IN10 IN9 SIG8 SIG7 SIG6 SIG5 SIG4 SIG3 SIG2 SIG1 SIG1~SIG8 は下記のように OUT1~OUT8 の異常検出状況を表します SIG1 0 OUT1 正常 1 OUT1 異常 SIG2 0 OUT2 正常 1 OUT2 異常 SIG3 0 OUT3 正常 1 OUT3 異常 SIG4 0 OUT4 正常 1 OUT4 異常 SIG5 0 OUT5 正常 1 OUT5 異常 SIG6 0 OUT6 正常 1 OUT6 異常 SIG7 0 OUT7 正常 1 OUT7 異常 SIG8 0 OUT8 正常 1 OUT8 異常 59

60 IN24 IN23 IN22 IN21 IN20 IN19 IN18 IN17 SIG8 SIG7 SIG6 SIG5 SIG4 SIG3 SIG2 SIG1 異常検出割込みの要因選択 ( マスク ) 状態を読み込みます SIG1~SIG8 は下記のように OUT1~OUT8 に対応しています 対応するビットが 0 の場合 割込み禁止です 1 の場合 割込み有効です SIG1 OUT1 SIG2 OUT2 SIG3 OUT3 SIG4 OUT4 SIG5 OUT5 SIG6 OUT6 SIG7 OUT7 SIG8 OUT8 IN32 IN31 IN30 IN29 IN28 IN27 IN26 IN IN 汎用入力端子 -IN(+IN 端子が電源 ) の状態を読み込みます 0 OFF 1 ON IN26 以降に対応する機能はありません 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 60

61 使用例 C 言語 INT Ret; HANDLE DeviceHandle; INT Buffer[8]; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioInputPoint( DeviceHandle, &Buffer[0], 16, 8 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Buffer(8) As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioInputPoint( DeviceHandle, Buffer(0), 16, 8 ) Delphi var Ret Integer; Name String; DeviceHandle THandle; Buffer Array[0..7] of Integer; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioInputPoint( 16, 8 ); end; デバイス名 FBIDIO1 のデバイスの接点 16 番に 1 接点 17 番に 0 接点 18 番に 0 接点 19 番に 1 接点 20 番に 0 接点 21 番に 1 接点 22 番に 1 接点 23 番に 0 を出力します 61

62 7. DioInputByte 機能 デジタル入出力デバイスの接点 8 点分のデータを読み込み 1 バイト (8 ビット ) の変数に格納します 書式 C 言語 INT DioInputByte ( HANDLE DeviceHandle, INT No, PBYTE Value ); Visual Basic Declare Function DioInputByte Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByRef Value As Byte _ )As Long Delphi function DioInputByte ( DeviceHandle Thandle; No Integer; var Value Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No 読み込む接点を下記の識別子で指定します FBIDIO_IN1_8 IN1~IN8 の 8 点分のデータを読み込みます FBIDIO_IN9_16 IN9~IN16 の 8 点分のデータを読み込みます FBIDIO_IN17_24 IN17~IN24 の 8 点分のデータを読み込みます FBIDIO_IN25_32 IN25~IN32 の 8 点分のデータを読み込みます FBIDIO_IN33_40 IN33~IN40 の 8 点分のデータを読み込みます FBIDIO_IN41_48 IN41~IN48 の 8 点分のデータを読み込みます FBIDIO_IN49_56 IN49~IN56 の 8 点分のデータを読み込みます FBIDIO_IN57_64 IN57~IN64 の 8 点分のデータを読み込みます Value 読み込まれたデータを格納する変数へのポインタ ( 参照渡し ) を指定します 62

63 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット 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 FBIDIO_IN17_24 IN24 IN23 IN22 IN21 IN20 IN19 IN18 IN17 FBIDIO_IN25_32 IN32 IN31 IN30 IN29 IN28 IN27 IN26 IN25 FBIDIO_IN33_40 IN40 IN39 IN38 IN37 IN36 IN35 IN34 IN33 FBIDIO_IN41_48 IN48 IN47 IN46 IN45 IN44 IN43 IN42 IN41 FBIDIO_IN49_56 IN56 IN55 IN54 IN53 IN52 IN51 IN50 IN49 FBIDIO_IN57_64 IN64 IN63 IN62 IN61 IN60 IN59 IN58 IN57 データ 0 外部回路 OFF 状態 データ 1 外部回路 ON 状態 PCI-2470 の場合 入力接点の指定と その指定で入力されるデータは下記のように対応しています ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_IN1_8 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 OUT1~OUT8 出力状態を読み込みます 出力状態の確認に利用できます 0 出力 OFF 1 出力 ON 63

64 ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_IN9_16 SIG8 SIG7 SIG6 SIG5 SIG4 SIG3 SIG2 SIG1 SIG1~SIG8 は下記のように OUT1~OUT8 の異常検出状況を表します SIG1 0 OUT1 正常 1 OUT1 異常 SIG2 0 OUT2 正常 1 OUT2 異常 SIG3 0 OUT3 正常 1 OUT3 異常 SIG4 0 OUT4 正常 1 OUT4 異常 SIG5 0 OUT5 正常 1 OUT5 異常 SIG6 0 OUT6 正常 1 OUT6 異常 SIG7 0 OUT7 正常 1 OUT7 異常 SIG8 0 OUT8 正常 1 OUT8 異常 ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_IN17_24 SIG8 SIG7 SIG6 SIG5 SIG4 SIG3 SIG2 SIG1 SIG1~SIG8 異常検出割込みの要因選択 ( マスク ) 状態を読み込みます SIG1~SIG8 は下記のように OUT1~OUT8 に対応しています 対応するビットが 0 の場合 割込み禁止です 1 の場合 割込み有効です SIG1 OUT1 SIG2 OUT2 SIG3 OUT3 SIG4 OUT4 SIG5 OUT5 SIG6 OUT6 SIG7 OUT7 SIG8 OUT8 ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_IN25_ IN -IN 汎用入力端子 -IN(+IN 端子が電源 ) の状態を読み込みます 0 OFF 1 ON 64

65 ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_IN33_40 FBIDIO_IN41_48 FBIDIO_IN49_56 未使用 FBIDIO_IN57_64 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE Value; DeviceHandle = DioOpen("FBIDIO1", 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 = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioInputByte( DeviceHandle, FBIDIO_IN1_8, Value ) Delphi var Ret Integer; Name String; DeviceHandle THandle; Value Byte; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioInputByte( DeviceHandle, FBIDIO_IN1_8, Value ); end; デバイス名 FBIDIO1 のデバイスの IN1~IN8 の 1 バイトデータを変数 Value に取得します 65

66 8. DioInputWord 機能 デジタル入出力デバイスの接点 16 点分のデータを読み込み 1 ワード (16 ビット ) の変数に格納します 書式 C 言語 INT DioInputWord ( HANDLE DeviceHandle, INT No, PWORD Value ); Visual Basic Declare Function DioInputWord Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByRef Value As Integer _ )As Long Delphi function DioInputWord ( DeviceHandle Thandle; No Integer; var Value Word ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No 読み込む接点を下記の識別子で指定します FBIDIO_IN1_16 IN1~IN16 の 16 点分のデータを読み込みます FBIDIO_IN17_32 IN17~IN32 の 16 点分のデータを読み込みます FBIDIO_IN33_48 IN33~IN48 の 16 点分のデータを読み込みます FBIDIO_IN49_64 IN49~IN64 の 16 点分のデータを読み込みます Value 読み込まれたデータを格納する変数へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESSが返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 66

67 備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット bit15 bit14 bit13 bit2 bit1 bit0 FBIDIO_IN1_16 IN16 IN15 IN14 IN3 IN2 IN1 FBIDIO_IN17_32 IN32 IN31 IN30 IN19 IN18 IN17 FBIDIO_IN33_48 IN48 IN47 IN46 IN35 IN34 IN33 FBIDIO_IN49_64 IN64 IN63 IN62 IN51 IN50 IN49 データ 0 外部回路 OFF 状態 データ 1 外部回路 ON 状態 PCI-2470 の場合 入力接点の指定と その指定で入力されるデータは下記のように対応してい ます ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 FBIDIO_IN1_16 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 SIG8 SIG7 SIG6 SIG5 SIG4 SIG3 SIG2 SIG1 OUT1~OUT8 出力状態を読み込みます 出力状態の確認に利用できます 0 出力 OFF 1 出力 ON SIG1~SIG8 は下記のように OUT1~OUT8 の異常検出状況を表します SIG1 0 OUT1 正常 1 OUT1 異常 SIG2 0 OUT2 正常 1 OUT2 異常 SIG3 0 OUT3 正常 1 OUT3 異常 SIG4 0 OUT4 正常 1 OUT4 異常 SIG5 0 OUT5 正常 1 OUT5 異常 SIG6 0 OUT6 正常 1 OUT6 異常 SIG7 0 OUT7 正常 1 OUT7 異常 SIG8 0 OUT8 正常 1 OUT8 異常 67

68 ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 SIG8 SIG7 SIG6 SIG5 SIG4 SIG3 SIG2 SIG1 FBIDIO_IN17_32 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit IN SIG1~SIG8 異常検出割込みの要因選択 ( マスク ) 状態を読み込みます SIG1~SIG8 は下記のように OUT1~OUT8 に対応しています 対応するビットが 0 の場合 割込み禁止です 1 の場合 割込み有効です SIG1 OUT1 SIG2 OUT2 SIG3 OUT3 SIG4 OUT4 SIG5 OUT5 SIG6 OUT6 SIG7 OUT7 SIG8 OUT8 -IN 汎用入力端子 -IN(+IN 端子が電源 ) の状態を読み込みます 0 OFF 1 ON ビット bit15 bit14 bit13 bit2 bit1 bit0 FBIDIO_IN33_48 FBIDIO_IN49_64 未使用 68

69 使用例 C 言語 INT Ret; HANDLE DeviceHandle; WORD Value; DeviceHandle = DioOpen("FBIDIO1", 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 = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioInputWord( DeviceHandle, FBIDIO_IN1_16, Value ) Delphi var Ret Integer; Name String; DeviceHandle THandle; Value Word; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioInputWord( DeviceHandle, FBIDIO_IN1_16, Value ); end; デバイス名 FBIDIO1 のデバイスの IN1~IN16 の 1 ワードデータを変数 Value に取得します 69

70 9. DioInputDword 機能 デジタル入出力デバイスから 32 点分のデータを読み込み 1 ダブルワード (32 ビット ) の変数に格納します 書式 C 言語 INT DioInputDword ( HANDLE DeviceHandle, INT No, PDWORD Value ); Visual Basic Declare Function DioInputDword Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByRef Value As Long _ )As Long Delphi function DioInputDword ( DeviceHandle Thandle; No Integer; var Value DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No 読み込む接点を下記の識別子で指定します FBIDIO_IN1_32 IN1~IN32 の 32 点分のデータを読み込みます FBIDIO_IN33_64 IN33~IN64 の 32 点分のデータを読み込みます Value 読み込まれたデータを格納する変数へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 70

71 備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット bit31 bit30 bit29 bit2 bit1 bit0 FBIDIO_IN1_32 IN32 IN31 IN30 IN3 IN2 IN1 FBIDIO_IN33_64 IN64 IN63 IN62 IN35 IN34 IN33 データ 0 外部回路 OFF 状態 データ 1 外部回路 ON 状態 PCI-2470 の場合 入力接点の指定と その指定で入力されるデータは下記のように対応してい ます ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 SIG8 SIG7 SIG6 SIG5 SIG4 SIG3 SIG2 SIG1 FBIDIO_IN1_32 bit23 bit22 bit21 bit20 bit19 bit18 bit17 bit16 SIGM8 SIGM7 SIGM6 SIGM5 SIGM4 SIGM3 SIGM2 SIGM1 bit31 bit30 bit29 bit28 bit27 bit26 bit25 bit IN OUT1~OUT8 出力状態を読み込みます 出力状態の確認に利用できます 0 出力 OFF 1 出力 ON SIG1~SIG8 は下記のように OUT1~OUT8 の異常検出状況を表します SIG1 0 OUT1 正常 1 OUT1 異常 SIG2 0 OUT2 正常 1 OUT2 異常 SIG3 0 OUT3 正常 1 OUT3 異常 SIG4 0 OUT4 正常 1 OUT4 異常 SIG5 0 OUT5 正常 1 OUT5 異常 SIG6 0 OUT6 正常 1 OUT6 異常 SIG7 0 OUT7 正常 1 OUT7 異常 SIG8 0 OUT8 正常 1 OUT8 異常 71

72 SIGM1~SIGM8 異常検出割込みの要因選択 ( マスク ) 状態を読み込みます SIGM1~SIGM8 は下記のように OUT1~OUT8 に対応しています 対応するビットが 0 の場合 割込み禁止です 1 の場合 割込み有効です SIGM1 OUT1 SIGM2 OUT2 SIGM3 OUT3 SIGM4 OUT4 SIGM5 OUT5 SIGM6 OUT6 SIGM7 OUT7 SIGM8 OUT8 -IN 汎用入力端子 -IN(+IN 端子が電源 ) の状態を読み込みます 0 OFF 1 ON ビット bit31 bit30 bit29 bit2 bit1 bit0 FBIDIO_IN33_64 未使用 72

73 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DWORD Value; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioInputDword( DeviceHandle, FBIDIO_IN1_32, &Value ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Value As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioInputDword( DeviceHandle, FBIDIO_IN1_32, Value ) Delphi var Ret Integer; Name String; DeviceHandle THandle; Value DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioInputDword( DeviceHandle, FBIDIO_IN1_32, Value ); end; デバイス名 FBIDIO1 のデバイスの IN1~IN32 の 1 ダブルワードデータを変数 Value に取得します 73

74 10. DioOutputPoint 機能 任意の点数の出力接点の出力を制御します 指定した開始接点番号から 1 接点づつ INT 型の変数に格納されたデータで接点を制御します データ 1 ON データ 0 OFF 書式 C 言語 INT DioOutputPoint ( HANDLE DeviceHandle, PINT Buffer, DWORD StartNum, DWORD Num ); Visual Basic Declare Function DioOutputPoint Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef Buffer As Long, _ ByVal StartNum As Long, _ ByVal Num As Long _ )As Long Delphi function DioOutputPoint ( DeviceHandle Thandle; Buffer Pinteger; StartNum DWORD; Num DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Buffer デバイスへ出力するデータのバッファを指すポインタ ( 参照渡し ) です StartNum 出力開始接点番号 1~64( インタフェースモジュールがもつ接点数の最大値 ) を指定します DO デバイスの場合はピン OUT1 が 1 に対応します DIO デバイス ( 双方向 ) の場合ピン I/O1 が 1 に対応します 74

75 Num 出力接点数を指定します PCI-2470 の場合 出力接点の指定と その指定で出力されるデータは下記のように対応しています OUT9~OUT16 OUT25~OUT32 に対応する機能はありません OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 OUT1~OUT8 の出力を制御します 0 出力 OFF 1 出力 ON OUT16 OUT15 OUT14 OUT13 OUT12 OUT11 OUT10 OUT9 SIG8 SIG7 SIG6 SIG5 SIG4 SIG3 SIG2 SIG1 異常検出割込みの要因選択 ( マスク ) を設定します SIG1~SIG8 は下記のように OUT1~OUT8 に対応しています 対応するビットが 0 の場合 割込み禁止です 1 の場合 割込み有効となります SIG1 OUT1 SIG2 OUT2 SIG3 OUT3 SIG4 OUT4 SIG5 OUT5 SIG6 OUT6 SIG7 OUT7 SIG8 OUT8 PCI-2758A, PCI-2858AL, PCI-2758AM の場合 出力接点の指定と その指定で出力されるデータは下記のように対応しています OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 OUT1~OUT8 の出力を制御します 0 出力 OFF 1 出力 ON 75

76 OUT16 OUT15 OUT14 OUT13 OUT12 OUT11 OUT10 OUT9 OUT8A OUT8C OUT7A OUT7C OUT6A OUT6C OUT5A OUT5C OUT4A OUT4C OUT3A OUT3C OUT2A OUT2C OUT1A OUT1C リードリレー接点 OUT1A,C~OUT8A,C の出力を制御します 0 OUTxA と OUTxC には導通がありません 1 OUTxA と OUTxC が導通します 例 リードリレー OUT1A OUT1C 間の導通を制御するには 出力接点 9 を指定して関数をコールします 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 76

77 使用例 C 言語 INT Ret; HANDLE DeviceHandle; INT Buffer[8]; DeviceHandle = DioOpen("FBIDIO1", 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], 16, 8 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Buffer(8) As Long Name = "FBIDIO1" & 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 Ret = DioOutputPoint( DeviceHandle, Buffer(0), 16, 8 ) 77

78 Delphi var Ret Integer; Name String; DeviceHandle THandle; Buffer Array[0..7] of Integer; begin Name = 'FBIDIO1'; 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; Ret = DioOutputPoint( 16, 8 ); end; デバイス名 FBIDIO1 のデバイスの接点 16 番に 1 接点 17 番に 0 接点 18 番に 0 接点 19 番に 1 接点 20 番に 0 接点 21 番に 1 接点 22 番に 1 接点 23 番に 0 を出力します 78

79 11. DioOutputByte 機能 デジタル入出力デバイスの接点 8 点分を制御します 書式 C 言語 INT DioOutputByte ( HANDLE DeviceHandle, INT No, BYTE Value ); Visual Basic Declare Function DioOutputByte Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByVal Value As Byte _ )As Long Delphi function DioOutputByte ( DeviceHandle Thandle; No Integer; Value Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No データを出力する接点を下記の識別子で指定します FBIDIO_OUT1_8 OUT1~OUT8 の 8 点分のデータを出力します FBIDIO_OUT9_16 OUT9~OUT16 の 8 点分のデータを出力します FBIDIO_OUT17_24 OUT17~OUT24 の 8 点分のデータを出力します FBIDIO_OUT25_32 OUT25~OUT32 の 8 点分のデータを出力します FBIDIO_OUT33_40 OUT33~OUT40 の 8 点分のデータを出力します FBIDIO_OUT41_48 OUT41~OUT48 の 8 点分のデータを出力します FBIDIO_OUT49_56 OUT49~OUT56 の 8 点分のデータを出力します FBIDIO_OUT57_64 OUT57~OUT64 の 8 点分のデータを出力します Value 指定した接点へ出力するデータを指定します 79

80 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 データフォーマット 指定したデータは下記のようにビット毎に接点と対応しています ビット 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 FBIDIO_OUT17_24 OUT24 OUT23 OUT22 OUT21 OUT20 OUT19 OUT18 OUT17 FBIDIO_OUT25_32 OUT32 OUT31 OUT30 OUT29 OUT28 OUT27 OUT26 OUT25 FBIDIO_OUT33_40 OUT40 OUT39 OUT38 OUT37 OUT36 OUT35 OUT34 OUT33 FBIDIO_OUT41_48 OUT48 OUT47 OUT46 OUT45 OUT44 OUT43 OUT42 OUT41 FBIDIO_OUT49_56 OUT56 OUT55 OUT54 OUT53 OUT52 OUT51 OUT50 OUT49 FBIDIO_OUT57_64 OUT64 OUT63 OUT62 OUT61 OUT60 OUT59 OUT58 OUT57 データ 0 OFF データ 1 ON PCI-2470 の場合 出力接点の指定と その指定で出力されるデータは下記のように対応しています ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_OUT1_8 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 OUT1~OUT8 の出力を制御します 0 出力 OFF 1 出力 ON ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_OUT9_16 未使用 80

81 ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_IN17_24 SIG8 SIG7 SIG6 SIG5 SIG4 SIG3 SIG2 SIG1 SIG1~SIG8 異常検出割込みの要因選択 ( マスク ) を設定します SIG1~SIG8 は下記のように OUT1~OUT8 に対応しています 対応するビットが 0 の場合 割込み禁止です 1 の場合 割込み有効となります SIG1 OUT1 SIG2 OUT2 SIG3 OUT3 SIG4 OUT4 SIG5 OUT5 SIG6 OUT6 SIG7 OUT7 SIG8 OUT8 ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_IN25_32 FBIDIO_IN33_40 FBIDIO_IN41_48 未使用 FBIDIO_IN49_56 FBIDIO_IN57_64 81

82 PCI-2758A, PCI-2758AL, PCI-2758AM の場合 出力接点の指定と その指定で出力されるデータは下記のように対応しています ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_OUT1_8 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 OUT1~OUT8 の出力を制御します 0 出力 OFF 1 出力 ON ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_OUT9_16 OUT8A OUT8C OUT7A OUT7C OUT6A OUT6C OUT5A OUT5C OUT4A OUT4C OUT3A OUT3C OUT2A OUT2C OUT1A OUT1C リードリレー接点 OUT1A,C~OUT8A,C の出力を制御します 0 OUTxA と OUTxC には導通がありません 1 OUTxA と OUTxC が導通します ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_IN17_24 FBIDIO_IN25_32 FBIDIO_IN33_40 FBIDIO_IN41_48 未使用 FBIDIO_IN49_56 FBIDIO_IN57_64 82

83 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", 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 = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioOutputByte( DeviceHandle, FBIDIO_OUT1_8, &H12 ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioOutputByte( DeviceHandle, FBIDIO_OUT1_8, $12 ); end; デバイス名 FBIDIO1 のデバイスの OUT2 と OUT5 を ON それ以外は OFF にします 83

84 12. DioOutputWord 機能 デジタル入出力デバイスの接点 16 点分を制御します 書式 C 言語 INT DioOutputWord ( HANDLE DeviceHandle, INT No, WORD Value ); Visual Basic Declare Function DioOutputWord Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByVal Value As Integer _ )As Long Delphi function DioOutputWord ( DeviceHandle Thandle; No Integer; Value Word ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No データを出力する接点を下記の識別子で指定します FBIDIO_OUT1_16 OUT1~OUT16 の 16 点分のデータを出力します FBIDIO_OUT17_32 OUT17~OUT32 の 16 点分のデータを出力します FBIDIO_OUT33_48 OUT33~OUT48 の 16 点分のデータを出力します FBIDIO_OUT49_64 OUT49~OUT64 の 16 点分のデータを出力します Value 指定した接点へ出力するデータを指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 84

85 備考 データフォーマット 指定したデータは下記のようにビット毎に接点と対応しています ビット bit15 bit14 bit13 bit2 bit1 bit0 FBIDIO_OUT1_16 OUT16 OUT15 OUT14 OUT3 OUT2 OUT1 FBIDIO_OUT17_32 OUT32 OUT31 OUT30 OUT19 OUT18 OUT17 FBIDIO_OUT33_48 OUT48 OUT47 OUT46 OUT35 OUT34 OUT33 FBIDIO_OUT49_64 OUT64 OUT63 OUT62 OUT51 OUT50 OUT49 データ 0 OFF データ 1 ON PCI-2470 の場合 出力接点の指定と その指定で出力されるデータは下記のように対応してい ます ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT8 OUT7 OUT6 OUT4 OUT3 OUT2 OUT1 IN1 FBIDIO_OUT1_16 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit OUT1~OUT8 出力状態を読み込みます 出力状態の確認に利用できます 0 出力 OFF 1 出力 ON ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 SIG8 SIG7 SIG6 SIG5 SIG4 SIG3 SIG2 SIG1 FBIDIO_OUT17_32 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit SIG1~SIG8 異常検出割込みの要因選択 ( マスク ) 状態を読み込みます SIG1~SIG8 は下記のように OUT1~OUT8 に対応しています 対応するビットが 0 の場合 割込み禁止です 1 の場合 割込み有効です SIG1 OUT1 SIG2 OUT2 SIG3 OUT3 SIG4 OUT4 SIG5 OUT5 SIG6 OUT6 SIG7 OUT7 SIG8 OUT8 ビット bit15 bit14 bit13 bit2 bit1 bit0 FBIDIO_OUT33_48 FBIDIO_OUT49_64 未使用 85

86 PCI-2758A, PCI-2758AL, PCI-2758AM の場合 出力接点の指定と その指定で出力されるデー タは下記のように対応しています ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT8 OUT7 OUT6 OUT4 OUT3 OUT2 OUT1 IN1 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 FBIDIO_OUT1_16 OUT8A OUT8C OUT7A OUT7C OUT6A OUT6C bit0~bit7 で OUT1~OUT8 の出力を制御します 0 出力 OFF 1 出力 ON OUT5A OUT5C OUT4A OUT4C OUT3A OUT3C bit8~bit15 リードリレー接点 OUT1A,C~OUT8A,C の出力を制御します 0 OUTxA と OUTxC には導通がありません 1 OUTxA と OUTxC が導通します OUT2A OUT2C OUT1A OUT1C ビット bit15 bit14 bit13 bit2 bit1 bit0 FBIDIO_OUT17_32 FBIDIO_OUT33_48 FBIDIO_OUT49_64 未使用 86

87 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", 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 = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioOutputWord( DeviceHandle, FBIDIO_OUT1_16, &H1234 ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioOutputWord( DeviceHandle, FBIDIO_OUT1_16, $1234 ); end; デバイス名 FBIDIO1 のデバイスの OUT3 OUT5 OUT6 OUT10 OUT13 を ON それ以外を OFF にします 87

88 13. DioOutputDword 機能 デジタル入出力デバイスの接点 32 点分を制御します 書式 C 言語 INT DioOutputDword ( HANDLE DeviceHandle, INT No, DWORD Value ); Visual Basic Declare Function DioOutputDword Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByVal Value As Long _ )As Long Delphi function DioOutputDword ( DeviceHandle Thandle; No Integer; Value DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No データを出力する接点を下記の識別子で指定します FBIDIO_OUT1_32 OUT1~OUT32 の 32 点分のデータを出力します FBIDIO_OUT33_64 OUT33~OUT64 の 32 点分のデータを出力します Value 指定した接点へ出力するデータを指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 88

89 備考 データフォーマット 指定したデータは下記のようにビット毎に接点と対応しています ビット bit31 bit30 bit29 bit2 bit1 bit0 FBIDIO_OUT1_32 OUT32 OUT31 OUT30 OUT3 OUT2 OUT1 FBIDIO_OUT33_64 OUT64 OUT63 OUT62 OUT35 OUT34 OUT33 データ 0 外部回路 OFF 状態 データ 1 外部回路 ON 状態 PCI-2470 の場合 入力接点の指定と その指定で入力されるデータは下記のように対応してい ます ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit FBIDIO_OUT1_32 bit23 bit22 bit21 bit20 bit19 bit18 bit17 bit16 SIGM8 SIGM7 SIGM6 SIGM5 SIGM4 SIGM3 SIGM2 SIGM1 bit31 bit30 bit29 bit28 bit27 bit26 bit25 bit OUT1~OUT8 出力状態を読み込みます 出力状態の確認に利用できます 0 出力 OFF 1 出力 ON SIGM1~SIGM8 異常検出割込みの要因選択 ( マスク ) 状態を読み込みます SIGM1~SIGM8 は下記のように OUT1~OUT8 に対応しています 対応するビットが 0 の場合 割込み禁止です 1 の場合 割込み有効です SIGM1 OUT1 SIGM2 OUT2 SIGM3 OUT3 SIGM4 OUT4 SIGM5 OUT5 SIGM6 OUT6 SIGM7 OUT7 SIGM8 OUT8 ビット bit31 bit30 bit29 bit2 bit1 bit0 FBIDIO_OUT33_64 未使用 89

90 PCI-2758A, PCI-2758AL, PCI-2758AM の場合 出力接点の指定と その指定で出力されるデー タは下記のように対応しています ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 OUT8A OUT7A OUT6A OUT5A OUT4A OUT3A OUT2A OUT1A FBIDIO_OUT1_32 OUT8C OUT7C OUT6C OUT5C OUT4C OUT3C OUT2C OUT1C bit23 bit22 bit21 bit20 bit19 bit18 bit17 bit bit31 bit30 bit29 bit28 bit27 bit26 bit25 bit bit0~bit7 で OUT1~OUT8 の出力を制御します 0 出力 OFF 1 出力 ON bit8~bit15 リードリレー接点 OUT1A,C~OUT8A,C の出力を制御します 0 OUTxA と OUTxC には導通がありません 1 OUTxA と OUTxC が導通します bit16~bit31 未使用 ビット bit31 bit30 bit29 bit2 bit1 bit0 FBIDIO_OUT33_64 未使用 90

91 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioOutputDword( DeviceHandle,FBIDIO_OUT1_32, 0x ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioOutputDword( DeviceHandle, FBIDIO_OUT1_32, &H ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioOutputDword( DeviceHandle, FBIDIO_OUT1_32, $ ); end; デバイス名 FBIDIO1 のデバイスの OUT を ON それ以外を OFF にします 91

92 14. DioGetAckStatus 機能 デジタル入出力デバイスの ACK2 端子の状態 ACK2 レジスタの状態 STB2 端子の状態をアプリケーションの領域に格納します 書式 C 言語 INT DioGetAckStatus ( HANDLE DeviceHandle, PBYTE AckStatus ); Visual Basic Declare Function DioGetAckStatus Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef AckStatus As Byte _ )As Long Delphi function DioGetAckStatus ( DeviceHandle Thandle; var AckStatus Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します 92

93 AckStatus ACK2 端子の状態等を格納する変数へのポインタ ( 参照渡し ) を指定します ACK2 端子の状態 ACK2 レジスタの状態 STB2 端子の状態が下記のビット構成で格納されま す bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 ACK2 ACKR2 STB2 未使用 未使用 未使用 未使用 IR.IN2 ACK2 ACK2 端子の状態 0 = Low 1 = High ACKR2 ACK2 レジスタの状態 0 = ACK2 が Low になったことを示します (ACK2 端子が High になってもステータスを保持します ) 1 = ACK2 が High のまま変化がないことを示します STB2 をセット ( Low ) することで ACK2 レジスタはクリア ( 1 ) されます STB2 STB2 端子の状態 0 = Low 1 = High IR.IN2 IR.IN2 端子の状態 0 = Low 1 = High 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 DioSetStbPulseCommand 関数と併用してハンドシェーク出力を行う事ができます 制御信号 (STB ACK) を使用したハンドシェーク出力の説明をインタフェースモジュールの USER'S MANUAL に記載していますので そちらも参照してください 93

94 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE AckStatus; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetAckStatus( DeviceHandle, &AckStatus ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim AckStatus As Byte Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetAckStatus( DeviceHandle, AckStatus ) Delphi var Ret Integer; Name String; DeviceHandle THandle; AckStatus Byte; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetAckStatus( DeviceHandle, AckStatus ); end; デバイス名 FBIDIO1 のデバイスから 制御信号の状態を変数 AckStatus に取得します 94

95 15. DioSetAckPulseCommand 機能 デジタル入出力デバイスの ACK1 出力制御 汎用パルス出力 PULS.OUT1 の出力制御を行います 書式 C 言語 INT DioSetAckPulseCommand ( HANDLE DeviceHandle, BYTE Command ); Visual Basic Declare Function DioSetAckPulseCommand Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal Command As Byte _ )As Long Delphi function DioSetAckPulseCommand ( DeviceHandle Thandle; Command Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Command 下記のビットの組み合わせで制御を行います bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 ACK11 ACK10 PO12 PO11 PO10 未使用 未使用 未使用 ACK1 出力制御 ACK11 ACK10 変化なし 0 0 ACK1 端子をクリア ( Low High ) 0 1 ACK1 端子をセット ( High Low ) 1 0 ( その他の設定値は無効です ) 95

96 汎用パルス出力 (PULS.OUT1) 制御 PO12 PO11 PO10 変化なし PULS.OUT1 端子を High にする PULS.OUT1 端子を Low にする PULS.OUT1 端子から Low パルスを出力 ( その他の設定値は無効です ) 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 DioGetStbStatus 関数と併用してハンドシェーク入力を行う事ができます 制御信号 (STB ACK) を使用したハンドシェーク入力の説明をインタフェースモジュールの USER'S MANUAL に記載していますので そちらも参照してください 96

97 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioSetAckPulseCommand( DeviceHandle, 0x80 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioSetAckPulseCommand( DeviceHandle, &H80 ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioSetAckPulseCommand( DeviceHandle, $80 ); end; デバイス名 FBIDIO1 のデバイスの ACK1 端子をセットします 97

98 16. DioGetStbStatus 機能 デジタル入出力デバイスの STB1 端子の状態 STB1 レジスタの状態 ACK1 端子の状態をアプリケーションの領域に格納します 書式 C 言語 INT DioGetStbStatus ( HANDLE DeviceHandle, PBYTE AckStatus ); Visual Basic Declare Function DioGetStbStatus Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef AckStatus As Byte _ )As Long Delphi function DioGetStbStatus ( DeviceHandle Thandle; var AckStatus Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します 98

99 StbStatus STB1 端子の状態等を格納する変数へのポインタ ( 参照渡し ) を指定します bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 STB1 STBR1 ACK1 LF 未使用 未使用 未使用 IR.IN1 STB1 STB1 端子の状態 0 = Low 1 = High STBR1 STB1 レジスタの状態 0 = STB1 端子が Low になったことを示します (STB1 端子が High になってもステータスを保持します ) 1 = STB1 端子が High のまま変化がないことを示します ACK1 をセット ( Low ) することで STB1 レジスタはクリア ( 1 ) されます ACK1 LF ACK1 端子の状態 0 = Low 1 = High 入力ラッチ機能の状態 0 = データラッチしていない 1 = データラッチしている IR.IN1 IR.IN1 端子の状態 0 = Low 1 = High 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 DioSetAckPulseCommand 関数と併用してハンドシェーク入力を行う事ができます 制御信号 (STB ACK) を使用したハンドシェーク入力の説明をインタフェースモジュールの USER'S MANUAL に記載していますので そちらも参照してください 99

100 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE StbStatus; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetStbStatus( DeviceHandle, &StbStatus ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim StbStatus As Byte Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetStbStatus( DeviceHandle, StbStatus ) Delphi var Ret Integer; Name String; DeviceHandle THandle; StbStatus Byte; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetStbStatus( DeviceHandle, StbStatus ); end; デバイス名 FBIDIO1 のデバイスから 制御信号の状態を変数 pbstbstatus に取得します 100

101 17. DioSetStbPulseCommand 機能 デジタル入出力デバイスの STB2 出力 汎用パルス PULS.OUT2 出力を制御します 書式 C 言語 INT DioSetStbPulseCommand ( HANDLE DeviceHandle, BYTE Command ); Visual Basic Declare Function DioSetStbPulseCommand Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal Command As Byte _ )As Long Delphi function DioSetStbPulseCommand ( DeviceHandle Thandle; Command Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Command 下記のビットの組み合わせで制御を行います bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 STB21 STB20 PO22 PO21 PO20 未使用 未使用 未使用 STB2 出力制御 STB21 STB20 変化なし 0 0 STB2 端子をクリア ( Low High ) 0 1 STB2 端子をセット ( High Low ) 1 0 ( その他の設定値は無効です ) 101

102 汎用パルス出力 (PULS.OUT2) 制御 PO22 PO21 PO20 変化なし PULS.OUT2 端子を High にする PULS.OUT2 端子を Low にする PULS.OUT2 端子から Low パルスを出力 ( その他の設定値は無効です ) 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 DioGetAckStatus 関数と併用してハンドシェーク出力を行う事ができます 制御信号 (STB ACK) を使用したハンドシェーク出力の説明をインタフェースモジュールの USER'S MANUAL に記載していますので そちらも参照してください 102

103 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioSetStbPulseCommand( DeviceHandle, 0x80 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioSetStbPulseCommand( DeviceHandle, &H80 ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioSetStbPulseCommand( DeviceHandle, $80 ); end; デバイス名 FBIDIO1 のデバイスの STB2 端子をセットします 103

104 18. DioInputUniversalPoint 機能 汎用入力端子の状態を読み込みます PCI バス製品 CardBus 製品に汎用入出力端子はありません 書式 C 言語 INT DioInputUniversalPoint ( HANDLE DeviceHandle, PDWORD UniversalPoint ); Visual Basic Declare Function DioInputUniversalPoint Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef UniversalPoint As Long _ )As Long Delphi function DioInputUniversalPoint ( DeviceHandle Thandle; var UniversalPoint DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します UniversalPoint 汎用入力端子の状態を格納する変数へのポインタ ( 参照渡し ) を指定します 取得したデータは下記のようにビット毎に汎用入力端子と対応しています bit31~9 bit8 bit7 bit2 bit1 bit0 未使用 PWR.IN1 DI8 DI3 DI2 DI1 データ 0 外部回路 OFF 状態データ 1 外部回路 ON 状態 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 104

105 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DWORD UniversalPoint; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioInputUniversalPoint( DeviceHandle, &UniversalPoint ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim UniversalPoint As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioInputUniversalPoint( DeviceHandle, UniversalPoint ) Delphi var Ret Integer; Name String; DeviceHandle THandle; UniversalPoint DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioInputUniversalPoint( DeviceHandle, UniversalPoint ); end; デバイス名 FBIDIO1 のデバイスの汎用入力端子状態を読み込みます 105

106 19. DioOutputUniversalPoint 機能 汎用出力端子の出力を制御します PCI バス製品 CardBus 製品に汎用入出力端子はありません 書式 C 言語 INT DioOutputUniversalPoint ( HANDLE DeviceHandle, DWORD UniversalPoint ); Visual Basic Declare Function DioOutputUniversalPoint Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal UniversalPoint As Long _ )As Long Delphi function DioOutputUniversalPoint ( DeviceHandle Thandle; UniversalPoint DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します UniversalPoint 汎用出力端子の出力データを指定します 出力データは下記のようにビット毎に汎用出力端子と対応しています bit31~8 bit7 bit2 bit1 bit0 未使用 DO8 DO3 DO2 DO1 データ 0 OFF データ 1 ON 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 106

107 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioOutputUniversalPoint( DeviceHandle, 0x80 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioOutputUniversalPoint( DeviceHandle, &H80 ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioOutputUniversalPoint( DeviceHandle, $80 ); end; デバイス名 FBIDIO1 のデバイスの汎用出力端子 DO8 を ON それ以外は OFF にします 107

108 20. DioSetLatchStatus 機能 デジタル入出力デバイスの 入力状態ラッチ回路の接続を設定します ラッチ回路の接続を指定すると STB1 端子のセットで入力データをラッチ ( 保持 ) することができます STB1 ACK1 端子を使用したハンドシェーク入力を行う場合に 信頼度を向上させることができます 書式 C 言語 INT DioSetLatchStatus ( HANDLE DeviceHandle, BYTE LatchStatus ); Visual Basic Declare Function DioSetLatchStatus Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal LatchStatus As Byte _ )As Integer Delphi function DioSetLatchStatus ( DeviceHandle Thandle; LatchStatus Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します LatchStatus 入力状態ラッチ回路の接続状態を設定するデータを格納します bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 PORT7 PORT6 PORT5 PORT4 PORT3 PORT2 PORT1 PORT0 0 = 無効 1 = 有効 PORT0 IN1~IN8 PORT1 IN9~IN16 PORT2 IN17~IN24 PORT3 IN25~IN32 PORT4 IN33~IN40 PORT5 IN41~IN48 PORT6 IN49~IN56 PORT7 IN57~IN64 108

109 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioSetLatchStatus( DeviceHandle, 0x52 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioSetLatchStatus( DeviceHandle, &H52 ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioSetLatchStatus( DeviceHandle, $52 ); end; デバイス名 FBIDIO1 のデバイスの入力状態ラッチ回路接続状態を PORT1,4,6 に設定します 109

110 21. DioGetLatchStatus 機能 デジタル入出力デバイスの 入力状態ラッチ回路の接続状態を取得します ラッチ回路の接続を指定すると STB1 端子のセットで入力データをラッチ ( 保持 ) することができます STB1 ACK1 端子を使用したハンドシェーク入力を行う場合に 信頼度を向上させることができます 書式 C 言語 INT DioGetLatchStatus ( HANDLE DeviceHandle, PBYTE LatchStatus ); Visual Basic Declare Function DioGetLatchStatus Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef LatchStatus As Byte _ )As Integer Delphi function DioGetLatchStatus ( DeviceHandle Thandle; var LatchStatus Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します LatchStatus 入力状態ラッチ回路の接続状態を格納する変数へのポインタ ( 参照渡し ) を指定します bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 PORT7 PORT6 PORT5 PORT4 PORT3 PORT2 PORT1 PORT0 0 = 無効 1 = 有効 PORT0 IN1~IN8 PORT1 IN9~IN16 PORT2 IN17~IN24 PORT3 IN25~IN32 PORT4 IN33~IN40 PORT5 IN41~IN48 PORT6 IN49~IN56 PORT7 IN57~IN64 110

111 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE LathchStatus; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetLatchStatus( DeviceHandle, &LathchStatus ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim LathchStatus As Byte Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetLatchStatus( DeviceHandle, LatchStatus ) Delphi var Ret Integer; Name String; DeviceHandle THandle; LathchStatus Byte; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetLatchStatus( DeviceHandle, LatchStatus ); end; デバイス名 FBIDIO1 のデバイスの入力状態ラッチ回路接続状態を 変数 LatchStatus に格納します 111

112 22. DioSetRstinMask 機能 デジタル入出力デバイスの外部リセット (RSTIN) 入力のマスクを設定します 本関数は 外部リセットマスク機能を持った製品の専用関数です 外部リセットマスクの有無については DioGetDeviceConfigEx 関数にて確認することができます 書式 C 言語 INT DioSetRstinMask ( HANDLE DeviceHandle, DWORD RstinMask ); Visual Basic Declare Function DioSetRstinMask Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal RstinMask As Long _ )As Integer Delphi function DioSetRstinMask ( DeviceHandle Thandle; RstinMask DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します RstinMask RSTIN のマスク / アンマスクを設定するデータを指定します 値内容 0 RSTIN 入力のマスクが無効 (RSTIN 入力でリセットが発生します ) FBIDIO_RSTIN_MASK RSTIN 入力のマスクが有効 (RSTIN 入力してもリセットが発生しません ) 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 112

113 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioSetRstinMask( DeviceHandle, FBIDIO_RSTIN_MASK ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioSetRstinMask( DeviceHandle, FBIDIO_RSTIN_MASK ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioSetRstinMask( DeviceHandle, FBIDIO_RSTIN_MASK ); end; デバイス名 FBIDIO1 のデバイスの RSTIN のマスクを有効に設定します 113

114 23. DioGetRstinMask 機能 デジタル入出力デバイスの外部リセット (RSTIN) 入力のマスク機能に対する設定値を取得します 本関数は 外部リセット入力のマスク機能を持った製品の専用関数です 外部リセットマスクの有無については DioGetDeviceConfigEx 関数にて確認することができます 書式 C 言語 INT DioGetRstinMask ( HANDLE DeviceHandle, PDWORD RstinMask ); Visual Basic Declare Function DioGetRstinMask Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef RstinMask As Long _ )As Integer Delphi function DioGetRstinMask ( DeviceHandle Thandle; var RstinMask DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します RstinMask RSTIN のマスク / アンマスクの状態を格納する変数へのポインタ ( 参照渡し ) を指定します 関数が正常に終了すると RstinMask には下記の値が格納されます 値内容 0 RSTIN 入力のマスクが無効 (RSTIN 入力でリセットが発生します ) FBIDIO_RSTIN_MASK RSTIN 入力のマスクが有効 (RSTIN 入力してもリセットが発生しません ) 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 114

115 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DWORD RstinMask; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetRstinMask( DeviceHandle, &RstinMask); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim RstinMask As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetRstinMask( DeviceHandle, RstinMask ) Delphi var Ret Integer; Name String; DeviceHandle THandle; RstinMask DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetRstinMask( DeviceHandle, RstinMask ); end; デバイス名 FBIDIO1 のデバイスの RSTIN マスク状態を 変数 RstinMask へ格納します 115

116 24. DioGetResetInStatus 機能 デジタル入出力デバイスの 外部リセット入力信号の状態を取得します 書式 C 言語 INT DioGetResetInStatus ( HANDLE DeviceHandle, PBYTE ResetInStatus ); Visual Basic Declare Function DioGetResetInStatus Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef ResetInStatus As Byte _ )As Integer Delphi function DioGetResetInStatus ( DeviceHandle Thandle; var ResetInStatus Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します ResetInStatus 外部リセット入力信号の状態を格納する変数へのポインタ ( 参照渡し ) を指定します 0 = リセット入力無効 1 = リセット入力有効 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 外部リセット信号が有効の間 (ResetInStatus = 1) は 出力 及び割り込みマスク 要因等の設定をすることができません 外部リセット信号入力でリセットされた場合 DioGetResetInStatus でリセット入力信号が無効になったことを確認してからインタフェースモジュールの再設定を行ってください 116

117 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE ResetInStatus; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetResetInStatus( DeviceHandle, &ResetInStatus ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim ResetInStatus As Byte Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetResetInStatus( DeviceHandle, ResetInStatus ) Delphi var Ret Integer; Name String; DeviceHandle THandle; ResetInStatus Byte; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetResetInStatus( DeviceHandle, ResetInStatus ); end; デバイス名 FBIDIO1 のデバイスの外部リセット入力信号の状態を変数 ResetInStatus に取得します 117

118 25. DioGetBackGroundUseTimer 機能 バックグランド処理でインタフェースモジュール上のタイマを使用するか パソコンのタイマを使用するかの設定情報を取得します 書式 C 言語 INT DioGetBackGroundUseTimer ( HANDLE DeviceHandle, PINT Use ); Visual Basic Declare Function DioGetBackGroundUseTimerLib Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef Use As Long _ )As Long Delphi function DioGetBackGroundUseTimer ( DeviceHandle Thandle; Use Pinteger ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Use バックグランド処理にインタフェースモジュール上のタイマを使用するか パソコンのタイマを使用するかの設定情報を取得する変数へのポインタ ( 参照渡し ) を指定します 取得されたデータは下記の設定に対応しています 0 パソコンのタイマを使用します 1(0 以外 ) インタフェースモジュール上のタイマを使用します インタフェースモジュール上のタイマを使用する場合 DioSetTimerConfig 関数 DioGetTimerConfig 関数 DioGetTimerCount 関数を使用できません 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 118

119 使用例 C 言語 INT Ret; HANDLE DeviceHandle; INT Use; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetBackGroundUseTimer( DeviceHandle, &Use ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Use As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetBackGroundUseTimer( DeviceHandle, Use ) Delphi var Ret Integer; Name String; DeviceHandle THandle; Use Integer; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetBackGroundUseTimer( DeviceHandle, Use ); end; デバイス名 FBIDIO1 のデバイスのバックグランド処理でインタフェースモジュール上のタイマを使用するか パソコンのタイマを使用するかの設定情報を Use に取得します 119

120 26. DioSetBackGroundUseTimer 機能 バックグランド処理でインタフェースモジュール上のタイマを使用するか パソコンのタイマを使用するかを設定します 書式 C 言語 INT DioSetBackGroundUseTimer ( HANDLE DeviceHandle, INT Use ); Visual Basic Declare Function DioSetBackGroundUseTimer Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal Use As Long _ )As Long Delphi function DioSetBackGroundUseTimer ( DeviceHandle Thandle; Use Integer ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Use バックグランド処理にインタフェースモジュール上のタイマを使用するか パソコンのタイマを使用するかの設定情報を取得する変数へのポインタ ( 参照渡し ) を指定します 取得されたデータは下記の設定に対応しています 0 パソコンのタイマを使用します 1(0 以外 ) インタフェースモジュール上のタイマを使用します インタフェースモジュール上のタイマを使用する場合 DioSetTimerConfig 関数 DioGetTimerConfig 関数 DioGetTimerCount 関数を使用できません PCI , PCI U, PCI の場合 0 を指定することはできません 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 120

121 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioSetBackGroundUseTimer( DeviceHandle, 1 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioSetBackGroundUseTimer( DeviceHandle, 1 ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioSetBackGroundUseTimer( DeviceHandle, 1 ); end; デバイス名 FBIDIO1 のデバイスのバックグランド処理で使用するタイマの設定を行います 121

122 27. DioSetBackGround 機能 バックグランド処理 ( 関数名に Back が付加されている関数による処理 ) の接点番号 接点数 処理回数を設定します バックグランド処理を行う前に本関数で設定が必要です 書式 C 言語 HANDLE DioSetBackGround ( HANDLE DeviceHandle, DWORD StartPoint, DWORD PointNum, DWORD ValueNum, DWORD Cycle, DWORD Count, DWORD Option ); Visual Basic Declare Function DioSetBackGround Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal StartPoint As Long, _ ByVal PointNum As Long, _ ByVal ValueNum As Long, _ ByVal Cycle As Long, _ ByVal Count As Long, _ ByVal Option As Long _ )As Long Delphi function DioSetBackGround ( DeviceHandle Thandle; StartPoint DWORD; PointNum DWORD; ValueNum DWORD; Cycle DWORD; Count DWORD; Option DWORD ) THandle; stdcall; external 'FbiDio.DLL'; 122

123 パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します StartPoint バックグランド入力または出力 監視を行う開始接点番号を指定します DI デバイスの場合はピン IN1 が 1 に対応します DO デバイスの場合はピン OUT1 が 1 に対応します DIO デバイス ( 双方向 ) の場合ピン I/O1 が 1 に対応します PointNum バックグランド入力または出力を行う接点数を指定します ValueNum 1 接点に割り当てるバッファ数 Cycle バックグランド処理周期 / 監視分解能を指定します 単位 ms 1ms 以上 1ms 単位で設定可能 Count 処理回数です 0 を指定するとコールしたバックグランド処理は DioStopBackGround 関数をコールするまで繰り返し処理を行います 0 指定はバックグランド出力でのみ使用可能です Option 処理オプション 将来拡張用です 0 を指定します 戻り値 DioSetBackGround 関数は処理が正常終了しますと バックグランド処理ハンドルを返します 設定に失敗した場合には INVALID_HANDLE_VALUE(FFFFFFFFh) が返されます 123

124 使用例 C 言語 INT Ret; HANDLE DeviceHandle; HANDLE BackgroundHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 10, 0 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim BackgroundHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 10, 0 ) Delphi var Ret Integer; Name String; DeviceHandle THandle; BackgroundHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 10, 0 ); end; デバイス名 FBIDIO1 のデバイスの接点 1 番から接点 5 番に対して 1 接点に割り当てるバッファ数 2 周期 100ms 回数 10 回 のバックグランド処理を行うための設定を行います 124

125 28. DioFreeBackGround 機能 DioSetBackGround で設定したバックグランド処理の設定を解放します バックグランド処理を行う必要がなくなった時点で必ず本関数で設定を解放してください バックグランド処理実行中の場合は その処理を停止させ設定を解放します 書式 C 言語 INT DioFreeBackGround ( HANDLE DeviceHandle, HANDLE BackGroundHandle ); Visual Basic Declare Function DioFreeBackGround Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal BackGroundHandle As Long _ )As Long Delphi function DioFreeBackGround ( DeviceHandle Thandle; BackGroundHandle Thandle ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します BackGroundHandle DioSetBackGround 関数で取得したバックグランド処理ハンドルを指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 125

126 使用例 C 言語 INT Ret; HANDLE DeviceHandle; HANDLE BackgroundHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 10, 0 ); Ret = DioFreeBackGround( DeviceHandle, BackGroundHandle ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim BackgroundHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 10, 0 ) Ret = DioFreeBackGround( DeviceHandle, BackGroundHandle ) 126

127 Delphi var Ret Integer; Name String; DeviceHandle THandle; BackgroundHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 10, 0 ); Ret = DioFreeBackGround( DeviceHandle, BackGroundHandle ); end; デバイス名 FBIDIO1 のデバイスの BackGroundHandle で表されるバックグランド処理の設定を解放します 127

128 29. DioStopBackGround 機能 バックグランド処理 ( 関数名に Back が付加されている関数による処理 ) を停止します 停止したいバックグランド処理ハンドル (DioSetBackGround 関数で取得 ) を指定して処理を停止させます 書式 C 言語 INT DioStopBackGround ( HANDLE DeviceHandle, HANDLE BackGroundHandle ); Visual Basic Declare Function DioStopBackGround Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal BackGroundHandle As Long _ )As Long Delphi function DioStopBackGround ( DeviceHandle Thandle; BackGroundHandle Thandle ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します BackGroundHandle DioSetBackGround 関数で取得したバックグランド処理ハンドルを指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 128

129 使用例 C 言語 INT Ret; HANDLE DeviceHandle; HANDLE BackgroundHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 10, 0 ); Ret = DioStopBackGround( DeviceHandle, BackGroundHandle ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim BackgroundHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 10, 0 ) Ret = DioStopBackGround( DeviceHandle, BackGroundHandle ) 129

130 Delphi var Ret Integer; Name String; DeviceHandle THandle; BackgroundHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 10, 0 ); Ret = DioStopBackGround( DeviceHandle, BackGroundHandle ); end; デバイス名 FBIDIO1 のデバイスの BackGroundHandle で表されるバックグランド処理を停止させます 130

131 30. DioGetBackGroundStatus 機能 バックグランド処理 ( 関数名に Back が付加されている関数による処理 ) の設定情報 実行状態を取得します 情報を取得したいバックグランド処理ハンドル (DioSetBackGround 関数で取得 ) を指定します 書式 C 言語 INT DioGetBackGroundStatus ( HANDLE DeviceHandle, HANDLE BackGroundHandle, PINT StartPoint, PINT PointNum, PINT ValueNum, PINT Cycle, PINT Count, PINT Option, PINT Execute, PINT ExecCount, PINT BufferOffset, PINT Over ); Visual Basic Declare Function DioGetBackGroundStatus Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal BackGroundHandle As Long, _ ByRef StartPoint As Long, _ ByRef PointNum As Long, _ ByRef ValueNum As Long, _ ByRef Cycle As Long, _ ByRef Count As Long, _ ByRef Option As Long, _ ByRef Execute As Long, _ ByRef ExecCount As Long, _ ByRef BufferOffset As Long, _ ByRef Over As Long _ )As Long 131

132 Delphi function DioGetBackGroundStatus ( DeviceHandle Thandle; BackGroundHandle Thandle; var StartPoint Integer; var PointNum Integer; var ValueNum Integer; var Cycle Integer; var Count Integer; var Option Integer; var Execute Integer; var ExecCount Integer; var BufferOffset Integer; var Over Integer ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します BackGroundHandle DioSetBackGround 関数で取得したバックグランド処理ハンドルを指定します StartPoint 入出力開始接点番号を格納する変数へのポインタ ( 参照渡し ) を指定します PointNum 接点数を格納する変数へのポインタ ( 参照渡し ) を指定します ValueNum ひとつの接点に対して確保したバッファ数を格納する変数へのポインタ ( 参照渡し ) を指定します Cycle バックグランド処理周期 監視分解能を格納する変数へのポインタ ( 参照渡し ) を指定します Count 処理回数を格納する変数へのポインタ ( 参照渡し ) を指定します Option 処理オプションを格納する変数へのポインタ ( 参照渡し ) を指定します 132

133 Execute 実行フラグを格納する変数へのポインタ ( 参照渡し ) を指定します ExecCount 実行回数を格納する変数へのポインタ ( 参照渡し ) を指定します BufferOffset データ最新オフセットを格納する変数へのポインタ ( 参照渡し ) を指定します Over バッファオーバーフラグを格納する変数へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; HANDLE BackgroundHandle; INT StartPoint, PointNum, ValueNum, Cycle, Count, Option, Execute, ExecCount; INT BufferOffset, Over; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 10, 0 ); Ret = DioGetBackGroundStatus( DeviceHandle, BackGroundHandle, &StartPoint, &PointNum, &ValueNum, &Cycle, &Count, &Option, &Execute, &ExecCount, &BufferOffset, &Over); 133

134 Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim BackgroundHandle As Long Dim StartPoint As Long Dim PointNum As Long Dim ValueNum As Long Dim Cycle As Long Dim Count As Long Dim Option As Long Dim Execute As Long Dim ExecCount As Long Dim BufferOffset As Long Dim Over As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 10, 0 ) Ret = DioGetBackGroundStatus( DeviceHandle, BackGroundHandle, _ StartPoint, PointNum, ValueNum, _ Cycle, Count, Option, Execute, _ ExecCount, BufferOffset, Over) 134

135 Delphi var Ret Integer; Name String; DeviceHandle THandle; BackgroundHandle THandle; nstartpoint Integer; PointNum Integer; ValueNum Integer; Cycle Integer; Count Integer; Option Integer; Execute Integer; ExecCount Integer; BufferOffset Integer; Over Integer; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 10, 0 ); Ret = DioGetBackGroundStatus( DeviceHandle, BackGroundHandle, StartPoint, PointNum, ValueNum, Cycle, Count, Option, Execute, ExecCount, BufferOffset, Over); end; デバイス名 FBIDIO1 のデバイスの BackGroundHandle で表されるバックグランド処理の設定情報 実行状態等を取得します 135

136 31. DioInputPointBack 機能 DioSetBackGround 関数で設定した任意の入力接点の状態をバックグランドで読み込みます OVERLAPPED 構造体 (Overlapped) を指定した非同期コールの場合 FBIDIO_ERROR_IO_PENDING を返し非同期での動作となります 書式 C 言語 INT DioInputPointBack ( HANDLE DeviceHandle, HANDLE BackGroundHandle, PINT Buffer, DWORD NumOfBytesToRead, LPOVERLAPPED Overlapped ); Visual Basic Declare Function DioInputPointBack Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal BackGroundHandle As Long, _ ByRef Buffer As Long, _ ByVal NumOfBytesToRead As Long, _ ByRef Overlapped As OVERLAPPED _ )As Long Delphi function DioInputPointBack ( DeviceHandle Thandle; BackGroundHandle Thandle; Buffer Pinteger; NumOfBytesToRead DWORD; Overlapped Poverlapped ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します BackGroundHandle DioSetBackGround 関数で取得したバックグランド処理ハンドルを指定します 136

137 Buffer デバイスから読み取ったデータを受け取るバッファを指すポインタ ( 参照渡し ) を指定します NumOfBytesToRead デバイスから入力するバイト数を指定します DioSetBackGround 関数で設定した PointNum と ValueNum から求めます NumberOfBytesToRead = PointNum ValueNum sizeof(int) Overlapped OVERLAPPED 構造体へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 データフォーマット 取得したデータは下記のように接点と対応しています 1 接点のデータサイズは 4 バイト (INT 型 ) です 32 ビット整数配列インデックス入力接点 入力回数 0 IN<StartNum + 0> 1 回目 1 IN<StartNum + 1> 1 回目 2 IN<StartNum + 2> 1 回目 PointNum - 1 IN<StartNum + PointNum - 1> 1 回目 PointNum + 0 IN<StartNum + 0> 2 回目 PointNum + 1 IN<StartNum + 1> 2 回目 PointNum + 2 IN<StartNum + 2> 2 回目 2 PointNum - 1 IN<StartNum + PointNum - 1> 2 回目 2 PointNum + 0 IN<StartNum + 0> 3 回目 ValueNum PointNum - 1 IN<StartNum + PointNum - 1> ValueNum 回目 配列の総サイズは接点数 入力回数 4 バイトになります 137

138 例 ) 以下の設定を行った場合の配列関係を示します PointNum = 4; // 接点数 StartNum = 1; // 入出力開始番号 ValueNum = 3; // 入力回数 32 ビット整数配列インデックス入力接点 入力回数 0 IN1 1 回目 1 IN2 1 回目 2 IN3 1 回目 3 IN4 1 回目 4 IN1 2 回目 5 IN2 2 回目 6 IN3 2 回目 7 IN4 2 回目 8 IN1 3 回目 9 IN2 3 回目 10 IN3 3 回目 11 IN4 3 回目 次に 2 次元配列を使った場合について示します 以下のような配列を用意します (C 言語 ) INT Data[ 入力回数 ][ 接点数 ]; 例 ) 以下の設定を行った場合の配列関係を示します INT Data[3][4]; // バッファ ValueNum = 3; // 入力回数 InputPointNum = 4; // 接点数 StartPoint =1; // 入出力開始番号 Data[i][j] j i 入力回数 0 IN1 IN2 IN3 IN4 1 回目 1 IN1 IN2 IN3 IN4 2 回目 2 IN1 IN2 IN3 IN4 3 回目 データ 0 外部回路 OFF 状態データ 1 外部回路 ON 状態 138

139 使用例 C 言語 INT Ret; HANDLE DeviceHandle; HANDLE BackgroundHandle; INT Buffer[10]; DWORD PointNum = 10; OVERLAPPED Overlapped; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 2, 0 ); Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(0, FALSE, FALSE, NULL); Ret = DioInputPointBack( DeviceHandle, BackGroundHandle, &Buffer[0], PointNum * sizeof(int), &Overlapped ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim BackgroundHandle As Long Dim Buffer(10) As Long Dim PointNum As Long Dim Overlapped As OVERLAPPED Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 2, 0 ) PointNum = 10 Overlapped.Offset = 0 Overlapped.OffsetHigh = 0 Overlapped.hEvent = CreateEvent(0, False, False, 0) Ret = DioInputPointBack( DeviceHandle, BackgroundHandle, Buffer(0), _ PointNum * LenB(PointNum), Overlapped ) 139

140 Delphi var Ret Integer; Name String; DeviceHandle THandle; BackgroundHandle THandle; Buffer Array[0..9] of Integer; PointNum DWORD; Overlapped TOverLapped; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 2, 0 ); PointNum = 10; Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(nil, False, False, nil); Ret = DioInputPointBack( DeviceHandle, PointNum * ); end; デバイス名 FBIDIO1 のデバイスの BackGroundHandle で表されるバックグランド処理の設定内容でバックグランド入力を行います 140

141 32. DioOutputPointBack 機能 DioSetBackGround 関数で設定した任意の出力接点の出力をバックグランドで制御します OVERLAPPED 構造体 (Overlapped) を指定した非同期コールの場合 FBIDIO_ERROR_IO_PENDING を返し非同期での動作となります 書式 C 言語 INT DioOutputPointBack ( HANDLE DeviceHandle, HANDLE BackGroundHandle, PINT Buffer, DWORD NumOfBytesToWrite, LPOVERLAPPED Overlapped ); Visual Basic Declare Function DioOutputPointBack Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal BackGroundHandle As Long, _ ByRef Buffer As Long, _ ByVal NumOfBytesToWrite As Long, _ ByRef Overlapped As OVERLAPPED _ )As Long Delphi function DioOutputPointBack ( DeviceHandle Thandle; BackGroundHandle Thandle; Buffer Pinteger; NumOfBytesToWrite DWORD; Overlapped Poverlapped ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します BackGroundHandle DioSetBackGround 関数で取得したバックグランド処理ハンドルを指定します Buffer デバイスへ出力するデータを格納したバッファを指すポインタ ( 参照渡し ) を指定します 141

142 NumOfBytesToWrite デバイスに出力するバイト数を指定します DioSetBackGround 関数で設定した PointNum と ValueNum から求めます NumberOfBytesToWrite = PointNum ValueNum sizeof(int) Overlapped OVERLAPPED 構造体へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 PCI U, PCI の場合 本関数実行中は DioOutputPoint DioOutputByte DioOutputWord DioOutputDword 関数を使用する事が出来ません データフォーマット 出力データは下記のように接点と対応しています 1 接点のデータサイズは 4 バイト (INT 型 ) です 32 ビット整数配列インデックス出力接点 出力回数 0 OUT<StartNum + 0> 1 回目 1 OUT<StartNum + 1> 1 回目 2 OUT<StartNum + 2> 1 回目 PointNum - 1 OUT<StartNum + PointNum - 1> 1 回目 PointNum + 0 OUT<StartNum + 0> 2 回目 PointNum + 1 OUT<StartNum + 1> 2 回目 PointNum + 2 OUT<StartNum + 2> 2 回目 2 PointNum - 1 OUT<StartNum + PointNum - 1> 2 回目 2 PointNum + 0 OUT<StartNum + 0> 3 回目 ValueNum PointNum - 1 OUT<StartNum + PointNum - 1> ValueNum 回目 配列の総サイズは接点数 出力回数 4 バイトになります 142

143 例 ) 以下の設定を行った場合の配列関係を示します PointNum = 4; // 接点数 StartNum = 1; // 入出力開始番号 ValueNum = 3; // 出力回数 32 ビット整数配列インデックス出力接点 出力回数 0 OUT1 1 回目 1 OUT2 1 回目 2 OUT3 1 回目 3 OUT4 1 回目 4 OUT1 2 回目 5 OUT2 2 回目 6 OUT3 2 回目 7 OUT4 2 回目 8 OUT1 3 回目 9 OUT2 3 回目 10 OUT3 3 回目 11 OUT4 3 回目 次に 2 次元配列を使った場合について示します 以下のような配列を用意します (C 言語 ) INT Data[ 出力回数 ][ 接点数 ]; 例 ) 以下の設定を行った場合の配列関係を示します INT Data[3][4]; // バッファ ValueNum = 3; // 出力回数 OutputPointNum = 4; // 接点数 StartPoint =1; // 入出力開始番号 Data[i][j] j i 出力回数 0 OUT1 OUT2 OUT3 OUT4 1 回目 1 OUT1 OUT2 OUT3 OUT4 2 回目 2 OUT1 OUT2 OUT3 OUT4 3 回目 データ 0 OFF データ 1 ON 143

144 使用例 C 言語 INT Ret; HANDLE DeviceHandle; HANDLE BackgroundHandle; INT Buffer[8]; DWORD PointNum = 8; OVERLAPPED Overlapped; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 4, 2, 100, 10, 0 ); Buffer[0] = 1; Buffer[1] = 0; Buffer[2] = 0; Buffer[3] = 1; Buffer[4] = 0; Buffer[5] = 1; Buffer[6] = 1; Buffer[7] = 0; Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(0, FALSE, FALSE, NULL); Ret = DioOutputPointBack( DeviceHandle, BackGroundHandle, &Buffer[0], PointNum * sizeof(int), &Overlapped ); 144

145 Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim BackgroundHandle As Long Dim Buffer(8) As Long Dim PointNum As Long Dim Overlapped As OVERLAPPED Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 4, 2, 100, 10, 0 ) PointNum = 8 Buffer(0) = 1 Buffer(1) = 0 Buffer(2) = 0 Buffer(3) = 1 Buffer(4) = 0 Buffer(5) = 1 Buffer(6) = 1 Buffer(7) = 0 Overlapped.Offset = 0 Overlapped.OffsetHigh = 0 Overlapped.hEvent = CreateEvent(0, False, False, 0) Ret = DioOutputPointBack( DeviceHandle, BackgroundHandle, Buffer(0), _ PointNum * ) 145

146 Delphi var Ret Integer; Name String; DeviceHandle THandle; BackgroundHandle THandle; Buffer Array[0..7] of Integer; PointNum DWORD; Overlapped TOverLapped; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 4, 2, 100, 10, 0 ); PointNum = 8; Buffer[0] = 1; Buffer[1] = 0; Buffer[2] = 0; Buffer[3] = 1; Buffer[4] = 0; Buffer[5] = 1; Buffer[6] = 1; Buffer[7] = 0; Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(nil, False, False, nil); Ret = DioOutputPointBack( DeviceHandle, PointNum * ); end; デバイス名 FBIDIO1 のデバイスの BackGroundHandle で表されるバックグランド処理の設定内容でバックグランド出力を行います 146

147 33. DioWatchPointBack 機能 DioSetBackGround 関数で設定した任意の点数の状態を監視します 状態が変化した時に OVERLAPPED 構造体中に指定されたイベントをシグナル状態にし 変化データを指定したバッファに格納します DioWatchPointBack をコールした時から接点状態の監視が開始されます DioStopBackGround 関数をコールするまで監視し続けます DioWatchPointBack は 16 変化分を内部に保存可能となっています 16 変化を越える変化は保存されません DioWatchPointBack をコールして変化データが保存されている場合はすぐに制御を戻します OVERLAPPED 構造体 (Overlapped) を指定した非同期コールの場合 変化がない場合は FBIDIO_ERROR_IO_PENDING を返し非同期での動作となります 書式 C 言語 INT DioWatchPointBack ( HANDLE DeviceHandle, HANDLE BackGroundHandle, PINT Buffer, DWORD NumOfBytesToRead, LPOVERLAPPED Overlapped ); Visual Basic Declare Function DioWatchPointBack Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal BackGroundHandle As Long, _ ByRef Buffer As Long, _ ByVal NumOfBytesToRead As Long, _ ByRef Overlapped As OVERLAPPED _ )As Long Delphi function DioWatchPointBack ( DeviceHandle Thandle; BackGroundHandle Thandle; Buffer Pinteger; NumOfBytesToRead DWORD; Overlapped Poverlapped ) Integer; stdcall; external 'FbiDio.DLL'; 147

148 パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します BackGroundHandle DioSetBackGround 関数で取得したバックグランド処理ハンドルを指定します Buffer デバイスから読み取ったデータを受け取るバッファを指すポインタ ( 参照渡し ) を指定します NumOfBytesToRead デバイスから入力するバイト数を指定します DioSetBackGround 関数で設定した PointNum と ValueNum から求めます NumberOfBytesToRead = PointNum ValueNum sizeof(int) Overlapped OVERLAPPED 構造体へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 データフォーマット 取得したデータは下記のように接点と対応しています 1 接点のデータサイズは 4 バイト (INT 型 ) です 32 ビット整数配列インデックス入力接点 入力回数 0 IN<StartNum + 0> 1 回目 1 IN<StartNum + 1> 1 回目 2 IN<StartNum + 2> 1 回目 PointNum - 1 IN<StartNum + PointNum - 1> 1 回目 PointNum + 0 IN<StartNum + 0> 2 回目 PointNum + 1 IN<StartNum + 1> 2 回目 PointNum + 2 IN<StartNum + 2> 2 回目 2 PointNum - 1 IN<StartNum + PointNum - 1> 2 回目 2 PointNum + 0 IN<StartNum + 0> 3 回目 ValueNum PointNum - 1 IN<StartNum + PointNum - 1> ValueNum 回目 配列の総サイズは接点数 入力回数 4 バイトになります 148

149 例 ) 以下の設定を行った場合の配列関係を示します PointNum = 4; // 接点数 StartNum = 1; // 入出力開始番号 ValueNum = 3; // 入力回数 32 ビット整数配列インデックス入力接点 入力回数 0 IN1 1 回目 1 IN2 1 回目 2 IN3 1 回目 3 IN4 1 回目 4 IN1 2 回目 5 IN2 2 回目 6 IN3 2 回目 7 IN4 2 回目 8 IN1 3 回目 9 IN2 3 回目 10 IN3 3 回目 11 IN4 3 回目 次に 2 次元配列を使った場合について示します 以下のような配列を用意します (C 言語 ) INT Data[ 入力回数 ][ 接点数 ]; 例 ) 以下の設定を行った場合の配列関係を示します INT Data[3][4]; // バッファ ValueNum = 3; // 入力回数 InputPointNum = 4; // 接点数 StartPoint =1; // 入出力開始番号 Data[i][j] j i 入力回数 0 IN1 IN2 IN3 IN4 1 回目 1 IN1 IN2 IN3 IN4 2 回目 2 IN1 IN2 IN3 IN4 3 回目 データ 0 外部回路 OFF 状態データ 1 外部回路 ON 状態 149

150 使用例 C 言語 INT Ret; HANDLE DeviceHandle; HANDLE BackgroundHandle; INT Buffer[10]; DWORD PointNum = 10; OVERLAPPED Overlapped; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 2, 0 ); Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(0, FALSE, FALSE, NULL); Ret = DioWatchPointBack( DeviceHandle, BackGroundHandle, &Buffer[0], PointNum * sizeof(int), &Overlapped ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim BackgroundHandle As Long Dim Buffer(10) As Long Dim PointNum As Long Dim Overlapped As OVERLAPPED Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 2, 0 ) PointNum = 10 Overlapped.Offset = 0 Overlapped.OffsetHigh = 0 Overlapped.hEvent = CreateEvent(0, False, False, 0) Ret = DioWatchPointBack( DeviceHandle, BackgroundHandle, Buffer(0), _ PointNum * LenB(PointNum), Overlapped ) 150

151 Delphi var Ret Integer; Name String; DeviceHandle THandle; BackgroundHandle THandle; Buffer Array[0..9] of Integer; PointNum DWORD; Overlapped TOverLapped; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); BackgroundHandle = DioSetBackGround( DeviceHandle, 1, 5, 2, 100, 2, 0 ); PointNum = 10; Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(nil, False, False, nil); Ret = DioWatchPointBack( DeviceHandle, PointNum * ); end; デバイス名 FBIDIO1 のデバイスの BackGroundHandle で表されるバックグランド処理の設定内容で接点の監視を行います 151

152 34. DioGetInputHandShakeConfig 機能 制御信号を使用したハンドシェーク入力の設定情報を取得します 書式 C 言語 INT DioGetInputHandShakeConfig ( HANDLE DeviceHandle, PINT InputHandShakeConfig, PDWORD BitMask1, PDWORD BitMask2 ); Visual Basic Declare Function DioGetInputHandShakeConfig Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef InputHandShakeConfig As Long, _ ByRef BitMask1 As Long, _ ByRef BitMask2 As Long _ )As Long Delphi function DioGetInputHandShakeConfig ( DeviceHandle Thandle; var InputHandShakeConfig Integer; var BitMask1 DWORD; var BitMask2 DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します InputHandShakeConfig ハンドシェーク入力に STB1 イベントを使用する / 使用しないの設定を取得する変数へのポインタ ( 参照渡し ) を指定します 0 STB1 イベントを使用しない STB1 信号をポーリングしてハンドシェーク入力するため速度が遅くなります FBIDIO_STB1_ENABLE STB1 イベントを使用する STB1 イベントを使用しない場合よりハンドシェーク入力の速度が向上します ただし DioEventRequestPending 関数にてSTB1 イベント待ちを使用できなくなります FBIDIO_STB1_HIGH_EDGE このフラグを指定すると STB1 の立ち上がりエッジのタイミングを STB1 信号有効としハンドシェーク入力が動作します このフラグを指定しない場合は立ち下がりエッジのタイ 152

153 ミングを STB1 信号有効とします BitMask1 入力データマスクビットを受け取る変数へのポインタ ( 参照渡し ) を指定します IN1~IN32 に対応します 下記のように各ビットが入力接点に対応しています bit31 bit30 bit29 bit2 bit1 bit0 IN32 IN31 IN30 IN3 IN2 IN1 0 データを無効にします 入力状態がどのような状態でも 0 クリアされます 1 データ有効 BitMask2 入力データマスクビットを受け取る変数へのポインタ ( 参照渡し ) を指定します IN33~IN64 に対応します 下記のように各ビットが入力接点に対応しています bit31 bit30 bit29 bit2 bit1 bit0 IN64 IN63 IN62 IN35 IN34 IN33 0 データを無効にします 入力状態がどのような状態でも 0 クリアされます 1 データ有効 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; INT InputHandShakeConfig; DWORD BitMask1; DWORD BitMask2; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetInputHandShakeConfig( DeviceHandle, &InputHandShakeConfig, &BitMask1, &BitMask2 ); 153

154 Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim InputHandShakeConfig As Long Dim BitMask1 As Long Dim BitMask2 As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetInputHandShakeConfig( DeviceHandle, InputHandShakeConfig, _ BitMask1, BitMask2 ) Delphi var Ret Integer; Name String; DeviceHandle THandle; InputHandShakeConfig Integer; BitMask1 DWORD; BitMask2 DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetInputHandShakeConfig( DeviceHandle, InputHandShakeConfig, BitMask1, BitMask2 ); end; デバイス名 FBIDIO1 のデバイスのハンドシェーク入力の設定内容を取得します 154

155 35. DioSetInputHandShakeConfig 機能 制御信号を使用したハンドシェーク入力の設定を行います DioInputHandShake DioInputHandShakeEx 関数にてハンドシェーク入力を行う前にコールしてください 書式 C 言語 INT DioSetInputHandShakeConfig ( HANDLE DeviceHandle, INT InputHandShakeConfig, DWORD BitMask1, DWORD BitMask2 ); Visual Basic Declare Function DioSetInputHandShakeConfig Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal InputHandShakeConfig As Long, _ ByVal BitMask1 As Long, _ ByVal BitMask2 As Long _ )As Long Delphi function DioSetInputHandShakeConfig ( DeviceHandle Thandle; InputHandShakeConfig Integer; BitMask1 DWORD; BitMask2 DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します 155

156 InputHandShakeConfig ハンドシェーク入力に STB1 イベントを使用する / 使用しないの設定をします 弊社の出力デバイスの STB2 信号に同期させる場合は FBIDIO_STB1_HIGH_EDGE を指定しないでください 0 STB1 イベントを使用しない STB1 信号をポーリングしてハンドシェーク入力するため速度が遅くなります FBIDIO_STB1_ENABLE STB1 イベントを使用する STB1 イベントを使用しない場合よりハンドシェーク入力の速度が向上します ただし DioEventRequestPending 関数にてSTB1 イベント待ちを使用できなくなります FBIDIO_STB1_HIGH_EDGE このフラグを指定すると STB1 の立ち上がりエッジのタイミングを STB1 信号有効としハンドシェーク入力が動作します このフラグを指定しない場合は立ち下がりエッジのタイミングを STB1 信号有効とします STB1 イベントを有効にしたハンドシェーク入力を行うと それ以降 IN1 の割り込みイベントが発生しません IN1 の割り込みイベントを使用する場合は再度 DioSetInputHandShakeConfig 関数で InputHandShakeConfig パラメータを 0 にして STB1 イベントを使用しない設定に切り替えてください BitMask1 入力データマスクビットを設定します IN1~IN32 に対応します 下記のように各ビットが入力接点に対応しています 電源 ON 時のデフォルトはすべてのデータが無効に設定されています bit31 bit30 bit29 bit2 bit1 bit0 IN32 IN31 IN30 IN3 IN2 IN1 0 データを無効にします 入力状態がどのような状態でも 0 クリアされます 1 データ有効 BitMask2 入力データマスクビットを設定します IN33~IN64 に対応します 下記のように各ビットが入力接点に対応しています 電源 ON 時のデフォルトはすべてのデータが無効に設定されています bit31 bit30 bit29 bit2 bit1 bit0 IN64 IN63 IN62 IN35 IN34 IN33 0 データを無効にします 入力状態がどのような状態でも 0 クリアされます 1 データ有効 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 156

157 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioSetInputHandShakeConfig( DeviceHandle, FBIDIO_STB1_ENABLE, 0xFFFFFFFF, 0xFFFFFFFF ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioSetInputHandShakeConfig( DeviceHandle, FBIDIO_STB1_ENABLE, _ &HFFFFFFFF, &HFFFFFFFF ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioSetInputHandShakeConfig( DeviceHandle, FBIDIO_STB1_ENABLE, $FFFFFFFF, $FFFFFFFF ); end; デバイス名 FBIDIO1 のデバイスのハンドシェーク入力の設定を行います 157

158 36. DioGetOutputHandShakeConfig 機能 制御信号を使用したハンドシェーク出力の設定情報を取得します 書式 C 言語 INT DioGetOutputHandShakeConfig ( HANDLE DeviceHandle, PINT OutputHandShakeConfig, PDWORD BitMask1, PDWORD BitMask2 ); Visual Basic Declare Function DioGetOutputHandShakeConfig Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef OutputHandShakeConfig As Long, _ ByRef BitMask1 As Long, _ ByRef BitMask2 As Long _ )As Long Delphi function DioGetOutputHandShakeConfig ( DeviceHandle Thandle; var OutputHandShakeConfig Integer; var BitMask1 DWORD; var BitMask2 DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します 158

159 OutputHandShakeConfig ハンドシェーク入力に STB1 イベントを使用する / 使用しないの設定を取得する変数へのポインタ ( 参照渡し ) を指定します 0 ACK2 イベントを使用しない ACK2 信号をポーリングしてハンドシェーク出力するため速度が遅くなります FBIDIO_ACK2_ENABLE ACK2 イベントを使用する ACK2 イベントを使用しない場合よりハンドシェーク出力の速度が向上します ただし DioEventRequestPending 関数にてACK2 イベント待ちを使用できなくなります FBIDIO_ACK2_HIGH_EDGE このフラグを指定すると ACK2 の立ち上がりエッジのタイミングを ACK2 信号有効としハンドシェーク出力が動作します このフラグを指定しない場合は立ち下がりエッジのタイミングを ACK2 信号有効とします 下記の識別子が論理和で指定されている場合 出力完了タイミングが変更されています FBIDIO_WAIT_LAST_ACK2 このフラグを指定すると DioOutputHandShake 関数 / DioOutputHandShakeEx 関数による最終データの出力後 ACK2 の応答があった時点で関数が完了となります このフラグを指定しない場合は 最終データの出力後 ACK2 の応答を待たずに上記出力関数が完了となります 下記の識別子が論理和で指定されている場合 出力データ設定後に STB2 を有効にするまで の遅延時間が設定されています FBIDIO_STB2_DELAY_10US STB2 の遅延時間が 10μs に設定されています FBIDIO_STB2_DELAY_30US STB2 の遅延時間が 30μs に設定されています FBIDIO_STB2_DELAY_50US STB2 の遅延時間が 50μs に設定されています FBIDIO_STB2_DELAY_100US STB2 の遅延時間が 100μs に設定されています FBIDIO_STB2_DELAY_300US STB2 の遅延時間が 300μs に設定されています FBIDIO_STB2_DELAY_500US STB2 の遅延時間が 500μs に設定されています FBIDIO_STB2_DELAY_1MS STB2 の遅延時間が 1ms に設定されています FBIDIO_STB2_DELAY_3MS STB2 の遅延時間が 3ms に設定されています FBIDIO_STB2_DELAY_5MS STB2 の遅延時間が 5ms に設定されています FBIDIO_STB2_DELAY_10MS STB2 の遅延時間が 10ms に設定されています FBIDIO_STB2_DELAY_30MS STB2 の遅延時間が 30ms に設定されています FBIDIO_STB2_DELAY_50MS STB2 の遅延時間が 50ms に設定されています 159

160 BitMask1 出力データマスクビットを受け取る変数へのポインタ ( 参照渡し ) を指定します OUT1~OUT32 に対応します 下記のように各ビットが入力接点に対応しています bit31 bit30 bit29 bit2 bit1 bit0 OUT32 OUT31 OUT30 OUT3 OUT2 OUT1 0 データを無効にします 対応する接点への出力を変化させずにハンドシェーク出力を行います 1 データ有効 BitMask2 出力データマスクビットを受け取る変数へのポインタ ( 参照渡し ) を指定します OUT33~OUT64 に対応します 下記のように各ビットが入力接点に対応しています bit31 bit30 bit29 bit2 bit1 bit0 OUT64 OUT63 OUT62 OUT35 OUT34 OUT33 0 データを無効にします 対応する接点への出力を変化させずにハンドシェーク出力を行います 1 データ有効 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 160

161 使用例 C 言語 INT Ret; HANDLE DeviceHandle; INT OutputHandShakeConfig; DWORD BitMask1; DWORD BitMask2; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetOutputHandShakeConfig( DeviceHandle, &OutputHandShakeConfig, &BitMask1, &BitMask2 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim OutputHandShakeConfig As Long Dim BitMask1 As Long Dim BitMask2 As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetOutputHandShakeConfig( DeviceHandle, OutputHandShakeConfig, _ BitMask1, BitMask2 ) 161

162 Delphi var Ret Integer; Name String; DeviceHandle THandle; InputHandShakeConfig Integer; BitMask1 DWORD; BitMask2 DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetOutputHandShakeConfig( DeviceHandle, OutputHandShakeConfig, BitMask1, BitMask2 ); end; デバイス名 FBIDIO1 のデバイスのハンドシェーク出力の設定内容を取得します 162

163 37. DioSetOutputHandShakeConfig 機能 制御信号を使用したハンドシェーク出力の設定を行います DioOutputHandShake DioOutputHandShakeEx 関数にてハンドシェーク出力を行う前にコールしてください 書式 C 言語 INT DioSetOutputHandShakeConfig ( HANDLE DeviceHandle, INT OutputHandShakeConfig, DWORD BitMask1, DWORD BitMask2 ); Visual Basic Declare Function DioSetOutputHandShakeConfig Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal OutputHandShakeConfig As Long, _ ByVal BitMask1 As Long, _ ByVal BitMask2 As Long _ )As Long Delphi function DioSetOutputHandShakeConfig ( DeviceHandle Thandle; OutputHandShakeConfig Integer; BitMask1 DWORD; BitMask2 DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します 163

164 OutputHandShakeConfig ハンドシェーク出力に ACK2 イベントを使用する / 使用しないの設定をします 弊社の入力デバイスの ACK1 信号に同期させる場合は FBIDIO_ACK2_HIGH_EDGE を必ず指定してください 0 ACK2 イベントを使用しない ACK2 信号をポーリングしてハンドシェーク出力するため速度が遅くなります FBIDIO_ACK2_ENABLE ACK2 イベントを使用する ACK2 イベントを使用しない場合よりハンドシェーク出力の速度が向上します ただし DioEventRequestPending 関数にてACK2 イベント待ちを使用できなくなります FBIDIO_ACK2_HIGH_EDGE このフラグを指定すると ACK2 の立ち上がりエッジのタイミングを ACK2 信号有効としハンドシェーク出力が動作します このフラグを指定しない場合は立ち下がりエッジのタイミングを ACK2 信号有効とします 下記の識別子を論理和で指定することで 出力完了タイミングを変更します FBIDIO_WAIT_LAST_ACK2 このフラグを指定すると DioOutputHandShake 関数 / DioOutputHandShakeEx 関数による最終データの出力後 ACK2 の応答があった時点で関数が完了となります このフラグを指定しない場合は 最終データの出力後 ACK2 の応答を待たずに上記出力関数が完了となります 下記の識別子を論理和で指定することで 出力データ設定後に STB2 を有効にするまでの遅 延時間を設定できます 何も指定していない場合にはデバイス毎に固有の時間が経過後に STB2 が有効になります 下記の何れかの識別子を指定した場合には デバイス毎に固有の時間は無効となり 指定 した遅延時間が経過後に STB2 が有効となります FBIDIO_STB2_DELAY_10US STB2 の遅延時間を 10μs に設定します FBIDIO_STB2_DELAY_30US STB2 の遅延時間を 30μs に設定します FBIDIO_STB2_DELAY_50US STB2 の遅延時間を 50μs に設定します FBIDIO_STB2_DELAY_100US STB2 の遅延時間を 100μs に設定します FBIDIO_STB2_DELAY_300US STB2 の遅延時間を 300μs に設定します FBIDIO_STB2_DELAY_500US STB2 の遅延時間を 500μs に設定します FBIDIO_STB2_DELAY_1MS STB2 の遅延時間を 1ms に設定します FBIDIO_STB2_DELAY_3MS STB2 の遅延時間を 3ms に設定します FBIDIO_STB2_DELAY_5MS STB2 の遅延時間を 5ms に設定します FBIDIO_STB2_DELAY_10MS STB2 の遅延時間を 10ms に設定します FBIDIO_STB2_DELAY_30MS STB2 の遅延時間を 30ms に設定します FBIDIO_STB2_DELAY_50MS STB2 の遅延時間を 50ms に設定します デバイス毎に固有の時間については DioGetDeviceConfig 関数 DioGetDeviceConfigEx 関数 の低速出力応答の説明を参照ください フォトカプラ絶縁など 入出力データが安定するまでに時間がかかるデバイスでハンドシェーク処理を行う際に STB2 の遅延時間の設定が必要となる場合があります ハンドシェーク処理に成功しているのに 入力側で不定値を取得してしまう様な場合には 上記の遅延時間を追加することで取得データが安定する可能性があります 164

165 ACK2 イベントを有効にしたハンドシェーク出力を行うと それ以降 IN3 の割り込みイベントが発生しません IN3 の割り込みイベントを使用する場合は再度 DioSetOutputHandShakeConfig 関数で OutputHandShakeConfig パラメータを 0 にして ACK2 イベントを使用しない設定に切り替えてください BitMask1 出力データマスクビットを設定します OUT1~OUT32 に対応します 下記のように各ビットが出力接点に対応しています 電源 ON 時のデフォルトはすべてのデータが無効に設定されています bit31 bit30 bit29 bit2 bit1 bit0 OUT32 OUT31 OUT30 OUT3 OUT2 OUT1 0 データを無効にします 対応する接点への出力を変化させずにハンドシェーク出力を行います 1 データ有効 BitMask2 出力データマスクビットを設定します OUT33~OUT64 に対応します 下記のように各ビットが出力接点に対応しています 電源 ON 時のデフォルトはすべてのデータが無効に設定されています bit31 bit30 bit29 bit2 bit1 bit0 OUT64 OUT63 OUT62 OUT35 OUT34 OUT33 0 データを無効にします 対応する接点への出力を変化させずにハンドシェーク出力を行います 1 データ有効 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 165

166 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioSetOutputHandShakeConfig( DeviceHandle, FBIDIO_ACK2_ENABLE FBIDIO_WAIT_LAST_ACK2, 0xFFFFFFFF, 0xFFFFFFFF); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioSetOutputHandShakeConfig( DeviceHandle, FBIDIO_ACK2_ENABLE or FBIDIO_WAIT_LAST_ACK2, _ &HFFFFFFFF, &HFFFFFFFF) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioSetOutputHandShakeConfig( DeviceHandle, FBIDIO_ACK2_ENABLE or FBIDIO_WAIT_LAST_ACK2, $FFFFFFFF, $FFFFFFFF ); end; デバイス名 FBIDIO1 のデバイスのハンドシェーク出力の設定を行います 166

167 38. DioInputHandShake 機能 制御信号を使用したハンドシェーク入力を行います OVERLAPPED 構造体 (Overlapped) を指定した非同期コールの場合 変化がない場合は FBIDIO_ERROR_IO_PENDING を返し非同期での動作となります DioSetInputHandShakeConfig 関数によってハンドシェーク入力動作の設定を行ってからハンドシェーク入力を開始してください 1 ポートのデータを 1 バイトで表現します 例 32 点の DIO の場合 1 4 バイトが一度の入力に使用されるデータとします PCI-2152C 2790C 2798C CTP にて STB1 割り込みイベントを使用したハンドシェーク入力 (STB1 割り込みイベントの使用は DioSetInputHandShakeConfig 関数にて設定 ) を行う場合 DioSetLatchStatus 関数によりデータとして使用する接点に対応する入力状態ラッチ回路の接続を有効に設定する必要があります 書式 C 言語 INT DioInputHandShake ( HANDLE DeviceHandle, LPVOID Buffer, DWORD NumOfBytesToRead, LPDWORD NumOfBytesRead, LPOVERLAPPED Overlapped ); Visual Basic Declare Function DioInputHandShake Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef Buffer As Any, _ ByVal NumOfBytesToRead As Long, _ ByRef NumOfBytesRead As Long, _ ByRef Overlapped As OVERLAPPED _ )As Long Delphi function DioInputHandShake ( DeviceHandle Thandle; Buffer Pointer; NumOfBytesToRead DWORD; NumOfBytesRead PDWORD; Overlapped Poverlapped ) Integer; stdcall; external 'FbiDio.DLL'; 167

168 パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Buffer デバイスから入力したデータを受け取るバッファを指すポインタ ( 参照渡し ) を指定します NumOfBytesToRead デバイスから入力するバイト数を指定します NumOfBytesRead 入力されたバイト数を指すポインタ ( 参照渡し ) を指定します ( 非同期コールの場合 この値は意味を持ちません 非同期コールで 実際に入力されたバイト数を取得するには DioGetOverlappedResult 関数をご使用下さい ) Overlapped OVERLAPPED 構造体へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 DioInputHandShake 関数はパラメータ Overlapped に有効な OVERLAPPED 構造体のアドレスを指定することで 非同期 ( 処理の完了前に制御が戻ります ) に動作します Overlapped に NULL を指定すると 処理が完了するまで制御が戻りません 同期入出力 アプリケーションはデータ入出力が完了するまで待ちます ユーザアプリケーション DLL ドライバ / デバイス アプリケーション DioInputHandShake データ入力開始 [ データ転送中 ] [ データ転送中 ] アプリケーションへリターン DioInputHandShake 処理終了 データ入力終了 168

169 非同期入出力 アプリケーションはデータ入出力の完了まで待たず 即制御が API から戻ります データ入出力の完了はイベントで通知されます ドライバ ユーザアプリケーション DLL / デバイス アプリケーション DioInputHandShake データ入力開始 アプリケーションへリターン DioInputHandShake 処理終了 [ データ転送中 ] ( イベント待ち ) ( イベント通知 ) データ入力終了 データフォーマット取得したデータは下記のように接点と対応しています オフセット データ bit7 bit6 bit0 入力回数 + 0 IN8 IN7 IN1 1 回目 + 1 IN16 IN15 IN9 1 回目 ポート数 - 1 ポート数 IN8 IN7 IN1 2 回目 ポート数 + 1 IN16 IN15 IN9 2 回目 入力バイト数 INxx INxx INxx 上記のようにバッファの先頭から 1 回目の入力データが格納され 次に 2 回目の入力データが格納されます ひとつのバイトデータの中に 8 点分のデータが下位のビットから昇順で格納されます 接点数が 32 点のインタフェースモジュールの場合は以下のようになります オフセット データ bit7 bit6 bit0 + 0 IN8 IN7 IN1 + 1 IN16 IN15 IN9 + 2 IN24 IN23 IN IN32 IN31 IN IN8 IN7 IN1 + 5 IN16 IN15 IN9 + 6 IN24 IN23 IN IN32 IN31 IN25 データ 0 外部回路 OFF 状態 データ 1 外部回路 ON 状態 入力回数 1 回目 2 回目 169

170 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE Buffer[16]; INT NumOfBytesToRead; INT NumOfBytesRead; OVERLAPPED Overlapped; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); NumOfBytesToRead = 16; Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(0, FALSE, FALSE, NULL); Ret = DioInputHandShake( DeviceHandle, &Buffer[0], NumOfBytesToRead, &NumOfBytesRead, &Overlapped ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Buffer(16) As Byte Dim NumOfBytesToRead As Long Dim NumOfBytesRead As Long Dim Overlapped As OVERLAPPED Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) NumOfBytesToRead = 16 Overlapped.Offset = 0 Overlapped.OffsetHigh = 0 Overlapped.hEvent = CreateEvent(0, False, False, 0) Ret = DioInputHandShake( DeviceHandle, Buffer(0), NumOfBytesToRead, _ NumOfBytesRead, Overlapped ) 170

171 Delphi var Ret Integer; Name String; DeviceHandle THandle; Buffer Array[0..15] of Byte; NumOfBytesToRead Integer; NumOfBytesRead Integer; Overlapped TOVERLAPPED; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); NumOfBytesToRead = 16; Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(nil, False, False, nil); Ret = DioInputHandShake( NumOfBytesToRead, ); end; デバイス名 FBIDIO1 のデバイスでハンドシェーク入力します 171

172 39. DioInputHandShakeEx 機能 制御信号を使用したハンドシェーク入力を行います ( コールバック関数有り Windows 2000/NT 以降で使用可能 ) DioSetInputHandShakeConfig 関数によってハンドシェーク入力動作の設定を行ってからハンドシェーク入力を開始してください 1 ポートのデータを 1 バイトで表現します 例 32 点の DIO の場合 1 4 バイトが一度の入力に使用されるデータとします PCI-2152C 2790C 2798C CTP にて STB1 割り込みイベントを使用したハンドシェーク入力 (STB1 割り込みイベントの使用は DioSetInputHandShakeConfig 関数にて設定 ) を行う場合 DioSetLatchStatus 関数によりデータとして使用する接点に対応する入力状態ラッチ回路の接続を有効に設定する必要があります 書式 C 言語 INT DioInputHandShakeEx ( HANDLE LPVOID DWORD LPOVERLAPPED LPOVERLAPPED_COMPLETION_ROUTINE ); DeviceHandle, Buffer, NumOfBytesToRead, Overlapped, CompletionRoutine Visual Basic Declare Function DioInputHandShakeEx Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef Buffer As Any, _ ByVal NumOfBytesToRead As Long, _ ByRef Overlapped As OVERLAPPED, _ ByVal CompletionRoutine As Long _ )As Long Delphi function DioInputHandShakeEx ( DeviceHandle Thandle; Buffer Pointer; NumOfBytesToRead DWORD; Overlapped Poverlapped; CompletionRoutine FARPROC ) Integer; stdcall; external 'FbiDio.DLL'; 172

173 パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Buffer デバイスから入力したデータを受け取るバッファを指すポインタ ( 参照渡し ) を指定します NumOfBytesToRead デバイスから入力するバイト数を指定します Overlapped OVERLAPPED 構造体へのポインタ ( 参照渡し ) を指定します CompletionRoutine 完了ルーチンへのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 173

174 備考 本 API 関数は Windows 2000/NT 以降において有効です Windows Me/98/95 で本関数を呼び出した場合には FBIDIO_ERROR_NOT_SUPPORTED が返されます DioInputHandShakeEx 関数はデバイスからデータを非同期的に入力します DioInputHandShake 関数が同期的および非同期的操作の両方を行えるようになっているのに対して DioInputHandShakeEx 関数は 非同期の操作用だけに使用できます DioInputHandShakeEx 関数によって アプリケーションはデータの入力操作の間 他の処理を実行できます DioInputHandShakeEx 関数は データ入力が完了し 呼び出しスレッドがアラート可能な待機状態にあるときに 指定された完了ルーチンを呼び出して操作の完了状態を非同期に報告します データフォーマット取得したデータは下記のように接点と対応しています オフセット データ bit7 bit6 bit0 入力回数 + 0 IN8 IN7 IN1 1 回目 + 1 IN16 IN15 IN9 1 回目 ポート数 - 1 ポート数 IN8 IN7 IN1 2 回目 ポート数 + 1 IN16 IN15 IN9 2 回目 入力バイト数 INxx INxx INxx 上記のようにバッファの先頭から 1 回目の入力データが格納され 次に 2 回目の入力データが格納されます ひとつのバイトデータの中に 8 点分のデータが下位のビットから昇順で格納されます 接点数が 32 点のインタフェースモジュールの場合は以下のようになります オフセット データ bit7 bit6 bit0 + 0 IN8 IN7 IN1 + 1 IN16 IN15 IN9 + 2 IN24 IN23 IN IN32 IN31 IN IN8 IN7 IN1 + 5 IN16 IN15 IN9 + 6 IN24 IN23 IN IN32 IN31 IN25 データ 0 外部回路 OFF 状態 データ 1 外部回路 ON 状態 入力回数 1 回目 2 回目 174

175 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE Buffer[16]; INT NumOfBytesToRead; OVERLAPPED Overlapped; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); NumOfBytesToRead = 16; Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(0, FALSE, FALSE, NULL); Ret = DioInputHandShakeEx( DeviceHandle, &Buffer[0], NumOfBytesToRead, &Overlapped, CompletionRoutine ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Buffer(16) As Byte Dim NumOfBytesToRead As Long Dim Overlapped As OVERLAPPED Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) NumOfBytesToRead = 16 Overlapped.Offset = 0 Overlapped.OffsetHigh = 0 Overlapped.hEvent = CreateEvent(0, False, False, 0) Ret = DioInputHandShakeEx( DeviceHandle, Buffer(0), NumOfBytesToRead, _ Overlapped, CompletionRoutine ) 175

176 Delphi var Ret Integer; Name String; DeviceHandle THandle; Buffer Array[0..15] of Byte; NumOfBytesToRead Integer; Overlapped TOVERLAPPED; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); NumOfBytesToRead = 16; Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(nil, False, False, nil); Ret = DioInputHandShakeEx( NumOfBytesToRead, ); end; デバイス名 FBIDIO1 のデバイスでハンドシェーク入力します CompletionRoutine で指定された完了ルーチンを実行します 176

177 40. DioOutputHandShake 機能 制御信号を使用したハンドシェーク出力を行います OVERLAPPED 構造体 (Overlapped) を指定した非同期コールの場合 変化がない場合は FBIDIO_ERROR_IO_PENDING を返し非同期での動作となります DioSetOutputHandShakeConfig 関数によってハンドシェーク出力動作の設定を行ってからハンドシェーク出力を開始してください 1 ポートのデータを 1 バイトで表現します 例 32 点の DIO の場合 1 4 バイトが一度の出力に使用されるデータとします 書式 C 言語 INT DioOutputHandShake ( HANDLE DeviceHandle, LPVOID Buffer, DWORD NumOfBytesToWrite, LPDWORD NumOfBytesWritten, LPOVERLAPPED Overlapped ); Visual Basic Declare Function DioOutputHandShake Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef Buffer As Any, _ ByVal NumOfBytesToWrite As Long, _ ByRef NumOfBytesWritten As Long, _ ByRef Overlapped As OVERLAPPED _ )As Long Delphi function DioOutputHandShake ( DeviceHandle Thandle; Buffer Pointer; NumOfBytesToWrite DWORD; NumOfBytesWritten PDWORD; Overlapped Poverlapped ) Integer; stdcall; external 'FbiDio.DLL'; 177

178 パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Buffer デバイスに出力するデータのバッファを指すポインタ ( 参照渡し ) を指定します NumOfBytesToWrite デバイスに出力するバイト数を指定します NumOfBytesWritten 出力されたバイト数を格納するポインタ ( 参照渡し ) を指定します ( 非同期コールの場合 この値は意味を持ちません 非同期コールで 実際に出力されたバイト数を取得するには DioGetOverlappedResult 関数をご使用下さい ) Overlapped OVERLAPPED 構造体へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 DioOutputHandShake 関数はパラメータ Overlapped に有効な OVERLAPPED 構造体のアドレスを指定することで 非同期 ( 処理の完了前に制御が戻ります ) に動作します Overlapped に NULL を指定すると 処理が完了するまで制御が戻りません 同期入出力 アプリケーションはデータ入出力が完了するまで待ちます ユーザアプリケーション DLL ドライバ / デバイス アプリケーション DioOutputHandShake データ出力開始 [ データ転送中 ] [ データ転送中 ] アプリケーションへリターン DioOutputHandShake 処理終了 データ出力終了 178

179 非同期入出力 アプリケーションはデータ入出力の完了まで待たず 即制御が API から戻ります データ入出力の完了はイベントで通知されます ドライバ ユーザアプリケーション DLL / デバイス アプリケーション DioOutputHandShake データ出力開始 アプリケーションへリターン DioOutputHandShake 処理終了 [ データ転送中 ] ( イベント待ち ) ( イベント通知 ) データ出力終了 データフォーマット出力データは下記のように接点と対応しています オフセット データ bit7 bit6 bit0 出力回数 + 0 OUT8 OUT7 OUT1 1 回目 + 1 OUT16 OUT15 OUT9 1 回目 ポート数 - 1 ポート数 OUT8 OUT7 OUT1 2 回目 ポート数 + 1 OUT16 OUT15 OUT9 2 回目 入力バイト数 OUTxx OUTxx OUTxx 上記のようにバッファの先頭から 1 回目の出力データを格納し 次に 2 回目の出力データを格納しておく必要があります ひとつのバイトデータの中に 8 点分の出力データを下位のビットから昇順で格納します 接点数が 32 点のインタフェースモジュールの場合は以下のようになります オフセット データ bit7 bit6 bit0 + 0 OUT8 OUT7 OUT1 + 1 OUT16 OUT15 OUT9 + 2 OUT24 OUT23 OUT OUT32 OUT31 OUT OUT8 OUT7 OUT1 + 5 OUT16 OUT15 OUT9 + 6 OUT24 OUT23 OUT OUT32 OUT31 OUT25 データ 0 OFF データ 1 ON 出力回数 1 回目 2 回目 179

180 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE Buffer[8]; INT NumOfBytesToWrite; INT NumOfBytesWritten; OVERLAPPED Overlapped; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); NumOfBytesToWrite = 8; Buffer[0] = 0x01; Buffer[1] = 0x02; Buffer[2] = 0x04; Buffer[3] = 0x08; Buffer[4] = 0x10; Buffer[5] = 0x20; Buffer[6] = 0x40; Buffer[7] = 0x80; Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(0, FALSE, FALSE, NULL); Ret = DioOutputHandShake( DeviceHandle, &Buffer[0], NumOfBytesToWrite, &NumOfBytesWritten, &Overlapped ); 180

181 Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Buffer(8) As Byte Dim NumOfBytesToWrite As Long Dim NumOfBytesWritten As Long Dim Overlapped As OVERLAPPED Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) NumOfBytesToWrite = 8 Buffer(0) = &H1 Buffer(1) = &H2 Buffer(2) = &H4 Buffer(3) = &H8 Buffer(4) = &H10 Buffer(5) = &H20 Buffer(6) = &H40 Buffer(7) = &H80 Overlapped.Offset = 0 Overlapped.OffsetHigh = 0 Overlapped.hEvent = CreateEvent(0, False, False, 0) Ret = DioOutputHandShake( DeviceHandle, Buffer(0), NumOfBytesToWrite, _ NumOfBytesWritten, Overlapped ) 181

182 Delphi var Ret Integer; Name String; DeviceHandle THandle; Buffer Array[0..7] of Byte; NumOfBytesToWrite Integer; NumOfBytesWritten Integer; Overlapped TOVERLAPPED; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); NumOfBytesToWrite = 8; Buffer[0] = $01; Buffer[1] = $02; Buffer[2] = $04; Buffer[3] = $08; Buffer[4] = $10; Buffer[5] = $20; Buffer[6] = $40; Buffer[7] = $80; Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(nil, False, False, nil); Ret = DioOutputHandShake( NumOfBytesToWrite, ); end; デバイス名 FBIDIO1 のデバイスでハンドシェーク出力します 182

183 41. DioOutputHandShakeEx 機能 制御信号を使用したハンドシェーク入力を行います ( コールバック関数有り Windows 2000/NT 以降で使用可能 ) DioSetOutputHandShakeConfig 関数によってハンドシェーク出力動作の設定を行ってからハンドシェーク出力を開始してください 1 ポートのデータを 1 バイトで表現します 例 32 点の DIO の場合 1 4 バイトが一度の出力に使用されるデータとします 書式 C 言語 INT DioOutputHandShakeEx ( HANDLE DeviceHandle, LPVOID Buffer, DWORD NumOfBytesToWrite, LPOVERLAPPED Overlapped, LPOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine ); Visual Basic Declare Function DioOutputHandShakeEx Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef Buffer As Any, _ ByVal NumOfBytesToWrite As Long, _ ByRef Overlapped As OVERLAPPED, _ ByVal CompletionRoutine As Long _ )As Long Delphi function DioOutputHandShakeEx ( DeviceHandle Thandle; Buffer Pointer; NumOfBytesToWrite DWORD; Overlapped Poverlapped; CompletionRoutine FARPROC ) Integer; stdcall; external 'FbiDio.DLL'; 183

184 パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Buffer デバイスに出力するデータのバッファを指すポインタ ( 参照渡し ) を指定します NumOfBytesToWrite デバイスに出力するバイト数を指定します Overlapped OVERLAPPED 構造体へのポインタ ( 参照渡し ) を指定します CompletionRoutine 完了ルーチンへのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 184

185 備考 本 API 関数は Windows 2000/NT 以降において有効です Windows Me/98/95 で本関数を呼び出した場合には FBIDIO_ERROR_NOT_SUPPORTED が返されます DioOutputHandShakeEx 関数はデバイスからデータを非同期的に入力します DioOutputHandShake 関数が同期的および非同期的操作の両方を行えるようになっているのに対して DioOutputHandShakeEx 関数は 非同期の操作用だけに使用できます DioOutputHandShakeEx 関数によって アプリケーションはデータの入力操作の間 他の処理を実行できます DioOutputHandShakeEx 関数は データ出力が完了し 呼び出しスレッドがアラート可能な待機状態にあるときに 指定された完了ルーチンを呼び出して操作の完了状態を非同期に報告します データフォーマット出力データは下記のように接点と対応しています オフセット データ bit7 bit6 bit0 出力回数 + 0 OUT8 OUT7 OUT1 1 回目 + 1 OUT16 OUT15 OUT9 1 回目 ポート数 - 1 ポート数 OUT8 OUT7 OUT1 2 回目 ポート数 + 1 OUT16 OUT15 OUT9 2 回目 入力バイト数 OUTxx OUTxx OUTxx 上記のようにバッファの先頭から 1 回目の出力データを格納し 次に 2 回目の出力データを格納しておく必要があります ひとつのバイトデータの中に 8 点分の出力データを下位のビットから昇順で格納します 接点数が 32 点のインタフェースモジュールの場合は以下のようになります オフセット データ bit7 bit6 bit0 + 0 OUT8 OUT7 OUT1 + 1 OUT16 OUT15 OUT9 + 2 OUT24 OUT23 OUT OUT32 OUT31 OUT OUT8 OUT7 OUT1 + 5 OUT16 OUT15 OUT9 + 6 OUT24 OUT23 OUT OUT32 OUT31 OUT25 データ 0 OFF データ 1 ON 出力回数 1 回目 2 回目 185

186 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE Buffer[8]; INT NumOfBytesToWrite; OVERLAPPED Overlapped; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); NumOfBytesToWrite = 8; Buffer[0] = 0x01; Buffer[1] = 0x02; Buffer[2] = 0x04; Buffer[3] = 0x08; Buffer[4] = 0x10; Buffer[5] = 0x20; Buffer[6] = 0x40; Buffer[7] = 0x80; Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(0, FALSE, FALSE, NULL); Ret = DioOutputHandShakeEx( DeviceHandle, &Buffer[0], NumOfBytesToWrite, &Overlapped, &CompletionRoutine ); 186

187 Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Buffer(8) As Byte Dim NumOfBytesToWrite As Long Dim Overlapped As OVERLAPPED Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) NumOfBytesToWrite = 8 Buffer(0) = &H1 Buffer(1) = &H2 Buffer(2) = &H4 Buffer(3) = &H8 Buffer(4) = &H10 Buffer(5) = &H20 Buffer(6) = &H40 Buffer(7) = &H80 Overlapped.Offset = 0 Overlapped.OffsetHigh = 0 Overlapped.hEvent = CreateEvent(0, False, False, 0) Ret = DioOutputHandShakeEx( DeviceHandle, Buffer(0), NumOfBytesToWrite, _ Overlapped, CompletionRoutine ) 187

188 Delphi var Ret Integer; Name String; DeviceHandle THandle; Buffer Array[0..7] of Byte; NumOfBytesToWrite Integer; Overlapped TOVERLAPPED; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); NumOfBytesToWrite = 8; Buffer[0] = $01; Buffer[1] = $02; Buffer[2] = $04; Buffer[3] = $08; Buffer[4] = $10; Buffer[5] = $20; Buffer[6] = $40; Buffer[7] = $80; Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(nil, False, False, nil); Ret = DioOutputHandShakeEx( NumOfBytesToWrite, ); end; デバイス名 FBIDIO1 のデバイスでハンドシェーク出力します CompletionRoutine で指定された完了ルーチンを実行します 188

189 42. DioStopInputHandShake 機能 デジタル入出力デバイスのハンドシェーク入力を停止します 書式 C 言語 INT DioStopInputHandShake ( HANDLE DeviceHandle ); Visual Basic Declare Function DioStopInputHandShake Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long _ )As Long Delphi function DioStopInputHandShake ( DeviceHandle Thandle ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 189

190 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioStopInputHandShake( DeviceHandle ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioStopInputHandShake( DeviceHandle ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioStopInputHandShake( DeviceHandle ); end; デバイス名 FBIDIO1 のデバイスのハンドシェーク入力を停止します 190

191 43. DioStopOutputHandShake 機能 デジタル入出力デバイスのハンドシェーク出力を停止します 書式 C 言語 INT DioStopOutputHandShake ( HANDLE DeviceHandle ); Visual Basic Declare Function DioStopOutputHandShake Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long _ )As Long Delphi function DioStopOutputHandShake ( DeviceHandle Thandle ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 191

192 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioStopOutputHandShake( DeviceHandle ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioStopOutputHandShake( DeviceHandle ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioStopOutputHandShake( DeviceHandle ); end; デバイス名 FBIDIO1 のデバイスのハンドシェーク出力を停止します 192

193 44. DioGetHandShakeStatus 機能 ハンドシェーク入出力の状態を取得します 書式 C 言語 INT DioGetHandShakeStatus ( HANDLE DeviceHandle, PDWORD DeviceStatus, PDWORD InputedBuffNum, PDWORD OutputedBuffNum ); Visual Basic Declare Function DioGetHandShakeStatus Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef DeviceStatus As Long, _ ByRef InputedBuffNum As Long, _ ByRef OutputedBuffNum As Long _ )As Long Delphi function DioGetHandShakeStatus ( DeviceHandle Thandle; var DeviceStatus DWORD; var InputedBuffNum DWORD; var OutputedBuffNum DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します DeviceStatus 現在のデバイスの状態を格納する変数へのポインタ ( 参照渡し ) を指定します 以下のビット構成で格納します ( 該当ビットが 1 で有効 ) bit 0 ハンドシェーク入力動作中 bit 1 ハンドシェーク出力動作中 InputedBuffNum ハンドシェーク入力実行中の場合 入力済みデータバッファ数を格納する変数へのポインタ ( 参照渡し ) を指定します OutputedBuffNum ハンドシェーク出力実行中の場合 残り出力バッファ数を格納する変数へのポインタ ( 参照渡し ) を指定します 193

194 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DWORD DeviceStatus; DWORD InputedBuffNum; DWORD OutputedBuffNum; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetHandShakeStatus( DeviceHandle, &DeviceStatus, &InputedBuffNum, &OutputedBuffNum ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim DeviceStatus As Long Dim InputedBuffNum As Long Dim OutputedBuffNum As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetHandShakeStatus( DeviceHandle, DeviceStatus, _ InputedBuffNum, OutputedBuffNum ) 194

195 Delphi var Ret Integer; Name String; DeviceHandle THandle; DeviceStatus DWORD; InputedBuffNum DWORD; OutputedBuffNum DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetHandShakeStatus( DeviceHandle, DeviceStatus, InputedBuffNum, OutputedBuffNum ); end; デバイス名 FBIDIO1 のデバイスの現在のデバイスの状態を取得します 195

196 45. DioGetOverlappedResult 機能 ハンドシェーク入出力 (DioInputHandShake/DioOutputHandShake) 関数の非同期コール時の 実際に入出力されたバイト数を取得します 同期コール時には 本関数は必要ありません 書式 C 言語 INT DioGetOverlappedResult ( HANDLE DeviceHandle, LPOVERLAPPED Overlapped, LPDWORD NumOfBytes, BOOL Wait ); Visual Basic Declare Function DioGetOverlappedResult Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef Overlapped As Long, _ ByRef NumOfBytes As Long, _ ByVal Wait As Boolean _ )As Long Delphi function DioGetOverlappedResult ( DeviceHandle Thandle; Overlapped Poverlapped; NumOfBytes PDWORD; Wait Boolean ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Overlapped DioInputHandShake/DioOutputHandShake 関数で指定した OVERLAPPED 構造体へのポインタ ( 参照渡し ) を指定します NumOfBytes 実際に入出力されたバイト数を格納する変数へのポインタ ( 参照渡し ) を指定します 196

197 Wait 非同期操作の完了を待つかどうかを指定します TRUE を指定すると この関数は 操作が完了するまで待機します FALSE を指定すると この関数は すぐに制御を返します このとき もし操作が未処理であれば 関数の戻り値は ERROR_IO_INCOMPLETE になります 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE Buffer[16]; DWORD NumOfBytesToRead; DWORD NumOfBytesRead; OVERLAPPED Overlapped; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); NumOfBytesToRead = 16; Ret = DioInputHandShake( DeviceHandle, &Buffer[0], NumOfBytesToRead, &NumOfBytesRead, &Overlapped ); Ret = DioGetOverlappedResult( DeviceHandle, &Overlapped, &NumOfBytesRead, TRUE ); 197

198 Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Buffer(16) As Byte Dim NumOfBytesToRead As Long Dim NumOfBytesRead As Long Dim Overlapped As OVERLAPPED Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) NumOfBytesToRead = 16 Ret = DioInputHandShake( DeviceHandle, Buffer(0), NumOfBytesToRead, _ NumOfBytesRead, Overlapped ) Ret = DioGetOverlappedResult( DeviceHandle, Overlapped, NumOfBytesRead, True ); Delphi var Ret Integer; Name String; DeviceHandle THandle; Buffer Array[0..15] of Byte; NumOfBytesToRead DWORD; NumOfBytesRead DWORD; Overlapped TOVERLAPPED; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); NumOfBytesToRead = 16; Ret = DioInputHandShake( NumOfBytesToRead, ); Ret = True ); end; デバイス名 FBIDIO1 のデバイスのハンドシェーク入出力関数の非同期コール時に入出力されたバイト数を取得します 198

199 46. DioSetTimeOut 機能 ハンドシェーク入出力時のタイムアウト時間を設定します ハンドシェーク入出力動作中は呼び出しが失敗します 書式 C 言語 HANDLE DioSetTimeOut ( HANDLE DeviceHandle, DWORD InputTotalTimeout, DWORD InputIntervalTimeout, DWORD OutputTotalTimeout, DWORD OutputIntervalTimeout ); Visual Basic Declare Function DioSetTimeOut Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal InputTotalTimeout As Long, _ ByVal InputIntervalTimeout As Long, _ ByVal OutputTotalTimeout As Long, _ ByVal OutputIntervalTimeout As Long _ )As Long Delphi function DioSetTimeOut ( DeviceHandle Thandle; InputTotalTimeout DWORD; InputIntervalTimeout DWORD; OutputTotalTimeout DWORD; OutputIntervalTimeout DWORD ) THandle; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します InputTotalTimeout 入力トータルタイムアウト値 [ 単位 ms] ハンドシェーク入力時のトータルタイムアウト値を設定します これは DioInputHandShake 関数 DioInputHandShakeEx 関数において指定したデータ長の入力が全て完了するまでの時間より大きい値を指定する必要があります 設定値 10~DWORD MAX 10ms 単位で指定 199

200 InputIntervalTimeout 入力インターバルタイムアウト値 [ 単位 ms] ハンドシェーク入力時の各接点情報間でのタイムアウト値を設定します これは DioInputHandShake 関数 DioInputHandShakeEx 関数において各接点情報の入力時における前の入力から次の入力までの時間より大きい値を指定する必要があります 設定値 10~DWORD MAX 10ms 単位で指定 OutputTotalTimeout 出力トータルタイムアウト値 [ 単位 ms] ハンドシェーク出力時のトータルタイムアウト値を設定します これは DioOutputHandShake 関数 DioOutputHandShakeEx 関数において指定したデータ長の出力が全て完了するまでの時間より大きい値を指定する必要があります 設定値 10~DWORD MAX 10ms 単位で指定 OutputIntervalTimeout 出力インターバルタイムアウト値 [ 単位 ms] ハンドシェーク出力時の各接点情報間でのタイムアウト値を設定します これは DioOutputHandShake 関数 DioOutputHandShakeEx 関数において各接点情報の出力時における前の出力から次の出力までの時間より大きい値を指定する必要があります 設定値 10~DWORD MAX 10ms 単位で指定 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 200

201 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioSetTimeOut( DeviceHandle, 0x1000, 0x10, 0x1000, 0x10 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioSetTimeOut( DeviceHandle, &H1000, &H10, &H1000, &H10 ); Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioSetTimeOut( DeviceHandle, $1000, $10, $1000, $10 ); end; デバイス名 FBIDIO1 のデバイスにおけるハンドシェーク入出力タイムアウト時間の設定を行います 201

202 47. DioGetTimeOut 機能 入出力時のタイムアウト設定値を取得します 書式 C 言語 HANDLE DioGetTimeOut ( HANDLE DeviceHandle, PDWORD InputTotalTimeout, PDWORD InputIntervalTimeout, PDWORD OutputTotalTimeout, PDWORD OutputIntervalTimeout ); Visual Basic Declare Function DioGetTimeOut Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef InputTotalTimeout As Long, _ ByRef InputIntervalTimeout As Long, _ ByRef OutputTotalTimeout As Long, _ ByRef OutputIntervalTimeout As Long _ )As Long Delphi function DioGetTimeOut ( DeviceHandle Thandle; var InputTotalTimeout DWORD; var InputIntervalTimeout DWORD; var OutputTotalTimeout DWORD; var OutputIntervalTimeout DWORD ) THandle; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します InputTotalTimeout 入力トータルタイムアウト設定値 [ 単位 ms] を格納する変数へのポインタ ( 参照渡し ) を指定します ハンドシェーク入力時のトータルタイムアウト設定が格納されます 202

203 InputIntervalTimeout 入力インターバルタイムアウト設定値 [ 単位 ms] を格納する変数へのポインタ ( 参照渡し ) を指定します ハンドシェーク入力時のインターバルタイムアウト設定値が格納されます OutputTotalTimeout 出力トータルタイムアウト設定値 [ 単位 ms] を格納する変数へのポインタ ( 参照渡し ) を指定します ハンドシェーク出力時のトータルタイムアウト設定値が格納されます OutputIntervalTimeout 出力インターバルタイムアウト設定値 [ 単位 ms] を格納する変数へのポインタ ( 参照渡し ) を指定します ハンドシェーク出力時のインターバルタイムアウト設定値が格納されます 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 203

204 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DWORD InputTotalTimeout; DWORD InputIntervalTimeout; DWORD OutputTotalTimeout; DWORD OutputIntervalTimeout; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetTimeOut( DeviceHandle, &InputTotalTimeout, &InputIntervalTimeout, &OutputTotalTimeout, &OutputIntervalTimeout ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim InputTotalTimeout As Long Dim InputIntervalTimeout As Long Dim OutputTotalTimeout As Long Dim OutputIntervalTimeout As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetTimeOut( DeviceHandle, InputTotalTimeout, InputIntervalTimeout, _ OutputTotalTimeout, OutputIntervalTimeout ); 204

205 Delphi var Ret Integer; Name String; DeviceHandle THandle; InputTotalTimeout DWORD; InputIntervalTimeout DWORD; OutputTotalTimeout DWORD; OutputIntervalTimeout DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetTimeOut( DeviceHandle, InputTotalTimeout, InputIntervalTimeout, OutputTotalTimeout, OutputIntervalTimeout ); end; デバイス名 FBIDIO1 のデバイスにおけるハンドシェーク入出力タイムアウト設定値の取得を行います 205

206 48. DioSetIrqMask 機能 デジタル入出力デバイスの割り込みマスク状態を設定します 書式 C 言語 INT DioSetIrqMask ( HANDLE DeviceHandle, BYTE IrqMask ); Visual Basic Declare Function DioSetIrqMask Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal IrqMask As Byte _ )As Integer Delphi function DioSetIrqMask ( DeviceHandle Thandle; IrqMask Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します IrqMask 割り込み要因のマスク / アンマスクを設定するデータを指定します bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 未使用未使用 SIGR SIGT SIG4 SIG3 SIG2 SIG1 SIGR = 外部割り込み SIGT = タイマ割り込み SIG1~SIG4 は DioSetIrqConfig 関数にて設定される割り込み要因それぞれ 0= マスク 1= アンマスクです 電源投入時はすべてマスク状態 (0) です PCI バスリセット時 外部リセット入力時は SIGR 以外がマスク状態 (0) になります SIGR のマスク / アンマスク状態は変更しません 206

207 PCI-2470 では パラメータ IrqMask の指定方法が下記のようになります bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit SIGT SIG "-" = 未使用 SIG = 異常検出割込みマスク OUT1~OUT8 の異常検出信号が OR された信号で 割込みを発生させるかどうかの設定を行います OUT1~OUT8 は それぞれに 個別にマスク設定が必要です 異常検出割込みを使用するには DioSetIrqMask で上記 SIG のアンマスクと DioOutputByte 等で各 OUT 端子に対応するアンマスクの両方が必要です SIGT = タイマ割込み それぞれ 0= マスク 1= アンマスクです PCI , PCI , PCI では パラメータ IrqMask の指定方法が下記のようになります bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 未使用未使用 SIGR SIGT 未使用未使用未使用未使用 SIGR = 外部割り込み SIGT = タイマ割り込みそれぞれ 0= マスク 1= アンマスクです 電源投入時はすべてマスク状態 (0) です PCI バスリセット時 外部リセット入力時は SIGR 以外がマスク状態 (0) になります SIGR のマスク / アンマスク状態は変更しません 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 割り込み要因のバッファリングの停止 バッファクリア割り込み要因のバッファリングを有効にした状態で 割り込みマスクが全てアンマスクされるとバッファリングを停止し バッファに溜まったイベントがクリアされます DioSetIrqMask 関数 DioEintSetIrqMask 関数 DioEintSetIrqMaskEx 関数で割り込みマスクの設定が変更可能です PCI U, PCI で DioSetIrqConfig 関数を使用する場合 DioSetIrqConfig 関数実行後に本関数を実行してください 207

208 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioSetIrqMask( DeviceHandle, 0x36 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioSetIrqMask( DeviceHandle, &H36 ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioSetIrqMask( DeviceHandle, $36 ); end; デバイス名 FBIDIO1 のデバイスの 割り込み要因の SIG1 と SIG4 をマスクします 208

209 49. DioGetIrqMask 機能 デジタル入出力デバイスの割り込みマスク状態を取得します 書式 C 言語 INT DioGetIrqMask ( HANDLE DeviceHandle, PBYTE IrqMask ); Visual Basic Declare Function DioGetIrqMask Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef IrqMask As Byte _ )As Integer Delphi function DioGetIrqMask ( DeviceHandle Thandle; var IrqMask Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します IrqMask 割り込み要因のマスク / アンマスクの状態を格納する変数へのポインタ ( 参照渡し ) を指定します bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 未使用未使用 SIGR SIGT SIG4 SIG3 SIG2 SIG1 SIGR = 外部割り込み SIGT = タイマ割り込み SIG1~SIG4 は DioSetIrqConfig 関数にて設定される割り込み要因それぞれ 0= マスク 1= アンマスクです 電源投入時はすべてマスク状態 (0) です PCI バスリセット時 外部リセット入力時は SIGR 以外がマスク状態 (0) になります SIGR のマスク / アンマスク状態は変更しません 209

210 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE IrqMask; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetIrqMask( DeviceHandle, &IrqMask ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim IrqMask As Byte Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetIrqMask( DeviceHandle, IrqMask ) Delphi var Ret Integer; Name String; DeviceHandle THandle; IrqMask Byte; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetIrqMask( DeviceHandle, IrqMask ); end; デバイス名 FBIDIO1 のデバイスの割り込み要因マスク状態を 変数 IrqMask へ格納します 210

211 50. DioSetIrqConfig 機能 デジタル入出力デバイスの割り込み要因の割り当て 割り込み発生論理を設定します 書式 C 言語 INT DioSetIrqConfig ( HANDLE DeviceHandle, BYTE IrqConfig ); Visual Basic Declare Function DioSetIrqConfig Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal IrqConfig As Byte _ )As Integer Delphi function DioSetIrqConfig ( DeviceHandle Thandle; IrqConfig Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します 211

212 IrqConfig 割り込み要因の割り当て 割り込み発生論理の設定データを指定します bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 EDS4 EDS3 EDS2 EDS1 SIG4 SIG3 SIG2 SIG1 割り込み発生論理設定状態 (EDS4~EDS1) EDS1 SIG1 の割り込み発生論理の設定 EDS2 SIG2 の割り込み発生論理の設定 EDS3 SIG3 の割り込み発生論理の設定 EDS4 SIG4 の割り込み発生論理の設定 0 = "High" "Low" 1 = "Low" "High" 割り込み要因割り当て (SIG1) 0 = IN1 1 = STB1 割り込み要因割り当て (SIG2) 0 = IN2 1 = IR.IN1 割り込み要因割り当て (SIG3) 0 = IN3 1 = ACK2 割り込み要因割り当て (SIG4) 0 = IN4 1 = IR.IN2 電源投入時 PCI バスリセット時 外部リセット信号入力時はすべて設定値が 0 となっています CPZ のみ SIG1 SIG2 SIG3 SIG4 が 1 となります 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 CPZ は SIG1 SIG2 SIG3 SIG4 が 1 固定です SIG1 SIG2 SIG3 SIG4 への設定は無視されますのでご注意ください PCI , PCI U, PCI は SIG1 SIG2 SIG3 SIG4 が 0 固定です SIG1 SIG2 SIG3 SIG4 への設定は 0 を指定して下さい PCI U, PCI で DioSetIrqMask 関数を使用する場合 本関数実行後に DioSetIrqMask 関数を実行してください 212

213 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioSetIrqConfig( DeviceHandle, 0x55 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioSetIrqConfig( DeviceHandle, &H55 ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioSetIrqConfig( DeviceHandle, $55 ); end; デバイス名 FBIDIO1 のデバイスの STB1 と ACK2 信号が "Low" "High" になった時に割り込みが発生するように設定します 213

214 51. DioGetIrqConfig 機能 デジタル入出力デバイスの割り込み要因の割り当て 割り込み発生論理の設定状態を取得します 書式 C 言語 INT DioGetIrqConfig ( HANDLE DeviceHandle, PBYTE IrqConfig ); Visual Basic Declare Function DioGetIrqConfig Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef IrqConfig As Byte _ )As Integer Delphi function DioGetIrqConfig ( DeviceHandle Thandle; var IrqConfig Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します 214

215 IrqConfig 割り込み要因の割り当て 割り込み発生論理の設定データを格納する変数へのポインタ ( 参照渡し ) を指定します bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 EDS4 EDS3 EDS2 EDS1 SIG4 SIG3 SIG2 SIG1 割り込み発生論理設定状態 (EDS4~EDS1) EDS1 SIG1 の割り込み発生論理の設定 EDS2 SIG2 の割り込み発生論理の設定 EDS3 SIG3 の割り込み発生論理の設定 EDS4 SIG4 の割り込み発生論理の設定 0 = "High" "Low" 1 = "Low" "High" 割り込み要因割り当て (SIG1) 0 = IN1 1 = STB1 割り込み要因割り当て (SIG2) 0 = IN2 1 = IR.IN1 割り込み要因割り当て (SIG3) 0 = IN3 1 = ACK2 割り込み要因割り当て (SIG4) 0 = IN4 1 = IR.IN2 電源投入時 PCI バスリセット時 外部リセット信号入力時はすべて設定値が 0 となっています 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 215

216 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE IrqConfig; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetIrqConfig( DeviceHandle, &IrqConfig ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim IrqConfig As Byte Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetIrqConfig( DeviceHandle, IrqConfig ) Delphi var Ret Integer; Name String; DeviceHandle THandle; IrqConfig Byte; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetIrqConfig( DeviceHandle, IrqConfig ); end; デバイス名 FBIDIO1 のデバイスの割り込み設定データを 変数 IrqConfig へ格納します 216

217 52. DioEventRequestPending 機能 デジタル入出力デバイスの割り込みイベント要求を待ちます OVERLAPPED 構造体 (Overlapped) を指定した非同期コールの場合 FBIDIO_ERROR_IO_PENDING を返し非同期での動作となります ご使用のインタフェースモジュールのタイプにより存在しない信号がございます インタフェースモジュールの USER'S MANUAL にてご使用のインタフェースモジュールの仕様をご確認ください DioSetIrqMask DioSetIrqConfig 関数により必要な割り込みイベントの設定 マスク解除を事前に行う必要があります 書式 C 言語 INT DioEventRequestPending ( HANDLE DeviceHandle, DWORD EventEnableMask, PDWORD EventBuf, LPOVERLAPPED Overlapped ); Visual Basic Declare Function DioEventRequestPending Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal EventEnableMask As Long, _ ByRef EventBuf As Long, _ ByRef Overlapped As OVERLAPPED _ )As Long Delphi function DioEventRequestPending ( DeviceHandle Thandle; EventEnableMask DWORD; var EventBuf DWORD; Overlapped Poverlapped ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します 217

218 EventEnableMask 許可するイベントを以下のビットアサインで指定します イベント内容 ( 該当ビットが 1 で有効 ) 割り込みイベント bit0 IN1 からの入力信号または STB1 からの入力信号 PCI-2470 の場合は OUT1~OUT8 異常検出信号の OR での割込みイベント bit1 IN2 からの入力信号または IR.IN1( 外部割り込み入力信号 ) からの入力信号 bit2 IN3 からの入力信号または ACK2 からの入力信号 bit3 IN4 からの入力信号または IR.IN2( 外部割り込み入力信号 ) からの入力信号 bit4 インターバルタイマ bit5 外部リセット入力 (RSTIN) 割り込み その他のビットには 0 を指定してください EventBuf 通知されたイベント内容を格納する変数へのポインタ ( 参照渡し ) を指定します 通知イベント内容 ( 該当ビットが 1 で有効 ) 割り込みイベント bit0 IN1 からの入力信号または STB1 からの入力信号 PCI-2470 の場合は OUT1~OUT8 異常検出信号の OR での割込みイベント bit1 IN2 からの入力信号または IR.IN1( 外部割り込み入力信号 ) からの入力信号 bit2 IN3 からの入力信号または ACK2 からの入力信号 bit3 IN4 からの入力信号または IR.IN2( 外部割り込み入力信号 ) からの入力信号 bit4 インターバルタイマ bit5 外部リセット入力 (RSTIN) 割り込み Overlapped イベント待ちに使用する OVERLAPPED 構造体へのポインタ ( 参照渡し ) を指定します ( 非同期処理 ) また NULL(0) を指定すると イベントが発生するまで DioEventRequestPending 関数は 処理を戻しません ( 同期処理 ) 218

219 戻り値 DioEventRequestPending 関数は Overlapped に NULL(0) 以外が指定された場合 FBIDIO_ERROR_IO_PENDING を返します その後 Win32API の WaitForSingleObject 関数等を呼び出して イベント待ちを行ってください Overlapped に NULL(0) が指定された場合 DioEventRequestPending 関数は イベント待ち状態になり イベントが発生したときに FBIDIO_ERROR_SUCCESS を返します いずれの場合も イベント発生後 EventBuf が指す位置へ 発生したイベントの情報が返されます FBIDIO_ERROR_IO_PENDING FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 DioSetIrqMask 関数で イベントを有効にしていなければイベントは発生しません Visual Basic Ver. 4.0 では マルチスレッドによる非同期処理は行えませんのでご注意ください イベント待ち処理を連続して実行する場合 Overlapped 構造体に指定するイベントハンドルは自動リセットを指定して生成して下さい 手動リセットで生成されたイベントハンドルを使用し イベント待ちの処理を抜けた後で ResetEvent を実行された場合 その間に発生したイベントを取りこぼす可能性があります 割り込み要因のバッファリングの開始割り込み要因のバッファリングを有効にした状態で 最初に DioEventRequestPending 関数 DioEventRequestPendingEx 関数を実行した時点から 割り込みのバッファリングを開始します 219

220 使用例 C 言語非同期処理 INT Ret; HANDLE DeviceHandle; DWORD EventBuff; OVERLAPPED Overlapped; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(0, FALSE, FALSE, NULL); Ret = DioEventRequestPending( DeviceHandle, 0x , &EventBuf, &Overlapped ); if (Ret == FBIDIO_ERROR_IO_PENDING) { // 非同期処理では WaitFirSingleObject を使ってイベントを待つので // DioEventRequestPending 実行後 他の処理を行った後でイベント待ちを // 行うことが可能 WaitForSingleObject(Overlapped.hEvent, INFINITE); } 同期処理 INT Ret; HANDLE DeviceHandle; DWORD EventBuf; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); // 同期処理では イベントが発生するまで DioEventRequestPending // 関数から処理は戻らない Ret = DioEventRequestPending( DeviceHandle, 1, 0x , &EventBuf, NULL); 220

221 Visual Basic 非同期処理 Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim EventBuf As Long Dim Overlapped As OVERLAPPED Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Overlapped.Offset = 0 Overlapped.OffsetHigh = 0 Overlapped.hEvent = CreateEvent(0, False, False, 0) Ret = DioEventRequestPending( DeviceHandle, &H5, EventBuf, 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 EventBuf As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEventRequestPending( DeviceHandle, 1, &H5, EventBuf, 0) 221

222 Delphi 非同期処理 var Ret Integer; Name String; DeviceHandle THandle; EventBuf DWORD; Overlapped TOVERLAPPED; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(nil, False, False, nil); Ret = DioEventRequestPending( DeviceHandle, $ , ); if Ret = FBIDIO_ERROR_IO_PENDING then begin Ret = WaitForSingleObject(Overlapped.hEvent, INFINITE); end; end; 同期処理 var Ret Integer; Name String; DeviceHandle THandle; EventBuf DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioEventRequestPending( DeviceHandle, $ , EventBuf, 0 ); end; デバイス名 FBIDIO1 のデバイスから IN1 からの入力信号または STB1 からの入力信号 および IN3 からの入力信号または ACK2 からの入力信号 の両方イベント要求を待ちます 222

223 53. DioEintSetIrqMask 機能 PCI-2162, CTP-2162, CPZ (IR1~IR32 まで ) のエッジ検出割り込みマスク状態を設定します DioEintSetIrqMask で有効にした割り込みは DioEventRequestPendingEx によるイベント処理に利用します DioEintSetFilterConfig により設定されているフィルタ時間以上のパルス幅を持つ入力が与えられたときにエッジ検出割り込みが発生します DioEintSetIrqMask により割り込みを有効にする場合 DioEintSetEdgeConfig/DioEintSetEdgeConfigEx によりエッジ検出条件の設定が行われていなければなりません 書式 C 言語 INT DioEintSetIrqMask ( HANDLE DeviceHandle, DWORD IrqMask ); Visual Basic Declare Function DioEintSetIrqMask Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal IrqMask As Long _ )As Integer Delphi function DioEintSetIrqMask ( DeviceHandle Thandle; IrqMask DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します IrqMask IR1~IR32 のエッジ検出割り込みのマスク / アンマスクを設定するデータを指定します bit31 bit30 bit1 bit0 IR32 IR31 IR2 IR1 電源投入時はすべてマスク状態 (0) です 0 マスク 1 アンマスク 223

224 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 割り込み要因のバッファリングの停止 バッファクリア割り込み要因のバッファリングを有効にした状態で 割り込みマスクが全てアンマスクされるとバッファリングを停止し バッファに溜まったイベントがクリアされます DioSetIrqMask 関数 DioEintSetIrqMask 関数 DioEintSetIrqMaskEx 関数で割り込みマスクの設定が変更可能です PCI , PCI , PCI で使用する場合 DioEintSetEdgeConfig 関数実行後は 本関数を必ず実行してください 224

225 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioEintSetIrqMask( DeviceHandle, 0x f ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintSetIrqMask( DeviceHandle, &HF ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioEintSetIrqMask( DeviceHandle, $ f ); end; デバイス名 FBIDIO1 のデバイス(PCI-2162, CTP-2162, CPZ ) の IN1~IN4 に対するエッジ検出割り込みを有効にします 225

226 54. DioEintGetIrqMask 機能 PCI-2162, CTP-2162, CPZ (IR1~IR32 まで ) のエッジ検出割り込みマスク状態を取得します 書式 C 言語 INT DioEintGetIrqMask ( HANDLE DeviceHandle, PDWORD IrqMask ); Visual Basic Declare Function DioEintGetIrqMask Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef IrqMask As Long _ )As Integer Delphi function DioEintGetIrqMask ( DeviceHandle Thandle; var IrqMask DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します IrqMask IR1~IR32 のエッジ検出割り込みのマスク / アンマスクを取得する変数へのポインタ ( 参照 渡し ) を指定します IrqMask の形式は 次のようになっています bit31 bit30 bit1 bit0 IR32 IR31 IR2 IR1 0 マスク 1 アンマスク 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 226

227 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DWORD IrqMask; DeviceHandle = DioOpen("FBIDIO1", 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 = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintGetIrqMask( DeviceHandle, IrqMask) Delphi var Ret Integer; Name String; DeviceHandle THandle; IrqMask DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioEintGetIrqMask( DeviceHandle, IrqMask); end; デバイス名 FBIDIO1 のデバイス(PCI-2162, CTP-2162, CPZ ) の割り込みマスク状態を IrqMask へ返します 227

228 55. DioEintSetIrqMaskEx 機能 PCI-2162, CTP-2162, CPZ のエッジ検出割り込みマスク状態を設定します DioEintSetIrqMaskEx で有効にした割り込みは DioEventRequestPendingEx によるイベント処理に利用します DioEintSetFilterConfig により設定されているフィルタ時間以上のパルス幅を持つ入力が与えられたときにエッジ検出割り込みが発生します DioEintSetIrqMaskEx により割り込みを有効にする場合 DioEintSetEdgeConfig/DioEintSetEdgeConfigEx によりエッジ検出条件の設定が行われていなければなりません 書式 C 言語 INT DioEintSetIrqMaskEx ( HANDLE DeviceHandle, INT No, DWORD IrqMask ); Visual Basic Declare Function DioEintSetIrqMaskEx Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByVal IrqMask As Long _ )As Integer Delphi function DioEintSetIrqMaskEx ( DeviceHandle Thandle; No Integer; IrqMask DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No 設定する接点を下記の識別子で指定します FBIDIO_IN1_32 IR1~IR32 の 32 点分のエッジ検出割り込みのマスク / アンマスクを設定します FBIDIO_IN33_64 IR33~IR64 の 32 点分のエッジ検出割り込みのマスク / アンマスクを設定します 228

229 IrqMask 対象接点のエッジ検出割り込みのマスク / アンマスクを設定するデータを指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 データフォーマット 設定するデータは下記のようにビット毎に接点と対応しています ビット bit31 bit30 bit29 bit2 bit1 bit0 FBIDIO_IN1_32 IR32 IR31 IR30 IR3 IR2 IR1 FBIDIO_IN33_64 IR64 IR63 IR62 IR35 IR34 IR33 0 マスク 1 アンマスク 割り込み要因のバッファリングの停止 バッファクリア割り込み要因のバッファリングを有効にした状態で 割り込みマスクが全てアンマスクされるとバッファリングを停止し バッファに溜まったイベントがクリアされます DioSetIrqMask 関数 DioEintSetIrqMask 関数 DioEintSetIrqMaskEx 関数で割り込みマスクの設定が変更可能です 229

230 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioEintSetIrqMaskEx( DeviceHandle, FBIDIO_IN1_32, 0x f ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintSetIrqMaskEx( DeviceHandle, FBIDIO_IN1_32, &HF ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioEintSetIrqMaskEx( DeviceHandle, FBIDIO_IN1_32, $ f ); end; デバイス名 FBIDIO1 のデバイス(PCI-2162, CTP-2162, CPZ ) の IN1~IN4 に対するエッジ検出割り込みを有効にします 230

231 56. DioEintGetIrqMaskEx 機能 PCI-2162, CTP-2162, CPZ のエッジ検出割り込みマスク状態を取得します 書式 C 言語 INT DioEintGetIrqMaskEx ( HANDLE DeviceHandle, INT No, PDWORD IrqMask ); Visual Basic Declare Function DioEintGetIrqMaskEx Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByRef IrqMask As Long _ )As Integer Delphi function DioEintGetIrqMaskEx ( DeviceHandle Thandle; No Integer; var IrqMask DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No 読み込む接点を下記の識別子で指定します FBIDIO_IN1_32 IR1~IR32 の 32 点分のエッジ検出割り込みのマスク / アンマスクを読み込みます FBIDIO_IN33_64 IR33~IR64 の 32 点分のエッジ検出割り込みのマスク / アンマスクを読み込みます IrqMask 読み込まれたエッジ検出割り込みのマスク / アンマスクを格納する変数へのポインタ ( 参照渡し ) を指定します 231

232 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット bit31 bit30 bit29 bit2 bit1 bit0 FBIDIO_IN1_32 IR32 IR31 IR30 IR3 IR2 IR1 FBIDIO_IN33_64 IR64 IR63 IR62 IR35 IR34 IR33 0 マスク 1 アンマスク 232

233 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DWORD IrqMask; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioEintGetIrqMaskEx( DeviceHandle, FBIDIO_IN1_32, &IrqMask ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim IrqMask As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintGetIrqMaskEx( DeviceHandle, FBIDIO_IN1_32, IrqMask) Delphi var Ret Integer; Name String; DeviceHandle THandle; IrqMask DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioEintGetIrqMaskEx( DeviceHandle, FBIDIO_IN1_32, IrqMask); end; デバイス名 FBIDIO1 のデバイス(PCI-2162, CTP-2162, CPZ ) の IR1~IR32 の割り込みマスク状態を GetIrqMask へ返します 233

234 57. DioEventRequestPendingEx 機能 デジタル入出力デバイスの割り込みイベント要求を待ちます OVERLAPPED 構造体 (Overlapped) を指定した非同期コールの場合 FBIDIO_ERROR_IO_PENDING を返し非同期での動作となります ご使用のインタフェースモジュールのタイプにより存在しない信号がございます インタフェースモジュールの USER'S MANUAL にてご使用のインタフェースモジュールの仕様をご確認ください DioSetIrqMask DioSetIrqConfig DioEintSetIrqMask DioEintSetIrqMaskEx DioEintSetEdgeConfig DioEintSetEdgeConfigEx 関数により必要な割り込みイベントの設定 マスク解除を事前に行う必要があります 書式 C 言語 INT DioEventRequestPendingEx ( HANDLE DeviceHandle, PDWORD EventEnableMask, PDWORD EventBuf, LPOVERLAPPED Overlapped, ); Visual Basic Declare Function DioEventRequestPendingEx Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef EventEnableMask As Long, _ ByRef EventBuf As Long, _ ByRef Overlapped As OVERLAPPED _ )As Long Delphi function DioEventRequestPendingEx ( DeviceHandle Thandle; var EventEnableMask DWORD; var EventBuf DWORD; Overlapped Poverlapped ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します 234

235 EventEnableMask 許可するイベントのマスク設定を格納しているバッファへのポインタ ( 参照渡し ) を指定します 各要素の内容は次のようになっています EventEnableMask + 0 割り込みイベント (DioEventRequestPendingと同じ) EventEnableMask + 1 IR1~IR32 立下りエッジ検出イベント (PCI-2162, CTP-2162, CPZ 専用イベント ) EventEnableMask + 2 IR1~IR32 立上りエッジ検出イベント (PCI-2162, CTP-2162, CPZ 専用イベント ) EventEnableMask + 3 IR33~IR64 立下りエッジ検出イベント (CPZ 専用イベント ) EventEnableMask + 4 IR33~IR64 立上りエッジ検出イベント (CPZ 専用イベント ) イベント内容 ( 該当ビットが 1 で有効 ) 割り込みイベント bit0 IN1 からの入力信号または STB1 からの入力信号 PCI-2470 の場合は OUT1~OUT8 異常検出信号の OR での割込みイベント bit1 IN2 からの入力信号または IR.IN1( 外部割り込み入力信号 ) からの入力信号 bit2 IN3 からの入力信号または ACK2 からの入力信号 bit3 IN4 からの入力信号または IR.IN2( 外部割り込み入力信号 ) からの入力信号 bit4 インターバルタイマ bit5 外部リセット入力 (RSTIN) 割り込み その他のビットには 0 を指定してください IR1~IR32 立下りエッジ検出イベント bit0 IR1 に立下りエッジが検出されたときのイベント bit1 IR2 に立下りエッジが検出されたときのイベント bit31 IR32 に立下りエッジが検出されたときのイベント IR1~IR32 立上りエッジ検出イベント bit0 IR1 に立上りエッジが検出されたときのイベント bit1 IR2 に立上りエッジが検出されたときのイベント bit31 IR32 に立上りエッジが検出されたときのイベント IR33~IR64 立下りエッジ検出イベント CPZ 以外の型式では値は無視されます bit0 IR33 に立下りエッジが検出されたときのイベント bit1 IR34 に立下りエッジが検出されたときのイベント bit31 IR64 に立下りエッジが検出されたときのイベント 235

236 IR33~IR64 立上りエッジ検出イベント CPZ 以外の型式では値は無視されます bit0 IR33 に立上りエッジが検出されたときのイベント bit1 IR34 に立上りエッジが検出されたときのイベント bit31 IR64 に立上りエッジが検出されたときのイベント EventBuf 通知されたイベント内容を格納するバッファへのポインタ ( 参照渡し ) です 各要素の内容は次のようになっています EventBuf+ 0 割り込みイベント EventBuf + 1 IR1~IR32 立下りエッジ検出イベント EventBuf + 2 IR1~IR32 立上りエッジ検出イベント EventBuf + 3 IR33~IR64 立下りエッジ検出イベント EventBuf + 4 IR33~IR64 立上りエッジ検出イベント通知イベント内容 ( 該当ビットが 1 で有効 ) 割り込みイベント bit0 IN1 からの入力信号または STB1 からの入力信号 PCI-2470 の場合は OUT1~OUT8 異常検出信号の OR での割込みイベント bit1 IN2 からの入力信号または IR.IN1( 外部割り込み入力信号 ) からの入力信号 bit2 IN3 からの入力信号または ACK2 からの入力信号 bit3 IN4 からの入力信号または IR.IN2( 外部割り込み入力信号 ) からの入力信号 bit4 インターバルタイマ bit5 外部リセット入力 (RSTIN) 割り込み IR1~IR32 立下りエッジ検出イベント bit0 IR1 に立下りエッジが検出されたときのイベント bit1 IR2 に立下りエッジが検出されたときのイベント bit31 IR32 に立下りエッジが検出されたときのイベント IR1~IR32 立上りエッジ検出イベント bit0 IR1 に立上りエッジが検出されたときのイベント bit1 IR2 に立上りエッジが検出されたときのイベント bit31 IR32 に立上りエッジが検出されたときのイベント IR33~IR64 立下りエッジ検出イベント CPZ 以外の型式では無効な値となります bit0 IR33 に立下りエッジが検出されたときのイベント bit1 IR34 に立下りエッジが検出されたときのイベント bit31 IR64 に立下りエッジが検出されたときのイベント 236

237 IR33~IR64 立上りエッジ検出イベント CPZ 以外の型式では無効な値となります bit0 IR33 に立上りエッジが検出されたときのイベント bit1 IR34 に立上りエッジが検出されたときのイベント bit31 IR64 に立上りエッジが検出されたときのイベント 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 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 DioSetIrqMask 関数 DioEintSetIrqMask 関数 DioEintSetIrqMaskEx 関数で イベントを有効にしていなければイベントは発生しません Visual Basic Ver. 4.0 では マルチスレッドによる非同期処理は行えませんのでご注意ください イベント待ち処理を連続して実行する場合 Overlapped 構造体に指定するイベントハンドルは自動リセットを指定して生成して下さい 手動リセットで生成されたイベントハンドルを使用し イベント待ちの処理を抜けた後で ResetEvent を実行された場合 その間に発生したイベントを取りこぼす可能性があります 割り込み要因のバッファリングの開始割り込み要因のバッファリングを有効にした状態で 最初に DioEventRequestPending 関数 DioEventRequestPendingEx 関数を実行した時点から 割り込みのバッファリングを開始します 237

238 使用例 C 言語非同期処理 INT Ret; HANDLE DeviceHandle; DWORD EventEnableMask[5]; DWORD EventBuff[5]; OVERLAPPED Overlapped; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); EventEnableMask[0] = 0x ; EventEnableMask[1] = 0; 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("FBIDIO1", FBIDIO_FLAG_NORMAL); EventEnableMask[0] = 0x ; EventEnableMask[1] = 0; EventEnableMask[2] = 0; EventEnableMask[3] = 0; EventEnableMask[4] = 0; // 同期処理では イベントが発生するまで DioEventRequestPendingEx // 関数から処理は戻らない Ret = DioEventRequestPendingEx( DeviceHandle, EventEnableMask, EventBuf, NULL ); 238

239 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 = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) EventEnableMask(0) = &H5; EventEnableMask(1) = 0; 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 = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) EventEnableMask(0) = &H5; EventEnableMask(1) = 0; EventEnableMask(2) = 0; EventEnableMask(3) = 0; EventEnableMask(4) = 0; Ret = DioEventRequestPendingEx( DeviceHandle, EventEnableMask(0), EventBuf(0), 0) 239

240 Delphi 非同期処理 var Ret Integer; Name String; DeviceHandle THandle; EventEnableMask Array[0..4] of DWORD; EventBuf Array[0..4] of DWORD; Overlapped TOVERLAPPED; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); EventEnableMask[0] = $ ; EventEnableMask[1] = 0; EventEnableMask[2] = 0; EventEnableMask[3] = 0; EventEnableMask[4] = 0; Overlapped.Offset = 0; Overlapped.OffsetHigh = 0; Overlapped.hEvent = CreateEvent(nil, False, False, nil); Ret = @Overlapped ); if Ret = FBIDIO_ERROR_IO_PENDING then begin Ret = WaitForSingleObject(Overlapped.hEvent, INFINITE); end; end; 同期処理 var Ret Integer; Name String; DeviceHandle THandle; EventEnableMask Array[0..4] of DWORD; EventBuf Array[0..4] of DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); EventEnableMask[0] = $ ; 240

241 EventEnableMask[1] = 0; EventEnableMask[2] = 0; EventEnableMask[3] = 0; EventEnableMask[4] = 0; Ret = 0); end; デバイス名 FBIDIO1 のデバイスから IN1 からの入力信号または STB1 からの入力信号 および IN3 からの入力信号または ACK2 からの入力信号 のイベント要求を待ちます 241

242 58. DioSetTimerConfig 機能 インターバルタイマの設定を行います 書式 C 言語 INT DioSetTimerConfig ( HANDLE DeviceHandle, BYTE TimerConfigValue ); Visual Basic Declare Function DioSetTimerConfig Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal TimerConfigValue As Byte _ )As Integer Delphi function DioSetTimerConfig ( DeviceHandle Thandle; TimerConfigValue Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します TimerConfigValue インターバルタイマを設定する ビットの組み合わせです タイマ周期は CTL5~CTL7 で設定した基準周期と CTL1~4 で設定した分周値の積となりま す ( 周期 = 基準周期 分周値 ) bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 未使用 CTL7 CTL6 CTL5 CTL4 CTL3 CTL2 CTL1 CTL1~CTL4 分周値設定 CTL4 CTL3 CTL2 CTL1 タイマ停止 分周 分周 分周 分周 分周 分周 分周 分周

243 9 分周 分周 分周 分周 分周 分周 分周 CTL5~CTL7 基準周期設定 CTL7 CTL6 CTL5 10µs µs ms ms ms PCI は 10µs を設定することはできません 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioSetTimerConfig( DeviceHandle, 0x38 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioSetTimerConfig( DeviceHandle, &H38 ) 243

244 Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioSetTimerConfig( DeviceHandle, $38 ); end; デバイス名 FBIDIO1 のデバイスのインターバルタイマを 分周値 8 基準周期 10ms で設定を行います 244

245 59. DioGetTimerConfig 機能 インターバルタイマの設定情報を取得します 書式 C 言語 INT DioGetTimerConfig ( HANDLE DeviceHandle, PBYTE TimerConfigValue ); Visual Basic Declare Function DioGetTimerConfig Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef TimerConfigValue As Byte _ )As Integer Delphi function DioGetTimerConfig ( DeviceHandle Thandle; var TimerConfigValue Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します TimerConfigValue インターバルタイマの設定データを格納する変数へのポインタ ( 参照渡し ) を指定します タイマ周期は CTL5~CTL7 で設定した基準周期と CTL1~CTL4 で設定した分周値の積となり ます ( 周期 = 基準周期 分周値 ) bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 未使用 CTL7 CTL6 CTL5 CTL4 CTL3 CTL2 CTL1 CTL1~CTL4 分周値設定 CTL4 CTL3 CTL2 CTL1 タイマ停止 分周 分周 分周 分周 分周 分周 分周 分周

246 9 分周 分周 分周 分周 分周 分周 分周 CTL5~CTL7 基準周期設定 CTL7 CTL6 CTL5 10µs µs ms ms ms 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE TimerConfigValue; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetTimerConfig( DeviceHandle, &TimerConfigValue ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim TimerConfigValue As Byte Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetTimerConfig( DeviceHandle, TimerConfigValue ) 246

247 Delphi var Ret Integer; Name String; DeviceHandle THandle; TimerConfigValue Byte; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetTimerConfig( DeviceHandle, TimerConfigValue ); end; デバイス名 FBIDIO1 のデバイスからインターバルタイマの設定情報を変数 TimerConfigValue へ格納します 247

248 60. DioGetTimerCount 機能 インターバルタイマのカウント値を取得します 書式 C 言語 INT DioGetTimerCount ( HANDLE DeviceHandle, PBYTE TimerCount ); Visual Basic Declare Function DioGetTimerCount Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef TimerCount As Byte _ )As Integer Delphi function DioGetTimerCount ( DeviceHandle Thandle; var TimerCount Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します TimerCount インタフェースモジュール上のインターバルタイマの現在のカウンタ値を格納する変数へのポインタ ( 参照渡し ) を指定します DioSetTimerConfigにより設定した周期における 現在の状態値を 4bitカウンタで取得しま す bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 未使用 未使用 未使用 未使用 CTL4 CTL3 CTL2 CTL1 CTL1~CTL4 分周値設定 CTL4 CTL3 CTL2 CTL1 0 カウント カウント カウント カウント カウント カウント カウント

249 7 カウント カウント カウント カウント カウント カウント カウント カウント カウント 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE TimerCount; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioGetTimerCount( DeviceHandle, &TimerCount ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim TimerCount As Byte Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioGetTimerCount( DeviceHandle, TimerCount ) 249

250 Delphi var Ret Integer; Name String; DeviceHandle THandle; TimerCount Byte; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioGetTimerCount( DeviceHandle, TimerCount ); end; デバイス名 FBIDIO1 のデバイスからインターバルタイマのカウント値を取得します 250

251 61. DioEintSetEdgeConfig 機能 PCI-2162, CTP-2162, CPZ (IR1~IR32 まで ) のエッジ検出機能を設定します DioEintSetEdgeConfig で設定したエッジ検出設定は 次の関数で得られるエッジ検出に影響を与えます DioEintInputPoint DioEintInputByte DioEintInputWord DioEintInputDword DioEventRequestPendingEx 書式 C 言語 INT DioEintSetEdgeConfig ( HANDLE DeviceHandle, DWORD FallEdgeConfig, DWORD RiseEdgeConfig ); Visual Basic Declare Function DioEintSetEdgeConfig Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal FallEdgeConfig As Long, _ ByVal RiseEdgeConfig As Long _ )As Integer Delphi function DioEintSetEdgeConfig ( DeviceHandle Thandle; FallEdgeConfig DWORD; RiseEdgeConfig DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します FallEdgeConfig IR1~IR32 の立下りエッジ検出を有効にするか 無効にするかを指定します bit31 bit30 bit1 bit0 IR32 IR31 IR2 IR1 電源投入時はすべて無効 (0) です 0 無効 1 有効 251

252 RiseEdgeConfig IR1~IR32 の立上りエッジ検出を有効にするか 無効にするかを指定します bit31 bit30 bit1 bit0 IR32 IR31 IR2 IR1 電源投入時はすべて無効 (0) です 0 無効 1 有効 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 PCI , PCI , PCI で使用する場合本関数実行後は DioEintSetIrqMask 関数を必ず実行してください 252

253 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioEintSetEdgeConfig( DeviceHandle, 0x f, 0x000000f0 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintSetEdgeConfig( DeviceHandle, &HF, &HF0 ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioEintSetEdgeConfig( DeviceHandle, $ f, $000000f0); end; デバイス名 FBIDIO1 のデバイス(PCI-2162, CTP-2162, CPZ ) の IR1~IR4 に対する立下りエッジ検出と IR5~IR8 に対する立上りエッジ検出を有効にします 253

254 62. DioEintGetEdgeConfig 機能 PCI-2162, CTP-2162, CPZ (IR1~IR32 まで ) の現在のエッジ検出設定を取得します 書式 C 言語 INT DioEintGetEdgeConfig ( HANDLE DeviceHandle, PDWORD FallEdgeConfig, PDWORD RiseEdgeConfig ); Visual Basic Declare Function DioEintGetEdgeConfig Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef FallEdgeConfig As Long, _ ByRef RiseEdgeConfig As Long _ )As Integer Delphi function DioEintGetEdgeConfig ( DeviceHandle Thandle; var FallEdgeConfig DWORD; var RiseEdgeConfig DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します FallEdgeConfig IR1~IR32 の立下りエッジ検出設定状態を返す変数へのポインタ ( 参照渡し ) を指定します FallEdgeConfig には 次の形式で立下りエッジ検出設定が返されます bit31 bit30 bit1 bit0 IR32 IR31 IR2 IR1 電源投入時はすべて無効 (0) です 0 無効 1 有効 254

255 RiseEdgeConfig IR1~IR32 の立上りエッジ検出設定状態を返す変数へのポインタ ( 参照渡し ) を指定します RiseEdgeConfig には 次の形式で立上りエッジ検出設定が返されます bit31 bit30 bit1 bit0 IR32 IR31 IR2 IR1 電源投入時はすべて無効 (0) です 0 無効 1 有効 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DWORD FallEdgeConfig, RiseEdgeConfig; DeviceHandle = DioOpen("FBIDIO1", 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 = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintGetEdgeConfig( DeviceHandle, FallEdgeConfig, RiseEdgeConfig) 255

256 Delphi var Ret Integer; Name String; DeviceHandle THandle; FallEdgeConfig DWORD; RiseEdgeConfig DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioEintGetEdgeConfig( DeviceHandle, FallEdgeConfig, RiseEdgeConfig); end; デバイス名 FBIDIO1 のデバイス(PCI-2162, CTP-2162, CPZ ) の立下りエッジ検出設定状態を FallEdgeConfig に 立上りエッジ検出設定を RiseEddgeConfig へ返します 256

257 63. DioEintSetEdgeConfigEx 機能 PCI-2162, CTP-2162, CPZ のエッジ検出機能を設定します DioEintSetEdgeConfigEx で設定したエッジ検出設定は 次の関数で得られるエッジ検出に影響を与えます DioEintInputPoint DioEintInputByte DioEintInputWord DioEintInputDword DioEventRequestPendingEx 書式 C 言語 INT DioEintSetEdgeConfigEx ( HANDLE DeviceHandle, INT No, DWORD FallEdgeConfig, DWORD RiseEdgeConfig, ); Visual Basic Declare Function DioEintSetEdgeConfigEx Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByVal FallEdgeConfig As Long, _ ByVal RiseEdgeConfig As Long _ )As Integer Delphi function DioEintSetEdgeConfigEx ( DeviceHandle Thandle; No Integer; FallEdgeConfig DWORD; RiseEdgeConfig DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No 設定する接点を下記の識別子で指定します FBIDIO_IN1_32 IR1~IR32 の 32 点分のエッジ検出を設定します FBIDIO_IN33_64 IR33~IR64 の 32 点分のエッジ検出を設定します FallEdgeConfig 対象接点の立ち下がりエッジ検出を有効にするか 無効にするかを指定します 257

258 RiseEdgeConfig 対象接点の立ち上がりエッジ検出を有効にするか 無効にするかを指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 データフォーマット 設定するデータは下記のようにビット毎に接点と対応しています ビット bit31 bit30 bit29 bit2 bit1 bit0 FBIDIO_IN1_32 IR32 IR31 IR30 IR3 IR2 IR1 FBIDIO_IN33_64 IR64 IR63 IR62 IR35 IR34 IR33 0 無効 1 有効 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioEintSetEdgeConfigEx( DeviceHandle, FBIDIO_IN1_32, 0x f, 0x000000f0 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintSetEdgeConfigEx( DeviceHandle, FBIDIO_IN1_32, &HF, &HF0 ) 258

259 Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioEintSetEdgeConfigEx( DeviceHandle, FBIDIO_IN1_32, $ f, $000000f0); end; デバイス名 FBIDIO1 のデバイス(PCI-2162, CTP-2162, CPZ ) の IR1~IR4 に対する立下りエッジ検出と IR5~IR8 に対する立上りエッジ検出を有効にします 259

260 64. DioEintGetEdgeConfigEx 機能 PCI-2162, CTP-2162, CPZ の現在のエッジ検出設定を取得します 書式 C 言語 INT DioEintGetEdgeConfigEx ( HANDLE DeviceHandle, INT No, PDWORD FallEdgeConfig, PDWORD RiseEdgeConfig ); Visual Basic Declare Function DioEintGetEdgeConfigEx Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByRef FallEdgeConfig As Long, _ ByRef RiseEdgeConfig As Long _ )As Integer Delphi function DioEintGetEdgeConfigEx ( DeviceHandle Thandle; No Integer; var FallEdgeConfig DWORD; var RiseEdgeConfig DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No 読み込む接点を下記の識別子で指定します FBIDIO_IN1_32 IR1~IR32 の 32 点分のエッジ検出設定を読み込みます FBIDIO_IN33_64 IR33~IR64 の 32 点分のエッジ検出設定を読み込みます FallEdgeConfig 読み込まれた立下りエッジ検出設定を格納する変数へのポインタ ( 参照渡し ) を指定します RiseEdgeConfig 読み込まれた立上りエッジ検出設定を格納する変数へのポインタ ( 参照渡し ) を指定します 260

261 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット bit31 bit30 bit29 bit2 bit1 bit0 FBIDIO_IN1_32 IR32 IR31 IR30 IR3 IR2 IR1 FBIDIO_IN33_64 IR64 IR63 IR62 IR35 IR34 IR33 0 無効 1 有効 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DWORD FallEdgeConfig, RiseEdgeConfig; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioEintGetEdgeConfigEx( DeviceHandle, FBIDIO_IN1_32, &FallEdgeConfig, &RiseEdgeConfig ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim FallEdgeConfig As Long Dim RiseEdgeConfig As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintGetEdgeConfigEx( DeviceHandle, FBIDIO_IN1_32, _ FallEdgeConfig, RiseEdgeConfig) 261

262 Delphi var Ret Integer; Name String; DeviceHandle THandle; FallEdgeConfig DWORD; RiseEdgeConfig DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); begin Ret = DioEintGetEdgeConfigEx( DeviceHandle, FBIDIO_IN1_32, FallEdgeConfig, RiseEdgeConfig); end; デバイス名 FBIDIO1 のデバイス(PCI-2162, CTP-2162, CPZ ) の IR1~IR32 の立下りエッジ検出設定状態を FallEdgeConfig に 立上りエッジ検出設定を RiseEddgeConfig へ返します 262

263 65. DioEintInputPoint 機能 任意の点数のエッジ検出データを読み込みます 指定した開始接点番号から 1 接点づつ INT 型の変数にデータが格納されます DioEintInputPoint により エッジ検出データを読み込んだ接点のエッジ検出データはクリアされます DioEintInputPoint は PCI-2162, CTP-2162, CPZ 専用関数です 書式 C 言語 INT DioEintInputPoint ( HANDLE DeviceHandle, PINT Buffer, DWORD StartNum, DWORD Num, ); Visual Basic Declare Function DioEintInputPoint Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByRef Buffer As Long, _ ByVal StartNum As Long, _ ByVal Num As Long _ )As Long Delphi function DioEintInputPoint ( DeviceHandle Thandle; Buffer Pinteger; StartNum DWORD; Num DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Buffer デバイスから読み取ったデータを受け取るバッファを指すポインタ ( 参照渡し ) を指定します Buffer が指すバッファ領域には 次の形式でエッジ検出データが格納されます Buffer + 0 エッジ検出データ 1(StartNum で指定した接点 ) Buffer + 1 エッジ検出データ 2(StartNum で指定した接点 + 1) Buffer + Num - 1 エッジ検出データ n(startnum で指定した接点 + Num - 1) 263

264 エッジ検出データ bit31~bit2 bit1 bit0 0 立上りエッジ 立下りエッジ 0 エッジなし 1 エッジあり StartNum 入力開始接点番号 1~64 を指定します Num 入力接点数を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; INT nbuffer[8]; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioEintInputPoint( DeviceHandle, &Buffer[0], 16, 8 ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Buffer(8) As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintInputPoint( DeviceHandle, Buffer(0), 16, 8 ) 264

265 Delphi var Ret Integer; Name String; DeviceHandle THandle; Buffer Array[0..7] of Integer; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioEinrInputPoint( 16, 8 ); end; デバイス名 FBIDIO1 のデバイス(PCI-2162, CTP-2162, CPZ ) の接点 16 番から接点 23 番までの接点状態を読み込みます 265

266 66. DioEintInputByte 機能 PCI-2162, CTP-2162, CPZ の接点 8 点分のエッジ検出データを読み込みます DioEintInputByte によりエッジ検出データを読み出しを行った接点のエッジ検出データはクリアされます DioEintInputByte は PCI-2162, CTP-2162, CPZ 専用関数です 書式 C 言語 INT DioEintInputByte ( HANDLE DeviceHandle, INT No, PBYTE FallValue, PBYTE RiseValue ); Visual Basic Declare Function DioEintInputByte Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByRef FallValue As Byte, _ ByRef RiseValue As Byte _ )As Long Delphi function DioEintInputByte ( DeviceHandle Thandle; No Integer; var FallValue Byte; var RiseValue Byte ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No 読み込む接点を下記の識別子で指定します FBIDIO_IN1_8 IR1~IR8 の 8 点分のデータを読み込みます FBIDIO_IN9_16 IR9~IR16 の 8 点分のデータを読み込みます FBIDIO_IN17_24 IR17~IR24 の 8 点分のデータを読み込みます FBIDIO_IN25_32 IR25~IR32 の 8 点分のデータを読み込みます FBIDIO_IN33_40 IR33~IR40 の 8 点分のデータを読み込みます FBIDIO_IN41_48 IR41~IR48 の 8 点分のデータを読み込みます FBIDIO_IN49_56 IR49~IR56 の 8 点分のデータを読み込みます FBIDIO_IN57_64 IR57~IR64 の 8 点分のデータを読み込みます 266

267 FallValue 立下りエッジ検出データを格納する変数へのポインタ ( 参照渡し ) を指定します RiseValue 立上りエッジ検出データを格納する変数へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_IN1_8 IR8 IR7 IR6 IR5 IR4 IR3 IR2 IR1 FBIDIO_IN9_16 IR16 IR15 IR14 IR13 IR12 IR11 IR10 IR9 FBIDIO_IN17_24 IR24 IR23 IR22 IR21 IR20 IR19 IR18 IR17 FBIDIO_IN25_32 IR32 IR31 IR30 IR29 IR28 IR27 IR26 IR25 FBIDIO_IN33_40 IR40 IR39 IR38 IR37 IR36 IR35 IR34 IR33 FBIDIO_IN41_48 IR48 IR47 IR46 IR45 IR44 IR43 IR42 IR41 FBIDIO_IN49_56 IR56 IR55 IR54 IR53 IR52 IR51 IR50 IR49 FBIDIO_IN57_64 IR64 IR63 IR62 IR61 IR60 IR59 IR58 IR57 データ 0 エッジ検出なし データ 1 エッジ検出あり 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE FallValue, RiseValue; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioEintInputByte( DeviceHandle, FBIDIO_IN1_8, &FallValue, &RiseValue ); 267

268 Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim FallValue As Byte Dim RiseValue As Byte Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintInputByte( DeviceHandle, FBIDIO_IN1_8, FallValue, RiseValue ) Delphi var Ret Integer; Name String; DeviceHandle THandle; FallValue Byte; RiseValue Byte; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioEintInputByte( DeviceHandle, FBIDIO_IN1_8, FallValue, RiseValue ); end; デバイス名 FBIDIO1 のデバイス(PCI-2162, CTP-2162, CPZ ) の IR1~IR8 のエッジ検出データを 変数 FallValue と RiseValue に取得します 268

269 67. DioEintInputWord 機能 PCI-2162, CTP-2162, CPZ の接点 16 点分のエッジ検出データを読み込みます DioEintInputWord によりエッジ検出データを読み出しを行った接点のエッジ検出データはクリアされます DioEintInputWord は PCI-2162, CTP-2162, CPZ 専用関数です 書式 C 言語 INT DioEintInputWord ( HANDLE DeviceHandle, INT No, PWORD FallValue, PWORD RiseValue, ); Visual Basic Declare Function DioEintInputWord Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByRef FallValue As Integer, _ ByRef RiseValue As Integer _ )As Long Delphi function DioEintInputWord ( DeviceHandle Thandle; No Integer; var FallValue Word; var RiseValue Word ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No 読み込む接点を下記の識別子で指定します FBIDIO_IN1_16 IR1~IR16 の 16 点分のデータを読み込みます FBIDIO_IN17_32 IR17~IR32 の 16 点分のデータを読み込みます FBIDIO_IN33_48 IR33~IR48 の 16 点分のデータを読み込みます FBIDIO_IN49_64 IR49~IR64 の 16 点分のデータを読み込みます FallValue 立下りエッジ検出データを格納する変数へのポインタ ( 参照渡し ) を指定します 269

270 RiseValue 立上りエッジ検出データを格納する変数へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット bit15 bit14 bit13 bit2 bit1 bit0 FBIDIO_IN1_16 IR16 IR15 IR14 IR3 IR2 IR1 FBIDIO_IN17_32 IR32 IR31 IR30 IR19 IR18 IR17 FBIDIO_IN33_48 IR48 IR47 IR46 IR35 IR34 IR33 FBIDIO_IN49_64 IR64 IR63 IR62 IR51 IR50 IR49 データ 0 エッジ検出なし データ 1 エッジ検出あり 使用例 C 言語 INT Ret; HANDLE DeviceHandle; WORD FallValue, RiseValue; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioEintInputWord( DeviceHandle, FBIDIO_IN1_16, &FallValue, &RiseValue ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim FallValue As Integer Dim RiseValue As Integer Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintInputWord( DeviceHandle, FBIDIO_IN1_16, FallValue, RiseValue ) 270

271 Delphi var Ret Integer; Name String; DeviceHandle THandle; FallValue Word; RiseValue Word; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioEintInputWord( DeviceHandle, FBIDIO_IN1_16, FallValue, RiseValue ); end; デバイス名 FBIDIO1 のデバイス(PCI-2162, CTP-2162, CPZ ) の IR1~IR16 のエッジ検出データを 変数 FallValue と RiseValue に取得します 271

272 68. DioEintInputDword 機能 PCI-2162, CTP-2162, CPZ の接点 32 点分のエッジ検出データを読み込みます DioEintInputDword によりエッジ検出データを読み出しを行った接点のエッジ検出データはクリアされます DioEintInputDword は PCI-2162, CTP-2162, CPZ 専用関数です 書式 C 言語 INT DioEintInputDword ( HANDLE DeviceHandle, INT No, PDWORD FallValue, PDWORD RiseValue, ); Visual Basic Declare Function DioEintInputDword Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByRef FallValue As Long, _ ByRef RiseValue As Long _ )As Long Delphi function DioEintInputDword ( DeviceHandle Thandle; No Integer; var FallValue DWORD; var RiseValue DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No 読み込む接点を下記の識別子で指定します FBIDIO_IN1_32 IR1~IR32 の 32 点分のデータを読み込みます FBIDIO_IN33_64 IR33~IR64 の 32 点分のデータを読み込みます FallValue 立下りエッジ検出データを格納する変数へのポインタ ( 参照渡し ) を指定します 272

273 RiseValue 立上りエッジ検出データを格納する変数へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット bit31 bit30 bit29 bit2 bit1 bit0 FBIDIO_IN1_32 IR32 IR31 IR30 IR3 IR2 IR1 FBIDIO_IN33_64 IR64 IR63 IR62 IR35 IR34 IR33 データ 0 エッジ検出なし データ 1 エッジ検出あり 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DWORD FallValue, RiseValue; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioEintInputDword( DeviceHandle, FBIDIO_IN1_32, &FallValue, &RiseValue ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim FallValue As Long Dim RiseValue As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintInputDword( DeviceHandle, FBIDIO_IN1_32, FallValue, RiseValue ) 273

274 Delphi var Ret Integer; Name String; DeviceHandle THandle; FallValue DWORD; RiseValue DWORD; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioEintInputDword( DeviceHandle, FBIDIO_IN1_32, FallValue, RiseValue ); end; デバイス名 FBIDIO1 のデバイス(PCI-2162, CTP-2162, CPZ ) の IR1~IR32 のエッジ検出データを 変数 FallValue と RiseValue に取得します 274

275 69. DioEintSetFilterConfig 機能 PCI-2162, CTP-2162, CPZ , PCI U, PCI のデジタルフィルタ機能を設定します DioEintSetFilterConfig で設定したフィルタ時間よりも短い幅のパルスに対して無視するようになります DioEintSetFilterConfig は PCI-2162, CTP-2162, CPZ , PCI U, PCI 専用の関数です DioEintSetFilterConfig で指定されたデジタルフィルタは 次の関数の実行時に影響を与えます DioEintInputPoint DioEintInputByte DioEintInputWord DioEintInputDword DioEventRequestPendingEx PCI U, PCI の場合は以下の関数の実行時に影響を与えます DioEventRequestPending 書式 C 言語 INT DioEintSetFilterConfig ( HANDLE DeviceHandle, INT No, INT FilterConfig, ); Visual Basic Declare Function DioEintSetFilterConfig Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByVal FilterConfig As Long _ )As Integer Delphi function DioEintSetFilterConfig ( DeviceHandle Thandle; No Integer; FilterConfig Integer ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します 275

276 No フィルタ設定を行う接点を下記の識別子で指定します FBIDIO_IN1_8 IR1~IR8 のフィルタを設定します FBIDIO_IN9_16 IR9~IR16 のフィルタを設定します FBIDIO_IN17_24 IR17~IR24 のフィルタを設定します FBIDIO_IN25_32 IR25~IR32 のフィルタを設定します FBIDIO_IN33_40 IR33~IR40 のフィルタを設定します FBIDIO_IN41_48 IR41~IR48 のフィルタを設定します FBIDIO_IN49_56 IR49~IR56 のフィルタを設定します FBIDIO_IN57_64 IR57~IR64 のフィルタを設定します FBIDIO_IRIN1_2_STB1 IR.IN1 IR.IN2 STB1 のフィルタを設定します FilterConfig フィルタ時間を指定します 設定可能なフィルタ設定は次のとおりです bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 0 TBS TCN TBS 基準クロック指定 TCN カウント数設定 TCN\TBS '000' '001' '010' '011' '100' '101' '110' '111' '0000' '0001' 125ns 1µs 10µs 100µs 1ms 10ms 100ms 無効 '0010' 250ns 2µs 20µs 200µs 2ms 20ms 200ms 無効 '0011' 375ns 3µs 30µs 300µs 3ms 30ms 300ms 無効 '0100' 500ns 4µs 40µs 400µs 4ms 40ms 400ms 無効 '0101' 625ns 5µs 50µs 500µs 5ms 50ms 500ms 無効 '0110' 750ns 6µs 60µs 600µs 6ms 60ms 無効 無効 '0111' 875ns 7µs 70µs 700µs 7ms 70ms 無効 無効 '1000' 1000ns 8µs 80µs 800µs 8ms 80ms 無効 無効 '1001' 1125ns 9µs 90µs 900µs 9ms 90ms 無効 無効 '1010' 1250ns 10µs 100µs 1000µs 10ms 100ms 無効 無効 '1011' 1375ns 11µs 110µs 1100µs 11ms 110ms 無効 無効 '1100' 1500ns 12µs 120µs 1200µs 12ms 120ms 無効 無効 '1101' 1625ns 13µs 130µs 1300µs 13ms 130ms 無効 無効 '1110' 1750ns 14µs 140µs 1400µs 14ms 140ms 無効 無効 '1111' 1875ns 15µs 150µs 1500µs 15ms 150ms 無効 無効 - フィルタなし 電源投入時の PCI-2162, CTP-2162 の初期値は全接点 00h( フィルタなし ) です CPZ の初期値は全接点 15h(5µs) です 276

277 PCI , PCI , PCI では パラメータ FilterConfig の指定方法が下記のようになります フィルタ時間を指定します 設定可能なフィルタ設定は次のとおりです bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 0 TBS TCN TBS 基準クロック指定 TCN カウント数設定 TCN\TBS '00000' '00001' 1us 10us 100us - '00010' 2us 20us 200us - '00011' 3us 30us 300us - '00100' 4us 40us 400us - '00101' 5us 50us 500us - '11011' 27us 270us 2700us - '11100' 28us 280us 2800us - '11101' 29us 290us 2900us - '11110' 30us 300us 3000us - '11111' 31us 310us 3100us - - フィルタなし 電源投入時の初期値は全接点 00h( フィルタなし ) です 277

278 PCI U, PCI では パラメータ FilterConfig の指定方法が下記のようになります 10us 未満のフィルタは設定出来ません また 基準クロック 1 周期分 +5us の誤差が生じます フィルタ時間を指定します 設定可能なフィルタ設定は次のとおりです bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 0 TBS TCN TBS 基準クロック指定 TCN カウント数設定 TCN\TBS '00000' '00001' - 10us 100us - '00010' - 20us 200us - '00011' - 30us 300us - '00100' - 40us 400us - '00101' - 50us 500us - '01001' - 90us 900us - '01010' 10us 100us 1000us - '01011' 11us 110us 1100us - '11011' 27us 270us 2700us - '11100' 28us 280us 2800us - '11101' 29us 290us 2900us - '11110' 30us 300us 3000us - '11111' 31us 310us 3100us - - フィルタなし 電源投入時の初期値は全接点 00h( フィルタなし ) です 278

279 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioEintSetFilterConfig( DeviceHandle, FBI_DIO_IN1_8, 0x ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintSetFilterConfig( DeviceHandle, FBI_DIO_IN1_8, &H31 ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioEintSetEdgeConfig( DeviceHandle, FBI_DIO_IN1_8, $ ); end; デバイス名 FBIDIO1 のデバイス(PCI-2162, CTP-2162, CPZ ) の IR1~IR8 に対するデジタルフィルタを 100µs に設定します 279

280 70. DioEintGetFilterConfig 機能 PCI-2162, CTP-2162, CPZ , PCI U, PCI のデジタルフィルタ設定値を取得します DioEintGetFilterConfig は PCI-2162, CTP-2162, CPZ , PCI U, PCI 専用の関数です 書式 C 言語 INT DioEintGetFilterConfig ( HANDLE DeviceHandle, INT No, PINT FilterConfig ); Visual Basic Declare Function DioEintGetFilterConfig Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByRef FilterConfig As Long _ )As Integer Delphi function DioEintGetFilterConfig ( DeviceHandle Thandle; No Integer; var FilterConfig Integer ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No フィルタ設定を取得する接点を下記の識別子で指定します FBIDIO_IN1_8 IR1~IR8 のフィルタ設定を取得します FBIDIO_IN9_16 IR9~IR16 のフィルタ設定を取得します FBIDIO_IN17_24 IR17~IR24 のフィルタ設定を取得します FBIDIO_IN25_32 IR25~IR32 のフィルタ設定を取得します FBIDIO_IN33_40 IR33~IR40 のフィルタ設定を取得します FBIDIO_IN41_48 IR41~IR48 のフィルタ設定を取得します FBIDIO_IN49_56 IR49~IR56 のフィルタ設定を取得します FBIDIO_IN57_64 IR57~IR64 のフィルタ設定を取得します FBIDIO_IRIN1_2_STB1 IR.IN1 IR.IN2 STB1 のフィルタ設定を取得します 280

281 FilterConfig フィルタ時間を受け取る変数へのポインタ ( 参照渡し ) を指定します FilterConfig には 次の値が返されます bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 0 TBS TCN TBS 基準クロック指定 TCN カウント数設定 TCN\TBS '000' '001' '010' '011' '100' '101' '110' '111' '0000' '0001' 125ns 1µs 10µs 100µs 1ms 10ms 100ms 無効 '0010' 250ns 2µs 20µs 200µs 2ms 20ms 200ms 無効 '0011' 375ns 3µs 30µs 300µs 3ms 30ms 300ms 無効 '0100' 500ns 4µs 40µs 400µs 4ms 40ms 400ms 無効 '0101' 625ns 5µs 50µs 500µs 5ms 50ms 500ms 無効 '0110' 750ns 6µs 60µs 600µs 6ms 60ms 無効 無効 '0111' 875ns 7µs 70µs 700µs 7ms 70ms 無効 無効 '1000' 1000ns 8µs 80µs 800µs 8ms 80ms 無効 無効 '1001' 1125ns 9µs 90µs 900µs 9ms 90ms 無効 無効 '1010' 1250ns 10µs 100µs 1000µs 10ms 100ms 無効 無効 '1011' 1375ns 11µs 110µs 1100µs 11ms 110ms 無効 無効 '1100' 1500ns 12µs 120µs 1200µs 12ms 120ms 無効 無効 '1101' 1625ns 13µs 130µs 1300µs 13ms 130ms 無効 無効 '1110' 1750ns 14µs 140µs 1400µs 14ms 140ms 無効 無効 '1111' 1875ns 15µs 150µs 1500µs 15ms 150ms 無効 無効 - フィルタなし 電源投入時の PCI-2162, CTP-2162 の初期値は全接点 00h( フィルタなし ) です CPZ の初期値は全接点 15h(5µs) です 281

282 PCI , PCI , PCI では パラメータ FilterConfig の取得値が下記のようになります 取得可能なフィルタ設定は次のとおりです bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 0 TBS TCN TBS 基準クロック指定 TCN カウント数設定 TCN\TBS '00000' '00001' 1us 10us 100us - '00010' 2us 20us 200us - '00011' 3us 30us 300us - '00100' 4us 40us 400us - '00101' 5us 50us 500us - '11011' 27us 270us 2700us - '11100' 28us 280us 2800us - '11101' 29us 290us 2900us - '11110' 30us 300us 3000us - '11111' 31us 310us 3100us - - フィルタなし 電源投入時の初期値は全接点 00h( フィルタなし ) です 282

283 PCI U, PCI では パラメータ FilterConfig の取得値が下記のようになります 取得可能なフィルタ設定は次のとおりです bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 0 TBS TCN TBS 基準クロック指定 TCN カウント数設定 TCN\TBS '00000' '00001' - 10us 100us - '00010' - 20us 200us - '00011' - 30us 300us - '00100' - 40us 400us - '00101' - 50us 500us - '01001' - 90us 900us - '01010' 10us 100us 1000us - '01011' 11us 110us 1100us - '11011' 27us 270us 2700us - '11100' 28us 280us 2800us - '11101' 29us 290us 2900us - '11110' 30us 300us 3000us - '11111' 31us 310us 3100us - - フィルタなし 電源投入時の初期値は全接点 00h( フィルタなし ) です 283

284 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; INT FilterConfig; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioEintGetFilterConfig( DeviceHandle, FBI_DIO_IN1_8, &FilterConfig ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim FilterConfig As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintGetFilterConfig( DeviceHandle, FBI_DIO_IN1_8, FilterConfig ) Delphi var Ret Integer; Name String; DeviceHandle THandle; FilterConfig Integer; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioEintGetEdgeConfig( DeviceHandle, ); end; デバイス名 FBIDIO1 のデバイス(PCI-2162, CTP-2162, CPZ ) の IR1~IR8 に対するデジタルフィルタの設定値を FilterConfig へ返します 284

285 71. DioSetEventRequestMode 機能 デジタル入出力デバイスの割り込み待ちモードの設定を行います 書式 C 言語 INT DioSetEventRequestMode ( HANDLE DeviceHandle, DWORD EventMode ); Visual Basic Declare Function DioSetEventRequestMode Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal EventMode As Long _ )As Long Delphi function DioSetEventRequestMode ( DeviceHandle Thandle; EventMode DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します EventMode イベント待ちのモードを下記の識別子で指定します 識別子 / 設定値意味 0 0 を指定すると デフォルト設定が適用されます デフォルト設定は バッファリングが有効となります FBIDIO_NO_BUFFER_MODE FBIDIO_NO_BUFFER_MODE を指定すると 割り込み要因のバッファリングが無効となります 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 285

286 備考 割り込み要因のバッファリングが有効 ( デフォルト ) の場合 DioEventRequestPending 関数 DioEventRequestPendingEx 関数を実行していない状態で発生した割り込み要因をドライバ内部のバッファに保存します 既に内部バッファに割り込み要因が溜まった状態で DioEventRequestPending 関数 DioEventRequestPendingEx 関数を実行すると バッファに保存された割り込み要因を一つ取り出して 即座に割り込みの発生を通知します EventMode に FBIDIO_NO_BUFFER_MODE を指定して 割り込み要因のバッファリングを無効に設定すると DioEventRequestPending 関数 DioEventRequestPendingEx 関数の実行前に発生した割り込み要因について 割り込みの発生を通知しません DioEventRequestPending 関数 DioEventRequestPendingEx 関数の実行後に割り込み要因が発生した時点で 割り込みの発生を通知いたします バッファリングを有効 ( デフォルト ) にすることで イベント待ちを行っていない状態で割り込み要因の取りこぼしを防ぐことが可能です インターバルタイマ割り込みなどの割り込み発生のタイミングが重要となる用途では 割り込み要因のバッファリングを無効にすることで 実際に割り込みが発生したタイミングと無関係なタイミングで割り込みが通知されるのを防ぐことが可能です ( 割り込み待ちの処理状況によっては取りこぼしが発生します ) 割り込み要因のバッファリングの開始割り込み要因のバッファリングを有効にした状態で 最初に DioEventRequestPending 関数 DioEventRequestPendingEx 関数を実行した時点から 割り込みのバッファリングを開始します 割り込み要因のバッファリングの停止 バッファクリア割り込み要因のバッファリングを有効にした状態で 割り込みマスクが全てアンマスクされるとバッファリングを停止し バッファに溜まったイベントがクリアされます DioSetIrqMask 関数 DioEintSetIrqMask 関数 DioEintSetIrqMaskEx 関数で割り込みマスクの設定が変更可能です 286

287 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioSetEventRequestMode( DeviceHandle, FBIDIO_NO_BUFFER_MODE ); Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioSetEventRequestMode( DeviceHandle, FBIDIO_NO_BUFFER_MODE ) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioSetEventRequestMode( DeviceHandle, FBIDIO_NO_BUFFER_MODE ); デバイス名 FBIDIO1 のデバイスを 割り込みバッファリング無効 に設定します 287

288 72. DioOutputSync 機能 デジタル入出力デバイスの内部同期制御を設定します 書式 C 言語 INT DioOutputSync( HANDLE DeviceHandle, INT Line, DWORD UpEdge, DWORD DownEdge ); Visual Basic Declare Function DioOutputSync Lib "FbiDio.DLL"( _ ByVal DeviceHandle As Long, _ ByVal Line As Long, _ ByVal UpEdge As Long, _ ByVal DownEdge As Long _ )As Long Delphi function DioOutputSync( DeviceHandle Thandle; Line Integer; UpEdge DWORD; DownEdge DWORD ) Integer; stdcall; external 'FbiDio.DLL'; パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Line 内部同期出力を行う信号を指定します 指定可能な識別子は下記のものから選択します 識別子 FBIDIO_SYNC1 内部同期ライン 1 FBIDIO_SYNC2 内部同期ライン 2 意味 288

289 UpEdge 立ち上がり検出による出力を指定します bit7 bit6 Bit5 bit4 bit3 bit2 bit1 bit DI4 DI3 DI2 DI1 DI1 DI1 の出力設定 DI2 DI2 の出力設定 DI3 DI3 の出力設定 DI4 DI4 の出力設定 0 = 無効 1 = 有効 DownEdge 立ち下がり検出による出力を指定します bit7 bit6 Bit5 bit4 bit3 bit2 bit1 bit DI4 DI3 DI2 DI1 DI1 DI1 の出力設定 DI2 DI2 の出力設定 DI3 DI3 の出力設定 DI4 DI4 の出力設定 0 = 無効 1 = 有効 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 4.5 戻り値一覧 をご参照ください 備考 立ち下がり検出と立ち上がり検出については OR で設定することができます 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO1", FBIDIO_FLAG_NORMAL); Ret = DioOutputSync( DeviceHandle, FBIDIO_SYNC1, 2, 0); 289

290 Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioOutputSync( DeviceHandle, FBIDIO_SYNC1, 2, 0) Delphi var Ret Integer; Name String; DeviceHandle THandle; begin Name = 'FBIDIO1'; DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL); Ret = DioOutputSync(DeviceHandle, FBIDIO_SYNC1, 2, 0); end; デバイス名 FBIDIO1 のデバイスの DI2 が立ち上がり検出 DI1 が立ち下がりになった場合に内部同期ライン 1 から出力させます 290

291 4.3 コールバック関数 完了ルーチン DioInputHandShakeEx 関数および DioOutputHandShakeEx 関数によって呼び出される完了ルーチンの書式は以下の通りです 書式 CompletionRoutine (Win32) VOID WINAPI CompletionRoutine ( DWORD Error, /* 完了コード */ DWORD Transferred, /* 転送するバイトの数 */ LPOVERLAPPED OverLapped /* 入出力情報を持つ構造体のアドレス */ ); CompletionRoutine 関数は DioInputHandShakeEx 関数および DioOutputHandShakeEx 関数が完了し 呼び出し側のスレッドが (WaitForMultipleObjectsEx 関数を使うことによって ) アラート可能待機の状態にあるときに呼び出されます パラメータ Error I/O の完了状態を示します 次の値のいずれかになります 0 I/O は正常に完了しました ERROR_HANDLE_EOF ReadFileEx 関数がエンドオブファイルを超えて読み取りをしようとしました Transferred 転送されたバイト数を指定します エラーが発生した場合 このパラメータは 0 になります OverLapped 非同期 I/O 関数によって指定された OVERLAPPED 構造体を指すポインタ ( 参照渡し ) です Windows は OVERLAPPED 構造体の hevent メンバを使用しません この関数を呼び出すアプリケーションは このメンバを使って完了ルーチンに情報を渡します 完了ルーチンが呼び出された後に Windows が OVERLAPPED 構造体を使うことはありません したがって 完了ルーチンはオーバーラップ構造体を使ってメモリの割り当てを解除することができます 戻り値 この関数に戻り値はありません 291

292 備考 CompletionRoutine はアプリケーション定義またはライブラリ定義の関数名のプレースホルダです この関数が制御を戻すとほかの未処理の I/O 完了ルーチンを呼び出すことができるようになります 待機中の完了ルーチンはすべて アラート可能なスレッドの待機条件が WAIT_IO_COMPLETION の戻りコードによって満たされる前に呼び出されます Windows は任意の順序で待機完了ルーチンを呼び出します これらは ほかの I/O 関数が完了する順序によって呼び出されたり 呼び出されなかったりします Windows は完了ルーチンを呼び出すときに 必ずアプリケーションのスタックの一部を使用します 完了ルーチンがさらに非同期 I/O やアラート可能待機を行う場合は 使われるスタックの量が増えることがあります Microsoft Visual Basic で非同期のイベント処理を行う方法について Visual Basic で非同期のイベント処理を行うには BPA-0507 DI/DO 用 ActiveX コントロール を御使用下さい BPA-0507 DI/DO 用 ActiveX コントロール を使用する事で イベント等の各種処理が行えます BPA-0507 DI/DO 用 ActiveX コントロール は弊社 Web site よりダウンロードしてご使用ください 292

293 4.4 構造体説明 OVERLAPPED 構造体 C 言語 typedef struct _OVERLAPPED { DWORD Internal; DWORD InternalHigh; DWORD Offset; DWORD OffsetHigh; HANDLE hevent; } OVERLAPPED; Visual Basic Type OVERLAPPED Internal InternalHigh Offset OffsetHigh hevent End Type As Long As Long As Long As Long As Long Delphi POverlapped = ^TOverlapped; TOverlapped = record Internal DWORD; InternalHigh DWORD; Offset DWORD; OffsetHigh DWORD; hevent THandle; end; メンバ Internal InternalHigh 説明オペレーティングシステムの使用のために予約されています このメンバには システムに依存する状態が指定されます このメンバは DioGetOverlappedResult 関数が拡張エラー情報をERROR_IO_PENDINGに設定しないで制御を戻したときだけ有効です オペレーティングシステムの使用のために予約されています このメンバには 転送されるデータの長さが指定されます このメンバは DioGetOverlappedResult 関数が 0 でない値を返したときだけ有効です 293

294 Offset OffsetHigh hevent 転送を開始するファイル位置を指定します 通信ポートに対してこれらの関数が読み取りや書き込みをするときには このメンバは無視されます 転送を開始するバイトオフセットの上位ワードを指定します 通信ポートに対してこれらの関数が読み取りや書き込みをするときには このメンバは無視されます 転送が完了したときにシグナル状態に設定されるイベントを識別します 呼び出し側プロセスは DioEventRequestPending 関数を呼び出す前に このメンバを設定します (!) Visual Basic で使用する場合 API ビューワ等を使用し 定義してください 294

295 4.5 戻り値一覧 エラー識別子 値 意味 対処方法 FBIDIO_ERROR_SUCCESS 0 正常終了 - FBIDIO_ERROR_NOT_DEVICE c h ドライバを呼び出せません 指定したデバイスが見つかりませんでした 指定したデバイス番号が存在するかどうかを確認してください FBIDIO_ERROR_NOT_OPEN c h ドライバを OPEN できま せん FBIDIO_ERROR_INVALID_HAN DLE FBIDIO_ERROR_ALREADY_OPE N FBIDIO_INSUFFICIENT_BUFF ER c h c h c h デバイスハンドルが正しくありません すでに OPEN しているデバイスを OPEN しようとしました システムコールに渡されたデータ領域が小さすぎます FBIDIO_ERROR_IO_PENDING c h 非同期 I/O 操作が進行 中です FBIDIO_ERROR_NOT_SUPPORT ED FBIDIO_ERROR_MEMORY_NOTA LLOCATED c h c h サポートされていない機能です 作業用メモリの確保に失敗しました FBIDIO_ERROR_PARAMETER c h 引数パラメータの値が 不正です デバイスのオープン時 何らかのエラーが発生しました ドライバ内部のメモリ確保に失敗したなど 不正なデバイスハンドルで呼び出しを行おうとしました OPEN 関数で返されたデバイスハンドルを使用してください 既に OPEN されているデバイスです 共有させる場合には フラグ FLAG_SHARE の指定をして OPEN してください ドライバの内部エラーです どのような状況でエラーが発生したかをご連絡ください Win32API の WaitForSingleObject 関数等でイベントの完了を待つことができます ご使用になるインタフェースモジュールがサポートしていない機能を制御する関数をコールした場合にエラーコード FBIDIO_ERROR_NOT_SUPPORTED が返されます DioOutputByte 関数にDIデバイスのデバイスハンドルを指定してコールした場合などが当てはまります利用可能なメモリが足りなくなっています 不要なアプリケーションなどを終了させ 利用可能なメモリを増やすようにしてください API 関数に指定する値が不正もしくは範囲外です 295

296 エラー識別子値意味対処方法 FBIDIO_ERROR_INVALID_CAL L c h 不正な呼び出しです インタフェースモジュールの動作状況によりコールが禁止されるている関数をコールした場合に返されるエラーです バックグランド処理にインタフェースモジュール搭載のタイマを使用中に DioSetTimerConfig 関数でタイマを直接制御しようとした場合等が当てはまります FBIDIO_ERROR_DRVCAL c h ドライバをコールでき ません FBIDIO_ERROR_NULL_POINTE R FBIDIO_ERROR_IO_INCOMPLE TE c h c h DLL ドライバ間で NULL ポインタ ( 又は 0) が渡されました 非同期 I/O イベントが シグナル状態になっていません FBIDIO_ERROR_USB_TIMEOUT c h USB デバイスとの通信が タイムアウトしました FBIDIO_ERROR_USBIO_FAILE D c h USB デバイスの実行に失敗しました ドライバファイルがインストールされていない場合等に発生します ドライバのインストールを行ってくださいシステムに障害が発生している可能性がございます どのような状況でエラーが発生したかをご連絡ください 非同期 I/O 操作が進行中です Win32API の WaitForSingleObject 関数等でイベント完了を待った後に実行して下さい 再起動を行なうか DPC-0401 の IfUsbDevicePowerCtl 関数を使用し USB デバイスの電源を OFF ON して下さい IfUsbDevicePowerCtl 関数の使用方法は DPC-0401 の Help を参照してください 再起動を行なうか DPC-0401 の IfUsbDevicePowerCtl 関数を使用し USB デバイスの電源を OFF ON して下さい IfUsbDevicePowerCtl 関数の使用方法は DPC-0401 の Help を参照してください 296

297 第 5 章サンプルプログラム 各サンプルプログラムの概要を説明します 各種言語に対応したサンプルプログラムはそれぞれ下記の場所にインストールされます Visual C++ ( インストール指定先ディレクトリ )\Samples\VC Visual Basic ( インストール指定先ディレクトリ )\Samples\VB Delphi ( インストール指定先ディレクトリ )\Samples\Delphi 5.1 InBack 概要 InBack はバックグランド入力を行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル InBack.mak を開き ビルドしてください Visual Basic の場合 Visual Basic を起動し プロジェクトファイル InBack.vbp を開き ビルドしてください Delphi の場合 Delphi を起動し プロジェクトファイル InBack.dpr を開き ビルドしてください 作成後 InBack を起動してください 内容 インタフェースモジュールに搭載されたインターバルタイマを使用し 指定した端子の状態を 100ms 周期で 10 回取得します バックグランド入力の関数を使用して非同期でデータ取得を行い 処理の完了を待ってから取得データを表示します 297

298 5.2 InPoint 概要 InPoint は接点単位でデータ取得を行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル InPoint.mak を開き ビルドしてください Visual Basic の場合 Visual Basic を起動し プロジェクトファイル InPoint.vbp を開き ビルドしてください Delphi の場合 Delphi を起動し プロジェクトファイル InPoint.dpr を開き ビルドしてください 作成後 InPoint を起動してください 内容 プログラム実行時に指定した端子の入力状態を 1 点分取得し表示を行います 298

299 5.3 OutBack 概要 OutBack はバックグランド出力を行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル OutBack.mak を開き ビルドしてください Visual Basic の場合 Visual Basic を起動し プロジェクトファイル OutBack.vbp を開き ビルドしてください Delphi の場合 Delphi を起動し プロジェクトファイル OutBack.dpr を開き ビルドしてください 作成後 OutBack を起動してください 内容 インタフェースモジュールに搭載されたインターバルタイマを使用し 指定した端子から 100ms 周期でデータ出力を 10 回行います バックグランド出力の関数を使用して非同期でデータ出力を行い 出力の完了を待ちます 299

300 5.4 OutPoint 概要 OutPoint は接点単位でデータ出力を行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル OutPoint.mak を開き ビルドしてください Visual Basic の場合 Visual Basic を起動し プロジェクトファイル OutPoint.vbp を開き ビルドしてください Delphi の場合 Delphi を起動し プロジェクトファイル OutPoint.dpr を開き ビルドしてください 作成後 OutPoint を起動してください 内容 プログラム実行時に指定した端子 1 点から指定データの出力を行います 300

301 5.5 WatchBack 概要 WatchBack はバックグランド監視を行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル WatchBack.mak を開き ビルドしてください Visual Basic の場合 Visual Basic を起動し プロジェクトファイル WatchBack.vbp を開き ビルドしてください Delphi の場合 Delphi を起動し プロジェクトファイル WatchBack.dpr を開き ビルドしてください 作成後 WatchBack を起動してください 内容 インタフェースモジュールに搭載されたインターバルタイマを使用し 指定した端子の状態を 100ms 周期で監視を行い 10 回分の変化を監視 取得します バックグランド監視の関数を使用して非同期でデータ取得を行い 処理の完了を待ってから取得データを表示します 301

302 5.6 HndShk 概要 HndShk はハンドシェークを行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル HndShk.mak を開き ビルドしてください Visual Basic の場合 Visual Basic を起動し プロジェクトファイル HndShk.vbp を開き ビルドしてください Delphi の場合 Delphi を起動し プロジェクトファイル HndShk.dpr を開き ビルドしてください 作成後 HndShk を起動してください 内容 ハンドシェイク入力 ハンドシェイク出力をそれぞれ下記の設定で実行します STB1 割り込みを使用し IN1~IN8 の端子から 128 バイト分のハンドシェイク入力を行います 非同期でデータ取得を行い 処理の完了を待ってから取得データを表示します ACK2 割り込みを使用し OUT1~OUT8 の端子から 128 バイト分のハンドシェイク出力を行います 非同期でデータ出力を行い 処理の完了を待ちます 302

303 5.7 Event 概要 Event は割り込み処理を行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル Event.mak を開き ビルドしてください Visual Basic の場合 Visual Basic を起動し プロジェクトファイル Event.vbp を開き ビルドしてください Delphi の場合 Delphi を起動し プロジェクトファイル Event.dpr を開き ビルドしてください 作成後 Event を起動してください 内容 IN1 IR.IN1 IR.IN2 RSTIN の入力割り込みの検出を有効にし 割り込みが発生するのを非同期処理で待ちます 割り込みが発生した場合は 発生した割り込みの種類を表示します 303

304 5.8 EventEx 概要 EventEx は PCI-2162,CTP-2162,CPZ 用の割り込み処理を行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル EventEx.mak を開き ビルドしてください Visual Basic の場合 Visual Basic を起動し プロジェクトファイル EventEx.vbp を開き ビルドしてください Delphi の場合 Delphi を起動し プロジェクトファイル EventEx.dpr を開き ビルドしてください 作成後 EventEx を起動してください 内容 IN1 から IN32 までの入力エッジ割り込みの検出を有効にし 割り込みが発生するのを同期処理で待ちます 割り込みが発生した場合は 発生した割り込みの種類を表示します 304

305 5.9 EintPoint 概要 EintPoint は PCI-2162,CTP-2162,CPZ 用のラッチ入力を行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル EintPoint.mak を開き ビルドしてください Visual Basic の場合 Visual Basic を起動し プロジェクトファイル EintPoint.vbp を開き ビルドしてください Delphi の場合 Delphi を起動し プロジェクトファイル EintPoint.dpr を開き ビルドしてください 作成後 EintPoint を起動してください 内容 指定した端子への入力エッジの検出状態を取得し 表示を行います 入力エッジの検出に対するデジタルフィルタの設定も実行可能です 305

306 5.10 InputByte 概要 InputByte は 1 バイトのデータ入力を行う単純なサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル InputByte.mak を開き ビルドしてください Visual Basic の場合 Visual Basic を起動し プロジェクトファイル InputByte.vbp を開き ビルドしてください Delphi の場合 Delphi 用の InputByte はありません 作成後 InputByte を起動してください 内容 デバイス名が "FBIDIO1" のデバイスをオープンし IN1 から IN8 までの 1 バイト分のデータを取得 表示します コンソール上で動作する単純なアプリケーションとなっていますので 使用するデバイスの変更や入力端子を変更する場合は ソースコードを編集して設定を変更する必要があります 306

307 5.11 OutputByte 概要 OutputByte は 1 バイトのデータ出力を行う単純なサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル OutputByte.mak を開き ビルドしてください Visual Basic の場合 Visual Basic を起動し プロジェクトファイル OutputByte.vbp を開き ビルドしてください Delphi の場合 Delphi 用 OutputByte はありません 作成後 OutputByte を起動してください 内容 デバイス名が "FBIDIO1" のデバイスをオープンし OUT1 から OUT8 に 1 バイト分のデータ (5ah) を出力します コンソール上で動作する単純なアプリケーションとなっていますので 使用するデバイスの変更や出力端子 出力データを変更する場合は ソースコードを編集して設定を変更する必要があります 307

308 5.12 EventCheck 概要 EventCheck は割り込みの検出を行う単純なサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル EventCheck.mak を開き ビルドしてください Visual Basic の場合 Visual Basic を起動し プロジェクトファイル EventCheck.vbp を開き ビルドしてください Delphi の場合 Delphi 用 EventCheck はありません 作成後 EventCheck を起動してください 内容 デバイス名が "FBIDIO1" のデバイスをオープンし IN1 IR.IN1 IR.IN2 RSTIN の入力割り込みの検出を有効にして 割り込みが発生するのを非同期処理で 10 秒間待ちます コンソール上で動作する単純なアプリケーションとなっていますので 使用するデバイスの変更や検出する割り込み要因を変更する場合は ソースコードを編集して設定を変更する必要があります 308

309 5.13 プログラム例 <プログラム例 C 言語 > // ================================================================================= // Windows 用 // デジタル入出力デバイス対応ドライバソフトウェア // プログラム例 C 言語コンソールアプリケーション // // Copyright 2000, 2008 Interface Corporation. All rights reserved. // // プログラム説明 // データの出力 入力を行います // ================================================================================= #include <windows.h> #include <stdio.h> #include "FbiDio.h" void main(void) { DWORD Value; // ダブルワードデータ HANDLE DeviceHandle; // デバイスハンドル // デバイス名 "FBIDIO1" のデジタル入出力デバイスの初期化を行います DeviceHandle = DioOpen("FBIDIO1", 0); if (DeviceHandle == INVALID_HANDLE_VALUE) { printf(" デバイス名 FBIDIO1 は使用できません \n"); exit(0); // プログラム終了 } // 接点 1~8 にバイトデータ 12h を出力します DioOutputByte(DeviceHandle, FBIDIO_OUT1_8, 0x12); // 接点 17~32 にワードデータ 3456h を出力します DioOutputWord(DeviceHandle, FBIDIO_OUT17_32, 0x3456); // 接点 1~32 から 1 ダブルワードデータを入力します DioInputDword(DeviceHandle, FBIDIO_IN1_32, &Value); // 入力データの表示 printf(" 入力データ = %x\n", Value); } // デジタル入出力デバイスの終了処理 DioClose(DeviceHandle); 309

310 <プログラム例 Visual Basic> ' ================================================================================== ' Windows 用 ' デジタル入出力デバイス対応ドライバソフトウェア ' プログラム例 Visual Basic ' ' Copyright 2000, 2008 Interface Corporation. All rights reserved. ' ' プログラム説明 ' データの入力 出力を行います ' ================================================================================== ' 変数定義 Dim Value As Long Dim DeviceHandle As Long Dim WorkDeviceName As String * 16 ' ダブルワードデータ ' デバイスハンドル ' デバイス名格納領域 ' デバイス名 "FBIDIO1" のデジタル入出力デバイスの初期化を行います WorkDeviceName = "FBIDIO1" & Chr(0) DeviceHandle = DioOpen(WorkDeviceName, 0) if DeviceHandle = INVALID_HANDLE_VALUE Then Ret = MsgBox(" デバイス名 FBIDIO1 は使用できません ", _ (vbokonly + vbcritical),"fbidio1") Unload Me ' ダイアログを閉じる End If ' 接点 1~8 にバイトデータ 12h を出力します Ret = DioOutputByte(DeviceHandle, FBIDIO_OUT1_8, &h12) ' 接点 17~32 にワードデータ 3456h を出力します Ret = DioOutputWord(DeviceHandle, FBIDIO_OUT17_32, &h3456) ' 接点 1~32 から 1 ダブルワードデータを入力します Ret = DioInputDword(DeviceHandle, FBIDIO_IN1_32, Value) ' 入力データの表示 Ret = MsgBox(" 入力データ = " & Hex(Value), _ (vbokonly + vbinformation), "DioInputDword") ' デジタル入出力デバイスの終了処理 Ret = DioClose(DeviceHandle) 310

311 <プログラム例 Delphi> // ================================================================================= // Windows 用 // デジタル入出力デバイス対応ドライバソフトウェア // プログラム例 Delphi // // Copyright 2000, 2008 Interface Corporation. All rights reserved. // // プログラム説明 // データの入力 出力を行います // ================================================================================= var Value Dword; // ダブルワードデータ DeviceHandle Integer; // デバイスハンドル DeviceName Array[0..15] of Char; // デバイス名格納領域 begin // デバイス名 "FBIDIO1" のデジタル入出力デバイスの初期化を行います StrCopy(DeviceName,'FBIDIO1'); DeviceHandle = DioOpen(@DeviceName[0], 0); if DeviceHandle = INVALID_HANDLE_VALUE then begin MessageDlg(' デバイス名 FBIDIO1 は使用できません ', mtinformation, [mbok], 0); Close; // ダイアログを閉じる end; // 接点 1~8 にバイトデータ 12h を出力します DioOutputByte(DeviceHandle, FBIDIO_OUT1_8, $12); // 接点 17~32 にワードデータ 3456h を出力します DioOutputWord(DeviceHandle, FBIDIO_OUT17_32, $3456); // 接点 1~32 から 1 ダブルワードデータを入力します DioInputDword(DeviceHandle, FBIDIO_IN1_32, Value); // 受信データの表示 MessageDlg(' 入力データ = ' + IntToHex(Value, 8), mtinformation, [mbok], 0); // デジタル入出力デバイスの終了処理 DioClose(DeviceHandle); end; 311

312 第 6 章ユーティリティ 以下 各ユーティリティの概要を説明します 6.1 DI 入力ユーティリティ スタート メニューから DI 入力ユーティリティ を立ち上げてください ここで 検索 ボタンを押すと 使用可能な DIO デバイスの一覧が表示されます ( 1) 使用したいインタフェースモジュールを選択し OK ボタンを押してください 画面上に 現在の全入力信号の状態が表示されます ( このプログラムは常にインタフェースモジュールを監視しています ) 6.2 DO 出力ユーティリティ スタート メニューから DO 出力ユーティリティ を立ち上げてください ここで 検索 ボタンを押すと 使用可能な DIO デバイスの一覧が表示されます ( 1) 使用したいインタフェースモジュールを選択し OK ボタンを押してください 画面上に表示されているボタンをクリックすると 出力信号の ON/OFF を切り替えることができます メニューには 全点 ON および全点 OFF の機能が用意されています 1 インタフェースモジュール型式の末尾が M および L の製品は M および L が付加されない製品とソフトウェア互換です 自己診断プログラム ユーティリティプログラムのインタフェースモジュール型式表示 および Windows のデバイスマネージャ上には M L V が付加されない型式が表示されます 又 末尾が TK TL TR の製品は 末尾が Tx と表示されます 型式の末尾が M の製品は下記の通りです PCI-2130CM PCI-2131M PCI-2131AM PCI-2135M PCI-2724CM PCI-2725M PCI-2725AM PCI-2726CM PCI-2727M PCI-2727AM PCI-2756AM PCI-2758AM PCI-2762CM CTP-2130M CTP-2131M CTP-2135M CTP-2724M CTP-2725M CTP-2726M CTP-2727M CTP-2762M CPZ-2130M CPZ-2724M CPZ-2726M CPZ-2762M 型式の末尾が L の製品は下記の通りです PCI-2130CL PCI-2131L PCI-2131AL PCI-2135L PCI-2724CL PCI-2725L PCI-2725AL PCI-2726CL PCI-2727L PCI-2727AL PCI-2756AL PCI-2758AL CTP-2130L CTP-2131L CTP-2135L CTP-2724L CTP-2725L CTP-2726L CTP-2727L CPZ-2130L CPZ-2724L CPZ-2726L CPZ-2727L 型式の末尾が V の製品は下記の通りです 312

313 PCI-2230CV PCI-2330CV PCI-2826CV PCI-2994CV CTP-2230V CTP-2330V CTP-2826V CTP-2994V CPZ-2230V CPZ-2330V CPZ-2826V CPZ-2827V CPZ-2994V CPZ-2995V 313

314 6.3 自己診断プログラム本製品には 動作不具合時の原因がハードウェア的なものか ソフトウェア的なものかを容易に判断するための自己診断機能を搭載しています 診断プログラムを用いて動作確認を行ってください RAS 機能が搭載された製品 (CPZ ) の RAS 機能には自己診断機能はありません IO 付きタッチパネル Classembly Devices に搭載された製品の DIO 機能には 自己診断機能はありません PCI , PCI U, PCI は本ユーティリティは対応しておりません ご注意下さい PCI , PCI N は本ユーティリティは対応しておりません ご注意下さい 診断方法 CompactPCI シリーズ自己診断タイプ 1 CTP/CPZ-2104, CTP-2128, CTP/CPZ-2130, CTP/CPZ-2130M, CTP/CPZ-2130L, CTP-2131, CTP-2131M, CTP-2131L, CTP/CPZ-2152, CTP/CPZ-2154, CTP-2162, CTP/CPZ-2230, CTP/CPZ-2230V, CPZ 自己診断タイプ 2 CTP-2135/M/L, CPZ DI 自己診断タイプ 3 CTP/CPZ-2330V, CTP/CPZ-2402, CTP-2424, CTP/CPZ-2430, CTP-2431, CTP/CPZ-2464, CTP/CPZ-2466 自己診断タイプ 4 CTP/CPZ-2702, CTP/CPZ-2703, CTP-2722, CTP/CPZ-2723, CTP/CPZ-2724, CTP/CPZ-2724M, CTP/CPZ-2724L, CTP-2725, CTP-2725M, CTP-2725L, CTP/CPZ-2726, CTP/CPZ-2726M, CTP/CPZ-2726L, CTP-2727, CTP-2727M, CTP/CPZ-2727L, CTP/CPZ-2752, CTP-2753, CTP/CPZ-2760, CTP/CPZ-2762, CTP/CPZ-2762M, CTP/CPZ-2768, CPZ-2769, CTP/CPZ-2790, CTP-2793, CTP/CPZ-2798, CPZ-2799, CTP/CPZ-2826, CTP/CPZ-2826V, CPZ-2827V, CTP/CPZ-2994, CTP/CPZ-2994V, CPZ-2995V, CTP/CPZ 自己診断タイプ 5 CTP/CPZ-2505, CTP/CPZ-2506, CTP/CPZ-2515, CTP/CPZ-2516, CTP/CPZ-2517, CPZ DO 自己診断タイプ 6 CTP/CPZ , CTP/CPZ , CPZ , CPZ

315 PCI シリーズ自己診断タイプ 1 自己診断タイプ 2 自己診断タイプ 3 自己診断タイプ 4 自己診断タイプ 5 自己診断タイプ 6 CardBus シリーズ自己診断タイプ 6 PCI-2104C, PCI-2128, PCI-2130C, PCI-2130CM, PCI-2130CL, PCI-2131, PCI-2131M, PCI-2131L, PCI-2152C, PCI-2154C, PCI-2162, PCI-2230C, PCI-2230CV PCI-2105A, PCI-2131A/M/L, PCI-2135/M/L, PCI DI, PCI DI, PCI DI, PCI , PCI PCI-2330CV, PCI-2402C, PCI-2424, PCI-2426C,PCI-2427, PCI-2430C, PCI-2431,PCI , PCI-2464C, PCI-2466C, PCI-2512C, PCI-2702C, PCI-2703, PCI-2722, PCI-2723C, PCI-2724C, PCI-2724CM, PCI-2724CL, PCI-2725, PCI-2725M, PCI-2725L, PCI-2726C, PCI-2726CM, PCI-2726CL, PCI-2727, PCI-2727M, PCI-2727L, PCI-2752C, PCI-2753, PCI-2760C, PCI-2762C, PCI-2762CM, PCI-2768C, PCI-2790C, PCI-2793, PCI-2796C, PCI-2798C, PCI-2826C, PCI-2826CV, PCI-2994C, PCI-2994CV, PCI PCI-2403A, PCI-2427A, PCI-2431A, PCI-2503, PCI-2513, PCI DO, PCI DO, PCI DO, PCI , PCI PCI-2470, PCI-2703A, PCI-2725A/M/L, PCI-2727A/M/L, PCI-2756A/M/L, PCI-2758A/M/L, PCI , PCI , PCI , PCI , PCI , PCI , PCI PCI CBI-2701,CBI-2702, CBI/CSI ,CBI TK,CBI TR, CBI/CSI ,CBI TK,CBI TL LowProfile PCI シリーズ自己診断タイプ 6 LPC , LPC , LPC , LPC , LPC , LPC , LPC , LPC PCI Express シリーズ自己診断タイプ 2 PEX-H DI, PEX-H DI, PEX-H225020, PEX-H 自己診断タイプ 4 PEX-H258144, PEX-H291388, PEX-H292388, PEX-H 自己診断タイプ 5 PEX-H DO, PEX-H DO, PEX-H235002, PEX-H 自己診断タイプ 6 PEX , PEX , PEX , PEX , PEX , PEX , PEX , PEX , PEX-H291022, PEX-H292022, PEX-H

316 6.3.2 自己診断タイプ 1 必要な機材 CTP/CPZ-2104, CTP/CPZ-2152, CTP/CPZ-2154 CTP-2128, CTP-2162 接続ケーブル(ECO-6601 等 ) 端子台(TRM-2201) ビニール被覆線等( 端子台での接続に使用 ) 接続ケーブル(ECO-5020 等 ) 端子台(TRM-2101) ビニール被覆線等( 端子台での接続に使用 ) CTP/CPZ-2130 接続ケーブル (ECO-6601 等 ) 端子台 (TRM-2201) DC+12V 電源 ( 12V 以上は入力しないで下さい ) ビニール被覆線等 ( 端子台での接続に使用 ) CTP/CPZ-2130M 接続ケーブル (ECO-6601 等 ) 端子台 (TRM-2201) DC+24V 電源 ビニール被覆線等 ( 端子台での接続に使用 ) CTP/CPZ-2130L 接続ケーブル (ECO-6601 等 ) 端子台 (TRM-2201) DC+12V~DC+24V 電源 ビニール被覆線等 ( 端子台での接続に使用 ) CTP-2131 接続ケーブル (ECO-5020 等 ) 端子台 (TRM-2101) DC+12V( 12V 以上は入力しないで下さい ) ビニール被覆線等 ( 端子台での接続に使用 ) CTP-2131M 接続ケーブル (ECO-5020 等 ) 端子台 (TRM-2101) DC+24V 電源 ビニール被覆線等 ( 端子台での接続に使用 ) CTP-2131L 接続ケーブル (ECO-5020 等 ) 端子台 (TRM-2101) DC+12V~DC+24V 電源 ビニール被覆線等 ( 端子台での接続に使用 ) CTP/CPZ-2230 接続ケーブル (ECO-6601 等 ) 端子台 (TRM-2201) DC+12V~DC+48V 電源 ビニール被覆線等 ( 端子台での接続に使用 ) CTP/CPZ-2230V 接続ケーブル (ECO-6601 等 ) 端子台 (TRM-2201) DC+5V~DC+48V 電源 ビニール被覆線等 ( 端子台での接続に使用 ) CPZ 接続ケーブル (ECO-6601 等 ) 端子台 (TRM-2201) ビニール被覆線等 ( 端子台での接続に使用 ) 316

317 診断手順! 複数枚使用する場合には RSW1 の設定値をインタフェースモジュール毎で異なる値に設定してください (1) 自己診断プログラムの起動 1. 付属ソフトウェアのインストール完了後 スタート メニューより プログラム - Interface GPC DiagDio を起動します 2. ボード検索 をクリックすると一覧表示画面が表示されます その中から 診断を行うデバイスを選択してください 画面に 型式名,RSW1 の設定値,I/O アドレス,IRQ が表示されます (2) コンフィギュレーションの診断 1. メニューの 診断開始 - コンフィギュレーション を選択します 2. 自動的に各項目の診断が行われ 結果が表示されます 3. OK と表示された場合には 次の手順に進んで下さい 診断結果が NG の場合には メニューから ファイル - 結果の保存 で診断結果をファイルへ保存してください その診断結果とともに弊社お客様相談センタまでお問い合わせください お問い合わせ方法につきましては README.HTM をご参照ください (3) 入力機能の診断 1. メニューから 診断開始 - 入力機能 を選択します 2. 全点の診断 をクリックします 各点の診断を行う場合は 1 点のみ診断 をクリックし 診断を行うピン番号の数値を入力して下さい 3. コネクタにケーブルと端子台を接続し 画面に指示される端子をビニール被覆線等で接続して下さい IN1 を診断する場合の接続例 CTP/CPZ-2104 TRM-2201 上の IN1 と PULS.OUT1 を接続して下さい CTP/CPZ-2152 CTP/CPZ-2154 CPZ CTP-2128 TRM-2101 上の IN1( 記銘板番号 1) と PULS.OUT1( 記銘板 CTP-2162 番号 43) を接続して下さい CTP/CPZ-2130 TRM-2201 上の IN1 と PULS.OUT1 を接続して下さい CTP/CPZ-2130M +COM1 と DC 電源 ( プラス ) を接続して下さい CTP/CPZ-2130L -FCOM と DC 電源 ( マイナス ) を接続して下さい -COM1 と DC 電源 ( マイナス ) を接続して下さい 317

318 CTP-2131 CTP-2131M CTP-2131L [!] 入力信号は それぞれに対応した COM をご使用下さい IN1~IN16 -COM1, +COM1 IN17~IN32 -COM2, +COM2 IN33~IN48 -COM3, +COM3 IN49~IN64 -COM4, +COM4 TRM-2101 上の IN1( 記名板番号 1) と PULS.OUT1( 記名板番号 43) を接続して下さい +COM1 と DC 電源 ( プラス ) を接続して下さい -FCOM と DC 電源 ( マイナス ) を接続して下さい -COM1 と DC 電源 ( マイナス ) を接続して下さい [!] 入力信号は それぞれに対応した COM をご使用下さい IN1~IN16 -COM1, +COM1 IN17~IN32 -COM2, +COM2! ピン番号の詳細説明については マニュアルに記載されています I/O コネクタピンアサインメント TRM-xxxx USER'S MANUAL を参照して下さい 4. 接続が完了したら OK をクリックして下さい 5. 自動的に各項目の診断が行われ 結果が表示されます 6. 診断結果が正しくない場合は ケーブルが正しく接続されているかご確認下さい 正しく接続されているにも関わらず診断結果が NG の場合には メニューから ファイル - 印刷 で診断結果を印刷して下さい その診断結果とともに弊社お客様相談センタまでお問い合わせ下さい お問い合わせ方法につきましては README.HTM をご参照ください 318

319 6.3.3 自己診断タイプ 2 必要な機材 CTP-2135 接続ケーブル (ECO-5020 等 ) 端子台 (TRM-2101) DC+12V 電源 ( 12V 以上は入力しないで下さい ) スイッチなど信号を ON/OFF できる装置 ビニール被覆線等 ( 端子台での接続に使用 ) CTP-2135M 接続ケーブル (ECO-5020 等 ) 端子台 (TRM-2101) DC+24V 電源 スイッチなど信号を ON/OFF できる装置 ビニール被覆線等 ( 端子台での接続に使用 ) CTP-2135L 接続ケーブル (ECO-5020 等 ) 端子台 (TRM-2101) DC+12V~DC+24V 電源 スイッチなど信号を ON/OFF できる装置 ビニール被覆線等 ( 端子台での接続に使用 ) CPZ DI 接続ケーブル (ECO-6601 等 ) 端子台 (TRM-2201) DC+12V~DC+24V 電源 スイッチなど信号を ON/OFF できる装置 ビニール被覆線等 ( 端子台での接続に使用 ) 診断手順! 複数枚使用する場合には RSW1 の設定値をインタフェースモジュール毎で異なる値に設定してください (1) コンフィギュレーションの診断 1. 自己診断プログラム を起動します (1) 付属ソフトウェアのインストール完了後 スタート メニューより プログラム - Interface GPC DiagDio を起動します (2) ボード検索 をクリックすると一覧表示画面が表示されます その中から 診断を行うデバイスを選択してください 画面に 型式名,RSW1 の設定値,I/O アドレス,IRQ が表示されます 2. メニューの 診断開始 - コンフィギュレーション を選択します 3. 自動的に各項目の診断が行われ 結果が表示されます 4. 診断結果が NG の場合には メニューから ファイル - 結果の保存 で診断結果をファイルへ保存してください その診断結果とともに弊社お客様相談センタまでお 319

320 問い合わせください お問い合わせ方法につきましては README.HTM をご参照ください (2) 入力機能の診断 1. DI ユーティリティプログラム を起動します (1) 付属ソフトウェアのインストール完了後 スタート メニューより プログラム - Interface GPC DiUtil を起動します (2) ボード検索 をクリックすると一覧表示画面が表示されます その中から 診断を行うデバイスを選択してください 2. TRM-2101 と本インタフェースモジュールを ECO-5020 で接続して下さい 3. 入力診断を行う設定にスイッチ等 信号を ON/OFF できる装置を接続します IN1 を診断する場合の接続例 CTP-2135 TRM-2101 上で以下のように結線して下さい CTP-2135M CTP-2135L IN1+ と DC 電源 ( プラス ) を接続して下さい CPZ DI IN1-と DC 電源 ( マイナス ) を接続して下さい! ピン番号の詳細説明については マニュアルに記載されています I/O コネクタピンアサインメント TRM-xxxx USER'S MANUAL を参照して下さい 4. スイッチを ON にすると画面上の入力診断を行っているピン番号の表示が赤色になります スイッチを OFF にすると画面上の入力診断を行っているピン番号の表示が赤から黒に変わります 320

321 6.3.4 自己診断タイプ 3 必要な機材 CTP/CPZ-2402 CTP/CPZ-2464 CTP-2466 接続ケーブル (ECO-6601 等 ) 端子台 (TRM-2201) ビニール被覆線等 ( 端子台での接続に使用 ) CTP-2424 接続ケーブル(CAB-5320 等 ) 端子台(TRM-2101) ビニール被覆線等( 端子台での接続に使用 ) CTP/CPZ-2330V CTP/CPZ-2430 接続ケーブル (ECO-6601 等 ) 端子台 (TRM-2201) DC+12V~DC+24V 電源 ビニール被覆線等 ( 端子台での接続に使用 ) CTP-2431 接続ケーブル (CAB-5320 等 ) 端子台 (TRM-2101) DC+12V~DC+24V 電源 ビニール被覆線等 ( 端子台での接続に使用 ) 診断手順! 複数枚使用する場合には RSW1 の設定値をインタフェースモジュール毎で異なる値に設定してください (1) 自己診断プログラムの起動 1. 付属ソフトウェアのインストール完了後 スタート メニューより プログラム - Interface GPC DiagDio を起動します 2. ボード検索 をクリックすると一覧表示画面が表示されます その中から 診断を行うデバイスを選択してください 画面に 型式名,RSW1 の設定値,I/O アドレス,IRQ が表示されます (2) コンフィギュレーションの診断 1. メニューの 診断開始 - コンフィギュレーション を選択します 2. 自動的に各項目の診断が行われ 結果が表示されます 3. OK と表示された場合には 次の手順に進んで下さい 診断結果が NG の場合には メニューから ファイル - 結果の保存 で診断結果をファイルへ保存してください その診断結果とともに弊社お客様相談センタまでお問い合わせください お問い合わせ方法につきましては README.HTM をご参照ください (3) 出力機能の診断 1. メニューから 診断開始 - 出力機能 を選択します 321

322 2. 全点の診断 をクリックします 各点の診断を行う場合は 1 点のみ診断 をクリックし 診断を行うピン番号の数値を入力して下さい 3. コネクタにケーブルと端子台を接続し 画面に指示される端子をビニール被覆線等で接続して下さい OUT1 を診断する場合の接続例 CTP/CPZ-2402 TRM-2201 上の OUT1 と IR.IN1 を接続して下さい CTP/CPZ-2464 CTP-2466 CTP-2424 TRM-2101 上の OUT1 と IR.IN2 を接続して下さい CTP/CPZ-2330V TRM-2201 上の OUT1 と IR.IN1 を接続して下さい CTP/CPZ FCOM と DC 電源 ( プラス ) を接続して下さい -FCOM と DC 電源 ( マイナス ) を接続して下さい +COM1 と DC 電源 ( プラス ) を接続して下さい -COM1 と DC 電源 ( マイナス ) を接続して下さい [!] 出力信号は それぞれに対応した COM をご使用下さい CTP-2431 OUT1~OUT16 -COM1, +COM1 OUT17~OUT32 -COM2, +COM2 OUT33~OUT48 -COM3, +COM3 OUT49~OUT64 -COM4, +COM4 TRM-2101 上の OUT1 と IR.IN2 を接続して下さい +FCOM と DC 電源 ( プラス ) を接続して下さい -FCOM と DC 電源 ( マイナス ) を接続して下さい +COM1 と DC 電源 ( プラス ) を接続して下さい -COM1 と DC 電源 ( マイナス ) を接続して下さい [!] 出力信号は それぞれに対応した COM をご使用下さい OUT1~OUT16 -COM1, +COM1 OUT17~OUT32 -COM2, +COM2! ピン番号の詳細説明については マニュアルに記載されています I/O コネクタピンアサインメント TRM-xxxx USER'S MANUAL を参照して下さい 4. 接続が完了したら OK をクリックして下さい 5. 自動的に各項目の診断が行われ 結果が表示されます 6. 診断結果が正しくない場合は ケーブルが正しく接続されているかご確認下さい 正しく接続されているにも関わらず診断結果が NG の場合には メニューから ファイル - 印刷 で診断結果を印刷して下さい その診断結果とともに弊社お客様相談センタまでお問い合わせ下さい お問い合わせ方法につきましては README.HTM をご参照ください 322

323 6.3.5 自己診断タイプ 4 必要な機材 CTP/CPZ-2702 CPZ-2703 CTP/CPZ-2723 CTP/CPZ-2752 CTP/CPZ-2760 CTP/CPZ-2768 CPZ-2769 CTP/CPZ-2790 CTP/CPZ-2798 CPZ-2799 CTP/CPZ-2994 CTP/CPZ-2994V CPZ-2995V CTP/CPZ PEX-H PEX-H PEX-H CTP-2703 CTP-2722 CTP-2753 CTP-2793 CTP/CPZ-2724 CTP/CPZ-2726 接続ケーブル (ECO-6601 等 ) 端子台 (TRM-2201) ビニール被覆線等 ( 端子台での接続に使用 ) 接続ケーブル (ECO-5020 等 ) 端子台 (TRM-2101) ビニール被覆線等 ( 端子台での接続に使用 ) 接続ケーブル (ECO-6601 等 ) 端子台 (TRM-2201) DC+12V 電源 ( 12V 以上は入力しないで下さい ) ビニール被覆線等 ( 端子台での接続に使用 ) CTP/CPZ-2724M 接続ケーブル(ECO-6601 等 ) 端子台(TRM-2201) DC+24V 電源 ビニール被覆線等( 端子台での接続に使用 ) CTP/CPZ-2724L PEX-H 接続ケーブル (ECO-6601 等 ) 端子台 (TRM-2201) DC+12~+24V 電源 ビニール被覆線等 ( 端子台での接続に使用 ) CTP/CPZ-2726M 接続ケーブル(ECO-6601 等 ) 端子台(TRM-2201) DC+24V 電源 ビニール被覆線等( 端子台での接続に使用 ) CTP/CPZ-2726L CPZ-2727L 接続ケーブル (ECO-5020 等 ) 端子台 (TRM-2201) DC+12~+24V 電源 ビニール被覆線等 ( 端子台での接続に使用 ) 323

324 CTP-2725 CTP-2727 CTP-2725M CTP-2727M CTP-2725L CTP-2727L 接続ケーブル(ECO-5020 等 ) 端子台(TRM-2101) DC+12V 電源 ( 12V 以上は入力しないで下さい ) ビニール被覆線等( 端子台での接続に使用 ) 接続ケーブル(ECO-5020 等 ) 端子台(TRM-2101) DC+24V 電源 ビニール被覆線等( 端子台での接続に使用 ) 接続ケーブル(ECO-5020 等 ) 端子台(TRM-2101) DC+12~+24V 電源 ビニール被覆線等( 端子台での接続に使用 ) CTP/CPZ-2762 接続ケーブル(ECO-6601 等 ) 端子台(TRM-2201) DC+12V 電源 ( 12V 以上は入力しないで下さい ) ビニール被覆線等( 端子台での接続に使用 ) CTP/CPZ-2762M 接続ケーブル(ECO-6601 等 ) 端子台(TRM-2201) DC+24V 電源 ビニール被覆線等( 端子台での接続に使用 ) CTP/CPZ-2826 CTP/CPZ-2826V CPZ-2827V 診断手順 接続ケーブル (ECO-6601 等 ) 端子台 (TRM-2201) DC+5V~DC+48V 電源 ビニール被覆線等 ( 端子台での接続に使用 )! 複数枚使用する場合には RSW1 の設定値をインタフェースモジュール毎で異なる値に設定してください (1) 自己診断プログラムの起動 1. 付属ソフトウェアのインストール完了後 スタート メニューより プログラム - Interface GPC DiagDio を起動します 2. ボード検索 をクリックすると一覧表示画面が表示されます その中から 診断を行うデバイスを選択してください 画面に 型式名,RSW1 の設定値,I/O アドレス,IRQ が表示されます (2) コンフィギュレーションの診断 1. メニューの 診断開始 - コンフィギュレーション を選択します 2. 自動的に各項目の診断が行われ 結果が表示されます 3. OK と表示された場合には 次の手順に進んで下さい 診断結果が NG の場合には メニューから ファイル - 結果の保存 で診断結果をファイルへ保存してください その診断結果とともに弊社お客様相談センタまでお問い合わせください お問い合わせ方法につきましては README.HTM をご参照ください 324

325 (3) 入力機能の診断 1. メニューから 診断開始 - 入力機能 を選択します 2. 全点の診断 をクリックします 各点の診断を行う場合は 1 点のみ診断 をクリックし 診断を行うピン番号の数値を入力して下さい 3. コネクタにケーブルと端子台を接続し 画面に指示される端子をビニール被覆線等で接続して下さい IN1 を診断する場合の接続例 CTP/CPZ-2702 TRM-2201 上の IN1 と PULS.OUT1 を接続して下さい CPZ-2703 CTP/CPZ-2723 CTP/CPZ-2760 CTP/CPZ-2768 CPZ-2769 CTP/CPZ-2790 CTP/CPZ-2798 CPZ-2799 CTP/CPZ-2994 CTP/CPZ-2994V CPZ-2995V CTP-2703 TRM-2101 上の IN1 と PULS.OUT2 を接続して下さい CTP-2722 CTP-2753 CTP-2793 CTP/CPZ-2724 TRM-2201 上の IN1 と PULS.OUT1 を接続して下さい CTP/CPZ-2724M +COM1 と DC 電源 ( プラス ) を接続して下さい CTP/CPZ-2724L -FCOM と DC 電源 ( マイナス ) を接続して下さい CTP/CPZ COM1 と DC 電源 ( マイナス ) を接続して下さい CTP/CPZ-2726M CTP/CPZ-2726L [!] 入力信号は それぞれに対応した COM をご使用下 CPZ-2727L さい CTP/CPZ-2762 IN1~IN16 -COM1, +COM1 CTP/CPZ-2762M IN17~IN32 -COM2, +COM2 CTP/CPZ-2826 CTP/CPZ-2826V CPZ-2827V CTP-2725 CTP-2725M CTP-2725L CTP-2727 CTP-2727M CTP-2727L TRM-2101 上の IN1 と PULS.OUT2 を接続して下さい +COM1 と DC 電源 ( プラス ) を接続して下さい -FCOM と DC 電源 ( マイナス ) を接続して下さい -COM1 と DC 電源 ( マイナス ) を接続して下さい [!] 入力信号は それぞれに対応した COM をご使用下さい IN1~IN16 -COM1, +COM1 325

326 CTP/CPZ-2752 TRM-2201 上の IN1 と PULS.OUT1 を接続して下さい! ピン番号の詳細説明については マニュアルに記載されています I/O コネクタピンアサインメント TRM-xxxx USER'S MANUAL を参照して下さい 4. 接続が完了したら OK をクリックして下さい 5. 自動的に各項目の診断が行われ 結果が表示されます 6. 診断結果が正しくない場合は ケーブルが正しく接続されているかご確認下さい 正しく接続されているにも関わらず診断結果が NG の場合には メニューから ファイル - 印刷 で診断結果を印刷して下さい その診断結果とともに弊社お客様相談センタまでお問い合わせ下さい お問い合わせ方法につきましては README.HTM をご参照ください (4) 出力機能の診断 1. メニューから 診断開始 - 出力機能 を選択します 2. 全点の診断 をクリックします 各点の診断を行う場合は 1 点のみ診断 をクリックし 診断を行うピン番号の数値を入力して下さい 3. コネクタにケーブルと端子台を接続し 画面に指示される端子をビニール被覆線等で接続して下さい OUT1 を診断する場合の接続例 CTP/CPZ-2702 TRM-2201 上の OUT1 と IR.IN1 を接続して下さい CPZ-2703 CTP/CPZ-2760 CTP/CPZ-2768 CPZ-2769 CTP/CPZ-2798 CPZ-2799 CTP/CPZ-2994 CTP/CPZ-2994V CPZ-2995V CTP-2703 TRM-2101 上の OUT1 と IR.IN2 を接続して下さい CTP-2722 TRM-2101 上の OUT1 と IR.IN2 を接続して下さい CTP-2753 CTP-2793 CTP/CPZ-2723 TRM-2201 上の OUT1 と IR.IN1 を接続して下さい CTP/CPZ-2752 CTP/CPZ-2790 CTP/CPZ-2724 TRM-2201 上の OUT1 と IR.IN1 を接続して下さい +FCOM と DC 電源 ( プラス ) を接続して下さい -FCOM と DC 電源 ( マイナス ) を接続して下さい -COM3 と DC 電源 ( マイナス ) を接続して下さい [!] 出力信号は それぞれに対応した COM をご使用下さい 326

327 CTP-2725 CTP/CPZ-2726 CTP/CPZ-2726M CTP/CPZ-2726L CPZ-2727L CTP/CPZ-2762 CTP/CPZ-2762M CTP/CPZ-2826 CTP/CPZ-2826V CPZ-2827V CTP-2727 CTP-2727M CTP-2727L OUT1~OUT16 -COM3 OUT17~OUT32 -COM4 TRM-2101 上の OUT1 と IR.IN2 を接続して下さい +FCOM と DC 電源 ( プラス ) を接続して下さい -FCOM と DC 電源 ( マイナス ) を接続して下さい -COM2 と DC 電源 ( マイナス ) を接続して下さい [!] 出力信号は それぞれに対応した COM をご使用下さい OUT1~OUT16 -COM2 TRM-2201 上の OUT1 と IR.IN1 を接続して下さい +FCOM と DC 電源 ( プラス ) を接続して下さい -FCOM と DC 電源 ( マイナス ) を接続して下さい +COM3 と DC 電源 ( プラス ) を接続して下さい -COM3 と DC 電源 ( マイナス ) を接続して下さい [!] 出力信号は それぞれに対応した COM をご使用下さい OUT1~OUT16 -COM3, +COM3 OUT17~OUT32 -COM4, +COM4 TRM-2101 上の OUT1 と IR.IN2 を接続して下さい +FCOM と DC 電源 ( プラス ) を接続して下さい -FCOM と DC 電源 ( マイナス ) を接続して下さい +COM2 と DC 電源 ( プラス ) を接続して下さい -COM2 と DC 電源 ( マイナス ) を接続して下さい [!] 出力信号は それぞれに対応した COM をご使用下さい OUT1~OUT16 -COM2, +COM2! ピン番号の詳細説明については マニュアルに記載されています I/O コネクタピンアサインメント TRM-xxxx USER'S MANUAL を参照して下さい 4. 接続が完了したら OK をクリックして下さい 5. 自動的に各項目の診断が行われ 結果が表示されます 6. 診断結果が正しくない場合は ケーブルが正しく接続されているかご確認下さい 正しく接続されているにも関わらず診断結果が NG の場合には メニューから ファイル - 印刷 で診断結果を印刷して下さい その診断結果とともに弊社お客様相談センタまでお問い合わせ下さい お問い合わせ方法につきましては README.HTM をご参照ください 327

328 6.3.6 自己診断タイプ 5 必要な機材 CTP/CPZ-2505 CTP/CPZ-2506 CTP/CPZ-2515 CTP/CPZ-2516 CTP/CPZ-2517 CPZ DO 接続ケーブル(CAB-4201H) 端子台(TRM-2301) テスター 接続ケーブル(ECO-6601 等 ) 端子台(TRM-2201) テスター 診断手順! 複数枚使用する場合には RSW1 の設定値をインタフェースモジュール毎で異なる値に設定してください (1) コンフィギュレーションの診断 1. 自己診断プログラム を起動します (1) 付属ソフトウェアのインストール完了後 スタート メニューより プログラム - Interface GPC DiagDio を起動します (2) ボード検索 をクリックすると一覧表示画面が表示されます その中から 診断を行うデバイスを選択してください 画面に 型式名,RSW1 の設定値,I/O アドレス,IRQ が表示されます 2. メニューの 診断開始 - コンフィギュレーション を選択します 3. 自動的に各項目の診断が行われ 結果が表示されます 4. 診断結果が NG の場合には メニューから ファイル - 結果の保存 で診断結果をファイルへ保存してください その診断結果とともに弊社お客様相談センタまでお問い合わせください お問い合わせ方法につきましては README.HTM をご参照ください (2) 出力機能の診断 1. DO ユーティリティプログラム を起動します (1) 付属ソフトウェアのインストール完了後 スタート メニューより プログラム - Interface GPC DiagDio を起動します (2) ボード検索 をクリックすると一覧表示画面が表示されます その中から 診断を行うデバイスを選択してください 画面に 型式名,RSW1 の設定値,I/O アドレス,IRQ が表示されます 2. コネクタにケーブルと端子台を接続して下さい 328

329 3. 出力診断を行うピン番号のボタンを ON にして下さい 4. 出力診断を行うピン番号をテスターでご確認下さい OUT1 を診断する場合の接続例 CTP/CPZ-2505 OUT1 に対して OUT1AA/OUT1AC,OUT1BB/OUT1BC 端子が存在します 手順 3. で OUT1 のボタンを ON にして下さい ( 出力データ 1 ) OUT1AA と OUT1AC にテスターを当てると導通があります OUT1BB と OUT1BC にテスターを当てると導通がありません 手順 3. で OUT1 のボタンを OFF にして下さい ( 出力データ 0 ) OUT1AA と OUT1AC にテスターを当てると導通がありません OUT1BB と OUT1BC にテスターを当てると導通があります CTP/CPZ-2506 OUT1 に対して OUT1A,OUT1C が存在します CTP/CPZ-2515 手順 3. で OUT1 のボタンを ON にして下さい ( 出力データ 1 ) CTP/CPZ-2516 OUT1A と OUT1C にテスターを当てると導通があります CPZ DO 手順 3. で OUT1 のボタンを OFF にして下さい ( 出力データ 0 ) OUT1A と OUT1C にテスターを当てると導通がありません CTP/CPZ-2517 OUT1 に対して OUT1A/OUT1B/OUT1C 端子が存在します 手順 3. で OUT1 のボタンを ON にして下さい ( 出力データ 1 ) OUT1A と OUT1C にテスターを当てると導通があります OUT1B) と OUT1C にテスターを当てると導通がありません 手順 3. で OUT1 のボタンを OFF にして下さい ( 出力データ 0 ) OUT1A と OUT1C にテスターを当てると導通がありません OUT1B と OUT1C にテスターを当てると導通があります! ピン番号の詳細説明については マニュアルに記載されています I/O コネクタピンアサインメント TRM-xxxx USER'S MANUAL を参照して下さい 329

330 6.3.7 自己診断タイプ 6 必要な機材 CTP/CPZ CTP/CPZ CBI-2701 CBI-2702 CBI/CSI CBI TK CBI TR CBI/CSI CBI TK CBI TL LPC LPC LPC LPC LPC LPC LPC LPC PEX PEX PEX PEX PEX PEX PEX PEX 接続ケーブル ( 付属ケーブルまたは マニュアルに記載しているオプション品のケーブルをご用意ください ) 端子台 ( 必要に応じて マニュアルに記載しているオプション品の端子台をご用意ください 外部機器や 測定器との接続が容易になります ) 入力を診断するために接続する外部機器やスイッチ 出力診断時に出力状態を確認する測定器 診断手順! 複数枚使用する場合には RSW1 の設定値をインタフェースモジュール毎で異なる値に設定してください (1) コンフィギュレーションの診断 1. 自己診断プログラム を起動します (1) 付属ソフトウェアのインストール完了後 スタート メニューより プログラム - Interface GPC DiagDio を起動します (2) ボード検索 をクリックすると一覧表示画面が表示されます その中から 診断を行うデバイスを選択してください 画面に 型式名,I/O アドレス,IRQ が表示されます RSW1 の設定値の欄は常に 0 が表示されます CardBus シリーズに RSW1 はありません 330

331 2. メニューの 診断開始 - コンフィギュレーション を選択します 3. 自動的に各項目の診断が行われ 結果が表示されます 4. 診断結果が NG の場合には メニューから ファイル - 結果の保存 で診断結果をファイルへ保存してください その診断結果とともに弊社お客様相談センタまでお問い合わせください お問い合わせ方法につきましては README.HTM をご参照ください (2) 入力機能の診断 1. DI ユーティリティプログラム を起動します (1) 付属ソフトウェアのインストール完了後 スタート メニューより プログラム - Interface GPC DiUtil を起動します (2) ボード検索 をクリックすると一覧表示画面が表示されます その中から 診断を行うデバイスを選択してください 2. コネクタにケーブルと端子台を接続して下さい 3. 入力診断を行うピン番号に対応した相手外部機器の出力を ON にして下さい! ピン番号の詳細説明については マニュアルに記載されています I/O コネクタピンアサインメント を参照して下さい 4. ユーティリティプログラム上の入力診断を行っているピン番号が ON の表示に変化しているか確認下さい (3) 出力機能の診断 1. DO ユーティリティプログラム を起動します (1) 付属ソフトウェアのインストール完了後 スタート メニューより プログラム - Interface GPC DoUtil を起動します (2) ボード検索 をクリックすると一覧表示画面が表示されます その中から 診断を行うデバイスを選択してください 2. コネクタにケーブルと端子台を接続して下さい 3. 出力診断を行うピン番号のボタンを ON にして下さい! ピン番号の詳細説明については マニュアルに記載されています I/O コネクタピンアサインメント を参照して下さい 4. 出力診断を行うピン番号をロジックアナライザなどの測定器でご確認下さい 331

332 6.4 カードバス ID 設定ユーティリティこのユーティリティは複数枚の同一型式カードバス製品を使用するためのものです カード毎に異なる ID 番号を設定します この ID 番号は PCI デバイスで言えば RSW 番号と同等の意味を持ち デバイスマネージャ 自己診断プログラムでも RSW1 として表示されます 操作方法 1. ドライバソフトウェアのインストール完了後 コントロールパネル の Interface CardBus ID Utility を開きます 2. 現在挿入されている弊社カードバス製品の情報が表示されます 左から バス番号 デバイス番号 ファンクション番号 型式 ID 番号 を示します ID 番号の設定を行いたい製品をダブルクリックして下さい 3. ID 番号を設定するダイアログが開きますので コンボボックス内で設定したい ID 番号を選択し Ok ボタンをクリックします 4. これで ID 番号の設定は完了です 設定できる ID 番号は 0h~Fh までです 変更した ID 番号をドライバに認識させるには 一度カードを抜き差しするか システムを再起動して下さい 設定した ID 番号が分かるように番号を記したシールをカードに貼ることをお勧めします 332

GPG-2000

GPG-2000 DIO(PCI/C-PCI)Linux/RT GPG-2000 デジタル入出力製品 Linux/RT 対応ドライバソフトウェア Help for Linux www.interface.co.jp 目次 第 1 章はじめに 3 1.1 概要... 3 1.2 特長... 3 第 2 章製品仕様 4 2.1 動作環境... 4 2.2 基本仕様... 5 第 3 章実行手順 6 3.1 デバイスを動かすまで...

More information

DPC-0244

DPC-0244 DIO(PCI/C-PCI) DPC-0224 汎用入出力モジュール用 Windows ライブラリ Help for Windows www.interface.co.jp 目次 第 1 章はじめに 3 1.1 概要...3 第 2 章導入方法 4 2.1 インストール手順...4 2.2 使用方法...4 2.3 実行手順...7 第 3 章リファレンス 9 3.1 関数一覧...9 3.2 未サポート関数...10

More information

GPC-6105

GPC-6105 PULSE4(PCI)GEN GPC-6105 パルス出力製品 Windows 対応ドライバソフトウェア Help for Windows www.interface.co.jp 目次 第 1 章はじめに 2 1.1 概要...2 1.2 特長...2 第 2 章製品仕様 3 2.1 基本仕様...3 第 3 章導入方法 4 3.1 インストール手順...4 3.2 実行手順...4 3.3 クラスライブラリの参照方法...7

More information

BPC-0821 Help for Windows

BPC-0821 Help for Windows IFMEM4G.WIN BPC-0821 Windows 用メモリアクセスツール Help for Windows www.interface.co.jp 目次 第 1 章はじめに 2 1.1 概要...2 1.2 特長...2 第 2 章製品仕様 3 2.1 基本仕様...3 2.2 製品構成...3 第 3 章導入方法 4 3.1 インストール手順...4 3.2 実行手順...4 第 4 章リファレンス

More information

DPC-0401

DPC-0401 Interface USB Driver (I/O-CD) DPC-0401 USB 拡張 I/O 用 Windows ドライバ Help for Windows www.interface.co.jp 目次 第 1 章はじめに...3 1.1 概要...3 1.2 各 I/O に対応したドライバ...3 第 2 章製品仕様...4 2.1 基本仕様...4 2.2 製品構成...4 2.3 クラスライブラリの参照方法...5

More information

DPC-0403

DPC-0403 IFUSBIO(I/O-CD) DPC-0403 CoolIOs USB 製品用 Windows ドライバ Help for Windows www.interface.co.jp 目次 第 1 章はじめに 3 1.1 概要...3 1.2 特長...3 第 2 章製品仕様 4 2.1 基本仕様...4 2.2 製品構成...5 第 3 章導入方法 7 3.1 インストール手順...7 3.2 実行手順...7

More information

GPC-4851

GPC-4851 CAN(PCI/C-PCI) GPC-4851 CAN インタフェースモジュール用 Windows ドライバ Help for Windows www.interface.co.jp 目次 第 1 章はじめに 3 1.1 概要...3 1.2 特長...3 第 2 章製品仕様 4 2.1 基本仕様...4 2.2 対応型式...5 2.3 製品構成...8 2.4 注意事項...11 第 3 章導入方法

More information

CONTEC DIOプロバイダ ユーザーズガイド

CONTEC DIOプロバイダ ユーザーズガイド DIO プロバイダユーザーズガイド - 1 - DIO プロバイダ CONTEC DIO ボード Version 1.1.2 ユーザーズガイド July 17, 2012 備考 ORiN2SDK2.0.14 以降, このプロバイダは CONTEC 社の API-DIO(WDM) を使用しています. 以前 までの API-DIO(98PC) を使用する場合は,DIO98 プロバイダを使用してください.

More information

EWF管理ソフトウェア

EWF管理ソフトウェア IFEWF.WIN EWF 管理ソフトウェア Classembly Devices /FA コントローラ用 Windows ソフトウェア Help for Windows www.interface.co.jp 目次 第 1 章はじめに 3 1.1 概要...3 1.2 特長...3 第 2 章 製品仕様 4 2.1 基本仕様...4 2.2 製品構成...4 第 3 章 導入方法 5 3.1 インストール手順...5

More information

FBWFMemoryWatcher

FBWFMemoryWatcher IFFBWFMEMORYWATCHER.WIN FBWF Memory Watcher Classembly Devices 用 Windows ドライバソフトウェア Help for Windows www.interface.co.jp 目次 第 1 章はじめに 3 1.1 概要...3 1.2 特長...3 第 2 章製品仕様 4 2.1 基本仕様...4 2.2 製品構成...4 第 3 章導入方法

More information

GPC-4116

GPC-4116 HDLC(PCI/C-PCI) GPC-4116 HDLC 通信インタフェースモジュール用 Windows ドライバ Help for Windows www.interface.co.jp 目次 第 1 章はじめに 3 1.1 概要... 3 1.2 特長... 3 第 2 章製品仕様 4 2.1 基本仕様... 4 2.2 製品構成... 6 第 3 章導入方法 8 3.1 インストール手順...

More information

Microsoft Word - 7_rusb.doc

Microsoft Word - 7_rusb.doc お客様各位 有限会社らびっとはうす Windows 7 でのドライバ インストール方法 平素は弊社製品をご愛用いただき 誠にありがとうございます 以下に Windows 7 でのドライバ インストール方法を説明いたします ご使用になるパソコンは Windows XP が動作可能な環境を前提としています 対象製品 :R-USB シリーズ (R-USB-PIO8/8R, R-USB-PIO8/8, R-USB-PI16,

More information

プロバイダ ユーザーズガイド

プロバイダ ユーザーズガイド AIO プロバイダユーザーズガイド 1 AIO プロバイダ CONTEC AIO ボード Version 1.0.1 ユーザーズガイド July 17,2012 備考 AIO プロバイダユーザーズガイド 2 改版履歴 バージョン 日付 内容 1.0.0.0 2011712 初版. 1.0.1.0 2012529 メタモード追加. 1.0.1 2012717 ドキュメントのバージョンルールを変更. 対応機器

More information

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev. 00.0.04 1 / 10 目次 1. ファイル構成... 3 2. 環境 3 2.1. 動作環境 OS... 3 2.2. コンパイル時の注意点... 3 2.3. USB ドライバ... 3 3. 関数一覧... 4 3.1. USB 接続確認処理 (CD_checkConnect CD_checkConnect)

More information

GPC-8826

GPC-8826 IFHNL(PCI/C-PCI) GPC-8826 光メモリンクインタフェースモジュール用 Windows ドライバ Ver. 1.70 Help for Windows www.interface.co.jp 目次 第 1 章はじめに 4 1.1 概要...4 1.2 特長...4 1.3 用語解説...5 1.4 共有メモリとは...5 1.5 ウィンドウとは...9 第 2 章製品仕様 11

More information

型名 RF007 ラジオコミュニケーションテスタ Radio Communication Tester ソフトウェア開発キット マニュアル アールエフネットワーク株式会社 RFnetworks Corporation RF007SDK-M001 RF007SDK-M001 参考資料 1

型名 RF007 ラジオコミュニケーションテスタ Radio Communication Tester ソフトウェア開発キット マニュアル アールエフネットワーク株式会社 RFnetworks Corporation RF007SDK-M001 RF007SDK-M001 参考資料 1 型名 RF007 ラジオコミュニケーションテスタ Radio Communication Tester ソフトウェア開発キット マニュアル アールエフネットワーク株式会社 RFnetworks Corporation RF007SDK-M001 RF007SDK-M001 参考資料 1 第 1 章製品概要本開発キットは RF007 ラジオコミュニケーションテスタ ( 本器 ) を使用したソフトウェアを開発するためのライブラリソフトウェアです

More information

UIOUSBCOM.DLLコマンドリファレンス

UIOUSBCOM.DLLコマンドリファレンス UIOUSBCOM.DLL UIOUSBCOM.DLL Command Reference Rev A.1.0 2008/11/24 オールブルーシステム (All Blue System) ウェブページ : www.allbluesystem.com コンタクト :contact@allbluesystem.com 1 このマニュアルについて...3 1.1 著作権および登録商標...3 1.2

More information

<4D F736F F D20B6BCB5D7B2CCDED7D8CFC6ADB1D9315F43532E444F43>

<4D F736F F D20B6BCB5D7B2CCDED7D8CFC6ADB1D9315F43532E444F43> CASSIOPEIA DT-10 ライブラリマニュアル for C# Bluetooth 編 Ver 1.00 変更履歴 No Revision 更新日 項 改訂内容 1 1.00 05/2/22 初版初版発行 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 目次 1. 概要...1 2. 動作環境...1 3. 開発環境...1

More information

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D GS1-128 の描画 DLL について (ver. 2.2) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される必要があります 使用条件 プリンタの解像度 300dpi 以上 機能 バーコードの基本幅を 1 ドット単位で指定できる

More information

Visual BasicによるDIO入門書

Visual BasicによるDIO入門書 チュートリアル Visual Basic による DIO 入門書 (Digital Input Output) www.interface.co.jp /, (), (), (),,, (),,,, 2000, 2006 Interface Corporation. All rights reserved. www.interface.co.jp Ver. 1.9 20066 XP Embedded

More information

目次 目次... 1 はじめに... 3 概要... 4 サポート環境... 5 関数... 6 MEC_OpenDevice... 7 MECDevice_Release... 8 MECDevice_GetFirmVersion... 9 MECDevice_GetCoreTemperature

目次 目次... 1 はじめに... 3 概要... 4 サポート環境... 5 関数... 6 MEC_OpenDevice... 7 MECDevice_Release... 8 MECDevice_GetFirmVersion... 9 MECDevice_GetCoreTemperature MECodecAPI Reference Manual 2015 年 9 月 1 日 MEDIAEDGE 株式会社 目次 目次... 1 はじめに... 3 概要... 4 サポート環境... 5 関数... 6 MEC_OpenDevice... 7 MECDevice_Release... 8 MECDevice_GetFirmVersion... 9 MECDevice_GetCoreTemperature...

More information

このダイナミックリンクライブラリ GaugeC48.dll は 8CH から 48CH 用の DigitalGaugeCounterDG3000 シリーズ共通の DLL です この説明書は GaugeC48.dll を使ったアプリケーションを作成するためのものです 開発環境は MicrosoftVi

このダイナミックリンクライブラリ GaugeC48.dll は 8CH から 48CH 用の DigitalGaugeCounterDG3000 シリーズ共通の DLL です この説明書は GaugeC48.dll を使ったアプリケーションを作成するためのものです 開発環境は MicrosoftVi DigitalGaugeCounter DG3000 シリーズ ダイナミックリンクライブラリ GaugeC48.dll(DLL) 取扱説明書 このダイナミックリンクライブラリ GaugeC48.dll は 8CH から 48CH 用の DigitalGaugeCounterDG3000 シリーズ共通の DLL です この説明書は GaugeC48.dll を使ったアプリケーションを作成するためのものです

More information

システム監視ライブラリ

システム監視ライブラリ IFCPMGR.WIN システム監視ライブラリ ATX マザーボード用 Windows ドライバソフトウェア www.interface.co.jp 目次 第 1 章はじめに 3 1.1 概要...3 1.2 特長...3 第 2 章製品仕様 4 2.1 基本仕様...4 2.2 製品構成...4 第 3 章導入方法 5 3.1 インストール手順...5 3.2 クラスライブラリの参照方法...5

More information

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される必要があります 使用条件 プリンタの解像度 300dpi 以上 機能 バーコードの基本幅を 1 ドット単位で指定できる

More information

GPC-4150

GPC-4150 COM/PRT(PCI) GPC-4150 調歩同期シリアル通信 / プリンタインタフェースモジュール用 Windows ドライバ Help for Windows www.interface.co.jp 目次 第 1 章はじめに 3 1.1 概要...3 1.2 特長...3 第 2 章 製品仕様 4 2.1 基本仕様...4 2.2 製品構成...5 第 3 章 導入方法 7 3.1 インストール手順...7

More information

NI P1200 Release Notes Cover

NI P1200 Release Notes Cover PEX-H2994W Board Support Package Installation on RedHawk Release Notes July 4, 2019 1. はじめに 本書は Concurrent Real Time IncCCRT) の RedHawk 上で動作する インターフェース社製 PEX- H2994W PCI Express ボードサポートパッケージ用リリースノートです

More information

ユーティリティ 管理番号 内容 対象バージョン 157 管理情報バッチ登録コマンド (utliupdt) のメッセージ出力に対し リダイレクトまたはパイプを使用すると メッセージが途中までしか出 力されないことがある 267 転送集計コマンド (utllogcnt) でファイル ID とホスト名の組

ユーティリティ 管理番号 内容 対象バージョン 157 管理情報バッチ登録コマンド (utliupdt) のメッセージ出力に対し リダイレクトまたはパイプを使用すると メッセージが途中までしか出 力されないことがある 267 転送集計コマンド (utllogcnt) でファイル ID とホスト名の組 レベルアップ詳細情報 < 製品一覧 > 製品名 バージョン HULFT BB クライアント for Windows Type BB1 6.3.0 HULFT BB クライアント for Windows Type BB2 6.3.0 < 対応 OS> Windows2000, WindowsXP, WindowsServer2003 < 追加機能一覧 > HULFT BB クライアント 管理番号 内容

More information

Driver Specification for JX65x, 67x, 598

Driver Specification for JX65x, 67x, 598 .12 自販機プロトコル 12-1. 機能 自販機プロトコルは ASK 方式の赤外線通信で JVMA( 日本自動販売機工業会 ) 仕様の自販機と交信 するプロトコルです 12-2. 動作環境 機種 DT-9700 OS Microsoft WindowsCE.NET 4.1 12-3. 開発環境 Microsoft embedded C++ Version4.0 + SP1 Microsoft Visual

More information

1.dll の配置場所配布時はプログラムの実行フォルダーへ配置 2. 開発環境での使用 プロジェクトのプロパティーで [USBPIO.dll] を参照追加してください 開発環境 dll ファイルの場所 VB.Net Express Edition 境プロジェクトのフォルダ \bin\release VB.Netebugビルドの場合プロジェクトのフォルダ \bin\debug VB.Net Releaseビルドの場合プロジェクトのフォルダ

More information

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x CoIDE 用 F4D_VCP の説明 V001 2014/07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x08000000 です デバッグが可能です 目次 1. USB の VCP( 仮想 COM ポート )

More information

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です ACTIVE TOUCH 拡張部品取扱説明書 - 共有メモリアクセスコンポーネント - 1. はじめに 1 (1) 概要... 1 (2) INpMac のインストール... 1 2. Windows アプリケーションとの連携 2 (1) コントロール ( 部品 ) の登録... 2 (2) データの関連付け... 3 3. INtime アプリケーションとの連携 4 (1) 部品 ( コンポーネント

More information

Taro-82ADAカ.jtd

Taro-82ADAカ.jtd デジタル & アナログ絶縁入出力ユニット解説書製品型式 8 2 A D A - K C 製品型式 8 2 A D A - B D 製品型式 D A C S - 8 2 0 0 この解説書は 8 2 A D A または D A C S - 8 2 0 0 の動作と使用方法について簡単に説明したものです D A C S - 8 2 0 0 の場合は この解説書の 8 2 A D A という表現を 一部

More information

型名 RF014 デジタル ラジオコミュニケーションテスタ Digital Radio Communication Tester ソフトウェア開発キット マニュアル アールエフネットワーク株式会社 RFnetworks Corporation 参考資料 RF014SDK-M001 第 1 章製品概要本開発キットは RF014 デジタルラジオコミュニケーションテスタ ( 本器 ) を使用したソフトウェアを開発するためのライブラリソフトウェアです

More information

GPC-4161

GPC-4161 COM-EX(PCI/C-PCI) GPC-4161 調歩同期シリアル通信インタフェースモジュール用 Windows ドライバ Help for Windows www.interface.co.jp COM-EX(PCI/C-PCI) 2002 Interface Corporation. All rights reserved. 2 目次 第 1 章はじめに...5 1.1 概要...5 1.2

More information

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一 RX210 グループ IRQ 割り込みを使用したパルス出力 要旨 本サンプルコードでは IRQ 割り込みが発生すると 一定期間タイマでパルスを出力する 方法について説明します 対象デバイス RX210 1 / 25 内容 1. 仕様... 3 2. 動作確認条件... 3 3. ハードウェア説明... 3 3.1 使用端子一覧... 3 4. ソフトウェア説明... 4 4.1 動作概要... 4

More information

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート ) TrueSTUDIO 用 F4D_VCP の説明 V001 2014/07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです 無料の試用版開発ツール Atollic TrueSTUDIO for ARM Lite で作成したプロジェクトです ビルド可能なプログラムのコードサイズが 32Kbyte 以内の制限があります プログラムの開始番地は 0x08000000

More information

GPC-4301

GPC-4301 GPIB-HG(PCI/C-PCI) GPC-4301 GP-IB インタフェースモジュール用 Windows ドライバ Help for Windows www.interface.co.jp 目次 第 1 章はじめに 3 1.1 概要... 3 1.2 特長... 3 第 2 章製品仕様 4 2.1 基本仕様... 4 2.2 インタフェース ファンクション... 5 2.3 製品構成... 6

More information

TOPPERS 活用アイデア アプリケーション開発 コンテスト 部門 : 活用アイデア部門アプリケーション開発部門 作品のタイトル : Toppers_JSP と Scicos_lab / (Scilab でも可 ) による 組込みメカトロニクス制御シミュレーション 作成者 : 塩出武 ( シオデタ

TOPPERS 活用アイデア アプリケーション開発 コンテスト 部門 : 活用アイデア部門アプリケーション開発部門 作品のタイトル : Toppers_JSP と Scicos_lab / (Scilab でも可 ) による 組込みメカトロニクス制御シミュレーション 作成者 : 塩出武 ( シオデタ TOPPERS 活用アイデア アプリケーション開発 コンテスト 部門 : 活用アイデア部門アプリケーション開発部門 作品のタイトル : Toppers_JSP と Scicos_lab / (Scilab でも可 ) による 組込みメカトロニクス制御シミュレーション 作成者 : 塩出武 ( シオデタケシ ) 対象者 : 実機レス環境でモーター含むメカ制御プログラムの設計 および検証 学習をしてみたい方

More information

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A STM32L_ADC の説明 V003 2014/03/30 STM32L-Discovery の A/D 入力を行うプログラムです A/D CH0 ~ A/D CH3 の 4 本の入力が可能です 提供する PC のアプリケーション Access_SerialPort を使用して UART( 非同期シリアル通信 ) により A/D 入力の表示を行うことができます 無料の開発ツール Atollic TrueSTUDIO

More information

AquesTalk プログラミングガイド

AquesTalk プログラミングガイド AquesTalk プログラミングガイド ( 株 ) アクエスト 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと サウンドデバイスに出力する 2 種類があります 使用するアプリケーションに応じて選択してください

More information

Microsoft Word - Writing Windows Installer's DLL.doc

Microsoft Word - Writing Windows Installer's DLL.doc Windows Installer 形式 DLL ファイルの作成 この文書は Acresso Software の次の文書を元に記載しています http://www.acresso.com/webdocuments/pdf/dlls-for for-ipwi.pdf 検証したバージョン : InstallShield 2009 Premier Edition 概要 InstallShield 2009

More information

K006/ K006 < カメラなしモデル >

K006/ K006 < カメラなしモデル > K006/ K006 < カメラなしモデル > はじめに 本書は K006 K006 < カメラなしモデル > ( 以降 K006 ) とパソコンを指定の USB ケーブル ( 別売 ) を使用して接続し インターネット通信や au ホームページで公開している各種ツールをご利用になるための USB ドライバ のインストール方法を説明しています USB ドライバをインストールする 3 パソコンに接続する

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プロシージャ プロシージャの種類 Subプロシージャ Functionプロシージャ Propertyプロシージャ Sub プロシージャ Subステートメント~ステートメントで囲まれる 実行はするけど 値は返さない 途中で抜けたいときは Exit Sub を行なう Public Sub はマクロの実行候補に表示される Sub プロシージャの例 Public Sub TestSubProc() Call

More information

プロセス間通信

プロセス間通信 プロセス間通信 プロセス間通信 (SendMessage) プロセス間通信とは 同一コンピューター上で起動して居るアプリケーション間でデータを受け渡し度い事は時々有る Framework には リモート処理 と謂う方法でデータの受け渡しを行なう方法が有る 此処では 此の方法では無く 従来の方法の API を使用したプロセス間通信を紹介する 此の方法は 送信側は API の SendMessage で送り

More information

Microsoft Word - DS50-N A.doc

Microsoft Word - DS50-N A.doc BIOS マニュアル BIOS セットアップユーティリティとは BIOS セットアップユーティリティとは BIOS の設定を確認 変更するためのツールです セットアップユーティリティは 本体に内蔵されているマザーボード上のフラッシュメモリーに格納されています このユーティリティで定義される設定情報は CMOS RAM と呼ばれる特殊な領域に格納されます この設定情報は マザーボードに搭載されているバックアップ電池により保存され

More information

内容 1. APX-3302 の特長 APX-3312 から APX-3302 へ変更するためには 差分詳細 ハードウェア ハードウェア性能および仕様 ソフトウェア仕様および制限 Ini ファイルの設

内容 1. APX-3302 の特長 APX-3312 から APX-3302 へ変更するためには 差分詳細 ハードウェア ハードウェア性能および仕様 ソフトウェア仕様および制限 Ini ファイルの設 APX-3312 と APX-3302 の差分一覧 No. OM12021D APX-3312 と APX-3302 は どちらも同じ CameraLink 規格 Base Configuration カメラ 2ch 入力可能なボードになります 本書では APX-3312 をご利用になられているお客様が APX-3302 をご利用になられる場合の資料として 両ボードについての差異 を記述しております

More information

スライド 1

スライド 1 RL78/G13 周辺機能紹介 SAU シリアル アレイ ユニット ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ SAU の概要 UART 通信機能のプログラム サンプル紹介 2 SAU の概要 3 SAU の機能 クロック同期式調歩同期式マスタ動作のみ チャネル 0: 送信チャネル 1: 受信 4 UART

More information

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for ARM Lite 4.2.0 で作成した STM32F4 Discovery 基板用のプロジェクトです

More information

MS5145 USB シリアル エミュレーション モードの設定

MS5145 USB シリアル エミュレーション モードの設定 MS5145-AC-U 補足設定 2010 年 7 月株式会社エイポック http://www.a-poc.co.jp/ USB シリアルエミュレーションモードの設定 1. 概要 USB シリアル エミュレーション モードとはバーコードリーダーを USB で接続していながら RS-232C 接続機器としてパソコンに認識させる設定です 読み取ったバーコード データは COM ポートにシリアルデータとして入力します

More information

スライド 1

スライド 1 RX62N 周辺機能紹介 TMR 8 ビットタイマ ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A コンテンツ TMR の概要 プログラムサンプル (1) パルス出力機能 (8 ビットモード ) プログラムサンプル (2) インターバルタイマ機能 (16 ビット コンペアマッチカウントモード ) プログラムサンプルのカスタマイズ

More information

はじめに 本書は GRATINA2 とパソコンを指定の USB ケーブル ( 別売 ) を使用して接続し インターネット通信や au ホームページで公開している各種ツールをご利用になるための USB ドライバ のインストール方法を説明しています USB ドライバをインストールする 3 パソコンに接続

はじめに 本書は GRATINA2 とパソコンを指定の USB ケーブル ( 別売 ) を使用して接続し インターネット通信や au ホームページで公開している各種ツールをご利用になるための USB ドライバ のインストール方法を説明しています USB ドライバをインストールする 3 パソコンに接続 本書内で使用されている表示画面は説明用に作成されたものです OS のバージョンやお使いのパソコンの環境 セキュリティ設定によっては表示画面の有無 詳細内容 名称が異なる場合があります 本書は お客様が Windows の基本操作に習熟していることを前提にしています パソコンの操作については お使いのパソコンの取扱説明書をご覧ください 本書の内容の一部または全部を無断転載することは 禁止されています

More information

NFCライブラリマニュアル

NFCライブラリマニュアル abc SAM ライブラリマニュアル このマニュアルは SAM ライブラリの仕様について記載します Ver. 1.08 ご注意 このソフトウェアおよびマニュアルの 一部または全部を無断で使用 複製することはできません このソフトウェアおよびマニュアルは 本製品の使用許諾契約書のもとでのみ使用することができます このソフトウェアおよびマニュアルを運用した結果の影響については 一切の責任を負いかねますのでご了承ください

More information

<リスト1> AD コンバータへのデータの出力例 NEC PC98 用 mov al,22h // CLK -> 1, CS -> 0, DI -> 0 out 32h,al // シリアル ポートにデータ出力 PC/AT 互換機用 mov al,00h // CLK -> 1 mov dx,3fb

<リスト1> AD コンバータへのデータの出力例 NEC PC98 用 mov al,22h // CLK -> 1, CS -> 0, DI -> 0 out 32h,al // シリアル ポートにデータ出力 PC/AT 互換機用 mov al,00h // CLK -> 1 mov dx,3fb AD コンバータへのデータの出力例 NEC PC98 用 mov al,22h // CLK -> 1, CS -> 0, DI -> 0 out 32h,al // シリアル ポートにデータ出力 PC/AT 互換機用 mov al,00h // CLK -> 1 mov dx,3fbh out dx al // シリアル ポートにデータ出力 mov al,03h // CS -> 0,

More information

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ arduino プログラミング課題集 ( Ver.5.0 2017/06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイコンから伝える 外部装置の状態をマイコンで確認する 信号の授受は 入出力ポート 経由で行う (2) 入出力ポートとは?

More information

スライド 1

スライド 1 RL78/G13 周辺機能紹介 ADC A/D コンバータ ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ ADC の概要 ソフトウエア トリガ セレクト モード 連続変換モードのプログラム サンプル紹介 2 ADC の概要 3 ADC のブロック図 パワー オフが可能 入力 選択 記憶 比較 基準電圧 変換結果

More information

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受 STM32L_UART1 の説明 V004 2014/03/30 STM32L-Discovery の UART 1 の送受信を行うプログラムです 無料の開発ツール Atollic TrueSTUDIO for ARM Lite( 試用版 ) で作成したプロジェクトです プログラムの開始番地は 0x08000000 です デバッグが可能です PC アプリケーションの Access_SerialPort

More information

Gpci4ソフト_下位DLL_説明書3版.PDF

Gpci4ソフト_下位DLL_説明書3版.PDF G-PCI4 ... 3 WINDOWSNT...3 WINDOWS2000/XP...3... 4...4 DLL WINDOWSNT/2000/XP...4...4... 5...5... 6...6...6...6...6...7...9...11... 11... 11... 11... 12... 12...12 ...13...14 1... 14 2... 15 3... 16 4...

More information

AquesTalk Win Manual

AquesTalk Win Manual AquesTalk Win マニュアル 株式会社アクエスト http://www.a-quest.com/ 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと サウンドデバイスに出力する 2

More information

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く 変数 入出力 演算子ここまでに C 言語プログラミングの様子を知ってもらうため printf 文 変数 scanf 文 if 文を使った簡単なプログラムを紹介した 今回は変数の詳細について習い それに併せて使い方が増える入出力処理の方法を習う また 演算子についての復習と供に新しい演算子を紹介する 変数の宣言プログラムでデータを取り扱う場合には対象となるデータを保存する必要がでてくる このデータを保存する場所のことを

More information

1. 入力画面

1. 入力画面 指定した時刻に指定したマクロ (VBA) を実行するプログラム (VBA) 益永八尋 様々な業務を行っている場合には 指定した時刻に指定したマクロ (Macro VBA) を実行したくなる場合がある たとえば 9:00 17: 00 や 1 時間 6 時間間隔に指定したマクロ (Macro VBA) を実行する この様な場合に対応できるように汎用性の高いプログラムを作成した この場合に注意する必要があるのは

More information

Microsoft Word - Cプログラミング演習(10)

Microsoft Word - Cプログラミング演習(10) 第 10 回 (6/25) 3. ファイルとその応用 (3) ファイルの更新 シーケンシャルファイルの更新 シーケンシャルファイルでは, 各レコードが可変長で連続して格納されており, その中の特定のレコードを変更することができない そこで一般的には, マスタファイルからデータを取り出し, 更新処理を行ったあとに新マスタファイルに書き込む 注 ) マスタファイル : 主ファイル, 基本ファイルと呼ばれるファイルで内容は比較的固定的であり,

More information

[DS50-N A] BIOS マニュアル BIOS セットアップユーティリティとは BIOS セットアップユーティリティとは BIOS の設定を確認 変更するためのツールです セットアップユーティリティは 本体に内蔵されているマザーボード上のフラッシュメモリーに格納されています このユ

[DS50-N A] BIOS マニュアル BIOS セットアップユーティリティとは BIOS セットアップユーティリティとは BIOS の設定を確認 変更するためのツールです セットアップユーティリティは 本体に内蔵されているマザーボード上のフラッシュメモリーに格納されています このユ BIOS マニュアル BIOS セットアップユーティリティとは BIOS セットアップユーティリティとは BIOS の設定を確認 変更するためのツールです セットアップユーティリティは 本体に内蔵されているマザーボード上のフラッシュメモリーに格納されています このユーティリティで定義される設定情報は チップセット上の CMOS RAM と呼ばれる特殊な領域に格納 されます この設定情報は マザーボードに搭載されているバックアップ電池により保存されます

More information

Singapore Contec Pte Ltd. Opening Ceremony

Singapore Contec Pte Ltd. Opening Ceremony M2M/IoT ソリューション CONPROSYS FIT プロトコル通信サンプルタスク 2018 年 03 月 06 日株式会社コンテック 1 必要機材 本サンプルを利用するに当り 最低限必要な機材を以下に示します 動作確認や信号状況を変化させるためのスイッチ センサ類は適宜ご用意下さい 品名 型式 必要数 メーカー M2Mコントローラ CPS-MC341-ADSC1-111 2 CONTEC ノートPC

More information

ライブラリー関数リファレンス

ライブラリー関数リファレンス USB-PIO 8/16-**-FT シリーズ USB-RLSW-2C***-FT シリーズ USB-RLSW-*RSMB-FT シリーズ USB-TIM-AC10A*-FT シリーズ ライブラリ関数 & コマンド リファレンス 重要事項 本マニュアルはシステムサコム工業株式会社製の USB I/O 機器 (USB-PIO 8/16-**-FT シリーズ, USB-RLSW-2C***-FT シリーズ,

More information

取扱説明書[SH-04E]

取扱説明書[SH-04E] SH-04E USB ドライバインストールマニュアル USB ドライバについて............................................................. ご使用になる前に................................................................. USB ドライバをインストールする...................................................

More information

Microsoft Word - Cプログラミング演習(9)

Microsoft Word - Cプログラミング演習(9) 第 9 回 (6/18) 3. ファイルとその応用 外部記憶装置に記録されたプログラムやデータを, ファイルと呼ぶ シーケンシャルファイルやランダムファイルへのデータの記録や読み出し, 更新の手順について学習する (1) ファイルとレコードファイル複数の関連したデータを一つに集めたり プログラムを外部記憶装置に保存したものレコードファイルを構成する一塊のデータ ex. 個人カードフィールドレコードを構成する個別の要素

More information

SP-1221 LIN I/F 基板 ユーザーズマニュアル 作成日 :2017 年 10 月 17 日

SP-1221 LIN I/F 基板 ユーザーズマニュアル 作成日 :2017 年 10 月 17 日 SP-1221 LIN I/F 基板 ユーザーズマニュアル 作成日 :2017 年 10 月 17 日 目次 1. 配線方法... 3 2. KV-Studio 設定... 6 3. 制御方法... 7 4. 一般仕様... 9 2 1. 配線方法 A B C 3 4 2 E 1 D 購入時の内容物 番号 項目 1 2 3 SP-1221 基板 MIL34 ピンフラットケーブル 2m(KV-C16XTD)

More information

NM30操作DLL(SSK.DLL)

NM30操作DLL(SSK.DLL) NM33 用 OptCamSDK 取扱説明書 Rev. 1.05 2018/01/17 オプト株式会社 OPT Corporation 391-0013 長野県茅野市宮川 5423-2 Tel: 0266-82-0020 5423-2 Miyagawa,Chino-shi,Nagano-ken 391-0013, Japan Fax: 0266-82-0022 1 目 次 1. 概要... 4 2.

More information

演算増幅器

演算増幅器 ファイルこれまでにデータの入力方法として キーボードからの入力を用いてきた 構造体を習った際に実感してもらえたと思うが 入力データ量が多いときにはその作業は大変なものとなり 入力するデータを間違えた場合には最初からやり直しになる そこで今回はこれらの問題を解決するため あらかじめ入力データをテキストエディタなどで編集し ファイルとして保存したものを入力データとして用いる方法を習っていく さらにプログラムで作成したデータをファイルに出力する方法も併せて習っていく

More information

Prog1_12th

Prog1_12th 2013 年 7 月 4 日 ( 木 ) 実施 ファイル処理ファイルとはファイル (file) は日常用語では紙などを綴じたものを表すが, コンピュータ用語ではデータの集合体を指す言葉である ファイルは例えば, 文書ファイルやプログラムファイルのように, 用途によって分類されることもあれば, また, テキストファイルやバイナリファイルのように, ファイルの作り方によって分類されることもある なお,

More information

HLSB-36PCI-LP ユーザーズマニュアル

HLSB-36PCI-LP ユーザーズマニュアル STD_HLSB36PCILP_V3.0J HLS(MKY36) 搭載 PCI ボード HLSB-36PCI-LP ユーザーズマニュアル ご注意 1. 本書に記載された内容は 将来予告なしに変更する場合があります 本製品をご使用になる際には 本書が最新の版であるかをご確認ください 2. 本書において記載されている説明や回路例などの技術情報は お客様が用途に応じて本製品を適切にご利用をいただくための参考資料です

More information

Microsoft Word - DT-5100Lib_Manual_DotNet.doc

Microsoft Word - DT-5100Lib_Manual_DotNet.doc CASSIOPEIA DT-5100 シリーズ.NET ライブラリマニュアル 概要編 Ver 3.00 変更履歴 No Revision 更新日項改訂内容 1 1.00 03/1/20 初版初版発行 2 3.00 05/03/15 3 カシオライブラリマニュアル (.NET) 開発マニュアルの 1~4 をひとまとめ にしました 4 5 6 7 8 9 10 11 12 13 14 15 16 17

More information

S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0

S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0 S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0 評価ボード キット 開発ツールご使用上の注意事項 1. 本評価ボード キット 開発ツールは お客様での技術的評価 動作の確認および開発のみに用いられることを想定し設計されています それらの技術評価 開発等の目的以外には使用しないで下さい 本品は 完成品に対する設計品質に適合していません

More information

はじめに 京セラ製スマートフォンを指定の microusb ケーブル ( 別売 ) またはこれと共通仕様の microusb ケーブル ( 別売 )( 以下 USB ケーブル ) と接続して USB テザリング機能をご使用いただくためには あらかじめパソコンに USB ドライバ をインストールしてい

はじめに 京セラ製スマートフォンを指定の microusb ケーブル ( 別売 ) またはこれと共通仕様の microusb ケーブル ( 別売 )( 以下 USB ケーブル ) と接続して USB テザリング機能をご使用いただくためには あらかじめパソコンに USB ドライバ をインストールしてい 京セラ製スマートフォン用 USB ドライバインストールマニュアル 本書内で使用されている表示画面は説明用に作成されたものです OS のバージョンやお使いのパソコンの環境 セキュリティ設定によっては表示画面の有無 詳細内容 名称が異なる場合があります 本書は お客様が Windows の基本操作に習熟していることを前提にしています パソコンの操作については お使いのパソコンの取扱説明書をご覧ください

More information

CentreCOM VT-Kit2 plus リリースノート

CentreCOM VT-Kit2 plus リリースノート VT-Kit2 plus この度は をお買いあげいただき 誠にありがとうございます このは 付属のマニュアルに記載されていない内容や ご使用の前にご理解いただきたい注意点など お客様に最新の情報をお知らせするものです 最初にこのをよくお読みになり 本製品を正しくご使用ください 1 取扱説明書の補足 ユーザーマニュアル (J613-M0617-00 Rev.A) の補足事項です 1.1 USB ドライバーのインストールについて

More information

RW-5100 導入説明書 Windows7 用 2017 年 7 月 シャープ株式会社

RW-5100 導入説明書 Windows7 用 2017 年 7 月 シャープ株式会社 RW-5100 導入説明書 Windows7 用 2017 年 7 月 シャープ株式会社 はじめに 本書は Windows 7 環境において IC カードリーダライタ RW-5100 を使用するため お使いのパソコンにデバイスドライバソフトウェア ( 以下 ドライバソフト と記載 ) をインストールする方法について記述しています 本書で説明するドライバソフトは Windows 7 SP1 で動作するものです

More information

HLSB-36PCI2 ユーザーズマニュアル

HLSB-36PCI2  ユーザーズマニュアル STD-HLSB36PCI2-V1.0J HLS(MKY36) 搭載 PCI ボード HLSB-36PCI2 ユーザーズマニュアル ご注意 1. 本書に記載された内容は 将来予告なしに変更する場合があります 本製品をご使用になる際には 本書が最新の版数であるかをご確認ください 2. 本書において記載されている説明や回路例などの技術情報は お客様が用途に応じて本製品を適切にご利用をいただくための参考資料です

More information

本資料のご使用につきましては 次の点にご留意願います 本資料の内容については 予告無く変更することがあります 1. 本資料の一部 または全部を弊社に無断で転載 または 複製など他の目的に使用することは堅くお断りいたします 2. 本資料に掲載される応用回路 プログラム 使用方法等はあくまでも参考情報で

本資料のご使用につきましては 次の点にご留意願います 本資料の内容については 予告無く変更することがあります 1. 本資料の一部 または全部を弊社に無断で転載 または 複製など他の目的に使用することは堅くお断りいたします 2. 本資料に掲載される応用回路 プログラム 使用方法等はあくまでも参考情報で FSA サンプルプログラムマニュアル - 姿勢検出 - Rev.1.0 本資料のご使用につきましては 次の点にご留意願います 本資料の内容については 予告無く変更することがあります 1. 本資料の一部 または全部を弊社に無断で転載 または 複製など他の目的に使用することは堅くお断りいたします 2. 本資料に掲載される応用回路 プログラム 使用方法等はあくまでも参考情報であり これらに起因する第三者の知的財産権およびその他の権利侵害あるいは損害の発生に対し

More information

24th Embarcadero Developer Camp

24th Embarcadero Developer Camp 17 Th Developer Camp B4 Delphi/C++Builder テクニカルワークショップ Delphi / C++Builder 旧バージョンアプリケーションの移行 エンバカデロ テクノロジーズサポートチーム with 高橋智宏 1 17 Th Developer Camp Delphi Q1 2 midas.dll Q. 別々のバージョンで作成したデータベースアプリケーションがあります

More information

Taro-ファイル処理(公開版).jtd

Taro-ファイル処理(公開版).jtd ファイル処理 0. 目次 1. はじめに 2. ファイル内容の表示 3. ファイル内容の複写 3. 1 文字単位 3. 2 行単位 4. 書式付き入出力 5. 文字配列への入出力 6. 課題 6. 1 課題 1 ( ファイル圧縮 復元 ) - 1 - 1. はじめに ファイル処理プログラムの形は次のようになる #include main() { FILE *fp1,*fp2; ファイルポインタの宣言

More information

1. 使用する信号 1.1. UART 信号 UART 通信に使用する信号と接続相手との接続は以下の通りです UART 信号表 番号 CPU 機能名 CPU 信号名 基板コネクタピン番号 方向 接続相手の信号名 1 USART1_TX PA9 CN > RxD 2 USART1_R

1. 使用する信号 1.1. UART 信号 UART 通信に使用する信号と接続相手との接続は以下の通りです UART 信号表 番号 CPU 機能名 CPU 信号名 基板コネクタピン番号 方向 接続相手の信号名 1 USART1_TX PA9 CN > RxD 2 USART1_R TrueSTUDIO 用 L152CD_UART1 の説明 V001 2014/10/22 UART( 非同期シリアル通信 ) で送受信を行う STM32L152C-DISCO のプロジェクトサンプルです STM32L152C-DISCO は STMicroelectronics 社製の Cortex-M3 ARM CPU である STM32L152RCT6 を搭載した基板です 試用版の開発ツール

More information

ログイン時の ID パスワードは マイページ と同一です インストール前の状態の場合 ログイン後に表示されるページの ライセンス一覧 に該当製品シリアルの表示はされません インストール完了後 ライセンス管理ページご利用シリアルの一覧が表示されます 以上でライセンス管理ページの作成は完了です なお セ

ログイン時の ID パスワードは マイページ と同一です インストール前の状態の場合 ログイン後に表示されるページの ライセンス一覧 に該当製品シリアルの表示はされません インストール完了後 ライセンス管理ページご利用シリアルの一覧が表示されます 以上でライセンス管理ページの作成は完了です なお セ ソースネクストいきなり PDF シリーズ セットアップ手順書 本手順書は グループポリシーを使用したソフトウェア配布およびサイレントインストールについて記 述しています 以下の項目をご確認いただき インストールを行なってください 目次 1. 事前準備 1 1-1. ライセンス管理ページの作成 1 1-2. 接続許可 2 1-3. プログラムのダウンロード (CD-ROM のバージョン番号が 1.0.0.0

More information

REX-C56EX FAX送信 第5.0版

REX-C56EX FAX送信 第5.0版 OS 付属ソフトの設定から FAX 送信まで FAX 送信 REX-C56EX 2015 年 10 月第 5.0 版 Windows 10 Vista の場合の場合 付属の FAX ソフトの設定など詳細は Microsoft 社にお問い合せください 1. FAX の設定をする 1-1. 1-3. 1 ツール をクリック 2 すべてのアプリ をクリック 2 FAX の設定 をクリック 1 スタート をクリック

More information

Microsoft Word - XPC4ソフトマニュアル.doc

Microsoft Word - XPC4ソフトマニュアル.doc < XPC-4 映像ツール 簡易マニュアル> お試し版 Ver1.0 XPC-4 に USB ケーブルを接続する際の注意事項 ファームウェア アップデートの作業 もしくは XPC-4 映像ツール を使用するときは USB2.0 に対応した USB ケーブル (Type A[ オス ]-Type B[ オス ]) が 1 本必要です USB ケーブルはパソコンの OS(Windows) が完全に起動してから

More information

ホストプログラム操作説明書

ホストプログラム操作説明書 様 インストール操作説明書 USB ドライバインストール操作説明 JT-KP41U 32bit 対応カードリーダー用 NOTE: Windows XP / Server 2003 / Windows Vista / Server 2008 / Windows 7 / Windows 8 対応 バージョン :1.1.0.0 受領印欄 パナソニックシステムネットワークス株式会社モビリティビジネスユニット

More information

TF Series with Tio1608-D System Setup Guide

TF Series with Tio1608-D System Setup Guide システムセットアップガイド 第 1 版 : 2016 年 6 月 このガイドでは ヤマハデジタルミキシングコンソール TF シリーズ と I/O ラック Tio1608-D を使用したミキシングシステムのセットアップ手順や Tio1608-D の台数に応じたシステム例を紹介します TF シリーズは単体でも使用することができますが Tio1608-D を併用することで簡単にシステムを拡張することができ

More information

はじめに URBANO PROGRESSO を microusb ケーブル 01 ( 別売 ) またはこれと共通の仕様の microusb ケーブル ( 別売 )( 以下 USB ケーブル ) と接続して USB テザリング機能をご使用いただくためには あらかじめパソコンに USB ドライバ をイン

はじめに URBANO PROGRESSO を microusb ケーブル 01 ( 別売 ) またはこれと共通の仕様の microusb ケーブル ( 別売 )( 以下 USB ケーブル ) と接続して USB テザリング機能をご使用いただくためには あらかじめパソコンに USB ドライバ をイン はじめに URBANO PROGRESSO を microusb ケーブル 01 ( 別売 ) またはこれと共通の仕様の microusb ケーブル ( 別売 )( 以下 USB ケーブル ) と接続して USB テザリング機能をご使用いただくためには あらかじめパソコンに USB ドライバ をインストールしていただく必要があります USB ドライバをインストールする 3 パソコンに接続する 4 接続状態を確認する

More information

IO-PCIソフト仕様書3版.PDF

IO-PCIソフト仕様書3版.PDF DLL iopcisb.dll95/98/me iopcisbnt.dllnt/2000/xp WindowsSystem iopcisb.lib(95/98/me) iopcisbnt.lib(nt/2000/xp) VisualC/C++ IOPCIapi.h HANDLEhVxD // hvxd=iopciopen(1); // (1) ID // // intret; ret=iopciclose(

More information

Windows Server 2003 Service Pack 適用手順書

Windows Server 2003 Service Pack 適用手順書 CLUSTERPRO X 1.0 for Windows Windows Server 2003 Service Pack 適用手順書 第 1 版 2007 年 5 月 21 日 本手順書では CLUSTERPRO X 環境における Windows Server 2003 Service Pack 1/2 の適用方法を説明します 以降 特に記述のない場合 Service Pack は Windows

More information

Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M

Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル 413180100 19.4 システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M21/M22/M23/M24/M25 テクニカルマニュアル 413556900 21.4 システムリセットコントローラ

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション マイコンプログラミング演習 I 第 04-05 回 LEDを用いたI/O 制御担当 : 植村 実験の目的 本実験ではマイコンシステムを用いた信号の入出力の制御方法を理解することを目的とし, マイコンのアーキテクチャを理解 実装するとともに, アセンブラによるプログラミング技術の習得を行う. 回路の構成として,PIC16F84A を用いてスイッチを入力とする LED の点灯 / 消灯の出力操作を行う回路ならびにアセンブラプログラムを実装する.

More information

IC-R8600をSDRに使用するには

IC-R8600をSDRに使用するには IC-R8600 を SDR に使用するには IC-R8600(Ver.1.30 以降 ) は デジタル同期 / 直交データ (In Phase/Quadrature) 出力に対応しています 本製品の [I/Q OUT] ポートとパソコンのUSBポートを接続すると パソコンにインストールされた弊社指定のSDRソフトウェア (HDSDR) 上で 受信信号の処理と本製品の制御ができます ご使用になるまでの流れ

More information

REX-USB56 「FAX送信」編 第6.0版

REX-USB56 「FAX送信」編 第6.0版 OS 付属ソフトの設定から まで REX-USB56 2016 年 3 月第 6.0 版 Windows 10 Vista の場合の場合 付属の FAX ソフトの設定など詳細は Microsoft 社にお問い合せください 1. FAX の設定をする 1-1. 1-3. 1 ツール をクリック 2 すべてのアプリ をクリック 2 FAX の設定 をクリック 1 スタート をクリック 1-2. 1-4.

More information

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+) RL78 開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行 ( 統合開発環境編 ) (High-performance Embedded Workshop CS+) 2017/4/7 R20UT2087JJ0103 ソフトウェア事業部ソフトウエア技術部ルネサスシステムデザイン株式会社 はじめに 本資料は 統合開発環境 High-performance Embedded Workshop

More information

HA8000シリーズ xJモデルBMCネットワークにおける注意事項

HA8000シリーズ xJモデルBMCネットワークにおける注意事項 2010 年 4 月 BMC ネットワーク設定における注意事項 < 現象 > システム装置のリモートマネジメント機能を使用する場合 BMC のネットワーク設定を行なう必要があります 設定方法は ユーザーズガイド 5 リモートマネジメント機能 に記載しておりますが 記載された通りに実施しても 正しく設定できない場合があります < 対象システム装置 > 対象モデル名 対象形式 HA8000 RS220

More information

AN178 USB仮想シリアルドライバ インストールガイド

AN178 USB仮想シリアルドライバ インストールガイド アルファボードシリーズ USB 仮想シリアルドライバインストールガイド 第 2 版 2015 年 12 月 15 日 1. 概要 1.1 概要 本アプリケーションノートでは USB Function 機能を持つアルファボードシリーズに付属する USB 仮想シリアルドライバのインストール方法について解説します USB 仮想シリアルを使用する場合の各ボードの設定方法 動作方法につきましては 各ボードのサンプルプログラム解説

More information

2006年10月5日(木)実施

2006年10月5日(木)実施 2010 年 7 月 2 日 ( 金 ) 実施 ファイル処理ファイルとはファイル (file) は日常用語では紙などを綴じたものを表すが, コンピュータ用語ではデータの集合体を指す言葉である ファイルは例えば, 文書ファイルやプログラムファイルのように, 用途によって分類されることもあれば, また, テキストファイルやバイナリファイルのように, ファイルの作り方によって分類されることもある なお,

More information

Microsoft Word - SREX_SDK2_R31.doc

Microsoft Word - SREX_SDK2_R31.doc 2017 年 4 月 - 目次 - 1-1. はじめに 2 1-2. 動作環境 2 1-3. ファイル構成 2 1-4. 注意事項 2 2-1. セットアップ 3 2-2. アンインストール 4 3-1. アプリケーション開発について 5 3-2. サンプルアプリケーションについて 10 3-3. ライブラリ関数仕様 13 3-4. 指紋情報構造体について 19 3-5. 通知メッセージ一覧 20

More information

Microsoft Word - ModelAnalys操作マニュアル_

Microsoft Word - ModelAnalys操作マニュアル_ モデル分析アドイン操作マニュアル Ver.0.5.0 205/0/05 株式会社グローバルアシスト 目次 概要... 3. ツール概要... 3.2 対象... 3 2 インストールと設定... 4 2. モデル分析アドインのインストール... 4 2.2 モデル分析アドイン画面の起動... 6 3 モデル分析機能... 7 3. 要求分析機能... 7 3.. ID について... 0 3.2 要求ツリー抽出機能...

More information

i99-BASIC IO制御コマンド コマンドリファレンス

i99-BASIC IO制御コマンド コマンドリファレンス i99-basic IO 制御 コマンドリファレンス - - Interface Corporation はじめに 本ドキュメントでは 説明で表現している表記として下記のように定義します で囲んでいる文字列については キーボードで入力する文字列を意味します [ ] で囲んでいる文字列については 文字を意味します F や Enter のようにで表現しているものは キーボードのキーを意味します Interface

More information