GPC-4116

Size: px
Start display at page:

Download "GPC-4116"

Transcription

1 HDLC(PCI/C-PCI) GPC-4116 HDLC 通信インタフェースモジュール用 Windows ドライバ Help for Windows

2 目次 第 1 章はじめに 概要 特長... 3 第 2 章製品仕様 基本仕様 製品構成... 6 第 3 章導入方法 インストール手順 実行手順 (HDLC 通信部 ) 実行手順 ( 汎用 DIO 部 ) 第 4 章リファレンス (HDLC 通信部 ) 関数一覧 関数個別説明 構造体 戻り値一覧 第 5 章リファレンス ( 汎用 DIO 部 ) 関数一覧 関数個別説明 戻り値一覧 第 6 章サンプルプログラム Send Receive Event SendMessage ReceiveMessage InPoint OutPoint 第 7 章ユーティリティ 通信ユーティリティプログラム 自己診断プログラム RS-485 終端設定ユーティリティプログラム CardBus ID 設定ユーティリティ DI 入力ユーティリティ DO 出力ユーティリティ 第 8 章重要な情報 164 2

3 第 1 章はじめに 1.1 概要 GPC-4116 は Windows 上のアプリケーションから 弊社 HDLC 通信製品を制御する為のソフトウェアです 自由な HDLC フォーマットで使用できるため 上位のプロトコルを自作することにより HDLC フォーマットで動作する様々な機器と接続することが可能です 本ドキュメントは Windows 上で GPC-4116 を使用するための情報を掲載しています 1.2 特長 自由なフォーマットで HDLC フレームの送受信が行えます FCS 付加 チェックを自動的に行います 一つのフレームで最大 バイトのデータ送受信を行えます インタフェースモジュール上に送信バッファを用意してあるため 連続してデータ送信が行えます インタフェースモジュール上に受信バッファを用意してあるため アプリケーションプログラムが他の処理を実行していても データ取りこぼしが発生しません インタフェースモジュールからのイベント発生時にて ユ - ザアプリケーションにイベントを通知できます インタフェースモジュールからのイベント発生時にて ユーザが登録した処理 ( コールバックルーチン ) を実行することができます インタフェースモジュールからのイベント発生時にて 指定されたウィンドウへメッセージを送ることができます HDLC モジュール製品に対応しています 下記のような特長があります CPU を搭載しており 通信の際のパソコンや CPU ボード負荷を軽減することが出来ます 最大 8 チャンネルの通信を制御することが可能です PCI/CTP/CPZ Q,PCI/CTP/CPZ Q のみ最大 8 チャンネル可能です 最大 48 点のデジタル入出力を制御することが可能です PCI/CTP/CPZ Q,PCI/CTP/CPZ Q のみ最大 48 点可能です 3

4 第 2 章製品仕様 2.1 基本仕様 最大デバイス数最大転送速度送信バッファサイズ受信バッファサイズ 208 デバイスただし 以下のグループごとに最大 16 枚まで CSI , CSI , CSI , PCI-4116, PCI-4171, PCI-4171S, LPC , PEX , CBI-4171, CBI-4171A, CBI-4171B, CBI , CBI WA, CBI WB, PCI-4171FM, CSI FM, CSI FM, CSI FM, LPC FM, PCI FM CPZ , CSI , PCI , CTP-4158, PCI-4158, LPC , PEX , PCI P, CTP P, CPZ P, PEX-H467120, PEX-H467120P CSI , CSI , CSI , PCI-4159, CTP-4159, PCI-4172, PCI-4172FM, CTP-4172, CPZ-4172, LPC , PEX , PCI P, CTP P, CPZ P, CPZ-4172FM, PEX FM, PCI FM, PEX-H467102, PEX-H467102P CPZ Q, CPZ Q, CPZ Q, CPZ Q PCI Q, PCI Q, PCI Q, PCI Q CTP Q, CTP Q, CTP Q, CTP Q 下記デバイスのみ 1 枚まで PCI-4172FMU PCI-4172, PCI-4172FM, PCI-4172FMU, CBI-4171, 4Mbps 1 CBI-4171A, CBI-4171B, CBI , CBI WA, CBI WB, CTP/CPZ-4172, PCI-4171S, CSI , CSI , CSI , CSI , CSI , CSI , LPC , LPC ,PEX , PEX , PCI/CTP/CPZ P PCI/CTP/CPZ Q, PCI/CTP/CPZ Q CPZ-4172FM, PEX FM, PCI-4171FM, CSI FM, CSI FM, CSI FM, LPC FM, PCI FM, PCI FM, PEX-H467102, PEX-H467102P PCI/CTP Mbps PCI/CPZ/CSI , PCI/CTP-4158, LPC , 1Mbps PEX , PCI/CTP/CPZ Q, PCI/CTP/CPZ Q PCI/CTP/CPZ P, PEX-H467120, PEX-H467120P PCI-4116 RS-232C 1Mbps RS-485 2Mbps PCI-4171 RS-232C 1Mbps RS-485 4Mbps 1 2kB 128 本 ( 合計 256kB) 4kB 128 本 ( 合計 512kB) 4

5 イベント機能各イベントが発生した場合に アプリケーションにイベント通知することができます フレーム送信完了は 各フレームごとにイベントを設定することができます 1. HDLC フレーム受信時 2. 制御信号の変化時 3. HDLC フレームの送信完了時 4. アイドル検出時 ( ) 5. エラーフレーム受信時 ( ) 6. オーバーフローエラー発生時 ( 1) 7. オーバーランエラー発生時 ( 1) 8. HDLC モジュール異常発生時 ( 2) 1 PCI-4116, PCI/CTP-4158, PCI/CTP-4159 では使用できません また 対応型式でも製品のバージョンにより使用できません 2 HDLC モジュール製品のみ使用できます イベントマスク機能イベント要因ごとにマスク設定 / マスク解除することができます 1 FM0 FM1 符号化フォーマットの場合 内部クロックを使用する場合は 2Mbps まで 5

6 2.2 製品構成 製品構成 ファイル名 説明 弊社管理用ファイル GPC4116.VER 弊社ソフト管理用ファイル 最新情報ドキュメント README.HTM 最新ドキュメント掲載ファイル インストールプログラム SETUP.EXE インストール用ファイル 自己診断プログラム DIAGHDLC.EXE 自己診断プログラム HDLCUTIL.EXE 通信ユーティリティ サンプルプログラム Visual C#.NET Send データ送信サンプルプログラム Receive データ受信サンプルプログラム InPoint 汎用 DIO 入力サンプルプログラム OutPoint 汎用 DIO 出力サンプルプログラム Visual C++ Send データ送信サンプルプログラム Receive データ受信サンプルプログラム Event イベントサンプルプログラム SendMessage データ送信サンプルプログラム ReceiveMessage データ受信サンプルプログラム InPoint 汎用 DIO 入力サンプルプログラム InputByte 汎用 DIO Byte 入力サンプルプログラム OutPoint 汎用 DIO 出力サンプルプログラム OutputByte 汎用 DIO Byte 出力サンプルプログラム Visual Basic.NET Send データ送信サンプルプログラム Receive データ受信サンプルプログラム InPoint 汎用 DIO 入力サンプルプログラム OutPoint 汎用 DIO 出力サンプルプログラム Visual Basic Send データ送信サンプルプログラム Receive データ受信サンプルプログラム Event イベントサンプルプログラム SendMessage データ送信サンプルプログラム ReceiveMessage データ受信サンプルプログラム InPoint 汎用 DIO 入力サンプルプログラム InputByte 汎用 DIO Byte 入力サンプルプログラム OutPoint 汎用 DIO 出力サンプルプログラム OutputByte 汎用 DIO Byte 出力サンプルプログラム Delphi Send データ送信サンプルプログラム Receive データ受信サンプルプログラム Event イベントサンプルプログラム SendMessage データ送信サンプルプログラム ReceiveMessage データ受信サンプルプログラム InPoint 汎用 DIO 入力サンプルプログラム OutPoint 汎用 DIO 出力サンプルプログラム DLL FBIHDLC.DLL ダイナミックリンクライブラリファイル IFSDIO.DLL AMTLAN.DLL FBIHDLC.LIB インポートライブラリファイル IFSDIO.LIB MSVCRT.DLL C ランタイム共有 DLL 6

7 デバイスドライバ ヘッダファイル CP4116.SYS CP4170.SYS CP4230Q.SYS CP4231Q.SYS GPC41XX.INF GPC4230X.INF GPC4xxx.SLD CP4116.SYS GPC41XX.INF CP4116.VXD CP4170.VXD GPC41XX.INF FBIHDLC.H IFSDIO.H FBIHDLC.BAS IFSDIO.BAS FBIHDLC.PAS IFSDIO.PAS Windows 2000 以降の OS 用ドライバ GPC-4116 Help for Windows Windows 2000 以降の OS 用ドライバインストールファイル Windows Embedded 用ドライバ SLD ファイル Windows NT 4.0 用ドライバ Windows NT 4.0 用ドライバインストールファイル Windows Me/98/95 用ドライバ Windows Me/98/95 用ドライバインストールファイル Visual C++ 用ヘッダファイル Visual Basic 用ヘッダファイル Delphi 用ヘッダファイル ヘルプ HELP.PDF ヘルプ (PDF 形式 ) Visual C#.NET,Visual Basic.NET 用サンプルプログラムは それぞれ Viausl C#.NET 2003,Visual Basic.NET 2003 を使用して作成しています 7

8 第 3 章導入方法 3.1 インストール手順 README.HTM のインストール方法を参照してください 3.2 実行手順 (HDLC 通信部 ) 初期化インタフェースモジュール初期化情報構造体の各メンバに適切な値を設定し HdlcOpen 関数にて HDLC インタフェースモジュールを初期化します 第 1 引数には 型式 チャンネル RSW1 設定値により一意に定まるデバイス名を指定します デバイス名は RSW1 で決定されます 新たにインタフェースモジュールを追加しても RSW1 の設定を変更しない限り変わることはありません 同一デバイス名となるインタフェースモジュールを使用することはできません RSW1 の値を設定し それぞれが一意なデバイス名となるように設定してください タフコン / マザコン Classembly Devices に搭載されている PCI FM の RSW1 の設定値は 0 で固定となっています デバイス名としては FBIHDLC49 FBIHDLC50 となります インタフェースモジュールを拡張される場合は デバイス名が重複しないように注意してください 型式 チャンネル RSW1 設定とデバイス名の対応は以下のとおりになります RSW1 型式チャンネル設定値 PCI-4116, PCI-4171, PCI-4171S, CBI-4171, CBI-4171A, CBI-4171B, CBI , CBI WA, CBI WB, CSI , CSI , CSI , LPC , PEX ,LPC FM, PCI-4171FM, PCI FM PCI-4158, PCI , CTP-4158, CPZ , CSI , LPC , PEX PCI P, CTP P, CPZ P PCI-4159, PCI-4172, PCI-4172FM, CTP-4159, CTP-4172, CPZ-4172, CPZ-4172FM, CSI , CSI , CSI , CSI FM, CSI FM, CSI FM, LPC , PEX , PEX FM, PCI P, CTP P, CPZ P, PCI FM, PEX-H467102, PEX-H467102P PCI-4172FMU 0 デバイス名 0 1 FBIHDLC1 1 1 FBIHDLC2 F 1 FBIHDLC16 1 FBIHDLC FBIHDLC18 1 FBIHDLC FBIHDLC20 1 FBIHDLC47 F 2 FBIHDLC48 1 FBIHDLC FBIHDLC50 1 FBIHDLC FBIHDLC52 1 FBIHDLC79 F 2 FBIHDLC80 1 FBIHDLC49 2 FBIHDLC50 8

9 CPZ Q, CPZ Q, CPZ Q, CPZ Q, PCI Q, PCI Q, PCI Q, PCI Q CTP Q, CTP Q, CTP Q, CTP Q, CPZ Q, CPZ Q, PCI Q,PCI Q, CTP Q, CTP Q には チャンネル 5~8 は存在しません 1 FBIHDLC81 2 FBIHDLC FBIHDLC88 1 FBIHDLC89 2 FBIHDLC FBIHDLC96 1 FBIHDLC201 2 FBIHDLC202 F 8 FBIHDLC208 Windows NT 4.0 以外の OS では デバイスマネージャに FbiHdlc が追加され認識された通信ポートが一覧表示されます 一覧の製品型式の横にインタフェースモジュール上のロータリスイッチの値とデバイス名が表示されます 診断プログラム (DIAGHDLC.EXE) でも確認できます Windows NT 4.0 では 診断プログラム (DIAGHDLC.EXE) にて割り当てられたデバイス名をご確認ください 初期化が正常終了すると 戻り値としてデバイスハンドルが返されます 複数のポートを使用する場合は 各ポートに対して HdlcOpen 関数をコールし 初期化します 初期化したポートはアプリケーション終了の際には必ず終了処理 (HdlcClose 関数 ) をコールしてください 初期化パラメータについて補足 半二重ディレイ時間について (PCI-4116, PCI/CTP-4158, PCI/CTP-4159 は除く ) 半二重ディレイ時間 ( インタフェースモジュール初期化情報構造体の usendtiming, uclosetiming メンバ ) は 1 ビット時間の整数倍 (1~255) にしか設定できません そのため 所望の時間と異なるディレイ時間が設定される場合があります 例 ) ビットレート 1Mbps の場合 1 ビット時間 = 1 / = 1 us ( 半二重ディレイ時間 ) = 1 us (1 ~ 255) 実際に設定されたディレイ時間は HdlcOpen 関数呼出し後 インタフェースモジュール初期化情報構造体の usendtiming もしくは uclosetiming を参照することで確認できます アドレスの扱いについて uaddressmode メンバにより受信フレームのフィルタリングを行うことができます uaddressmode メンバにより 受信フレームのどの部分をアドレスとして処理するかを指定し uaddress メンバにより 扱うアドレスの個数 および扱うアドレスを指定します (uaddress[0] に扱うアドレスの個数を指定し uaddress[1] から扱うアドレスを指定します ) 設定例 ) アドレス 01h アドレス 02h アドレス FFh を受信する場合 HDLCNPORTINITDATA PortInit; PortInit.uAddressMode = HDLC_ADDRESS_AUTO1; PortInit.uAddress[0] = 3; /* 扱うアドレスの個数は 3 */ PortInit.uAddress[1] = 0x01; /* アドレス 01h アドレス 02h アドレス FFh を受信する */ PortInit.uAddress[2] = 0x02; 9

10 PortInit.uAddress[3] = 0xFF; Dim PortInit As HDLCNPORTINITDATA PortInit.uAddressMode = HDLC_ADDRESS_AUTO1 PortInit.uAddress(0) = 3 扱うアドレスの個数は 3 PortInit.uAddress(1) = &H01 アドレス 01h アドレス 02h アドレス FFh を受信する PortInit.uAddress(2) = &H02 PortInit.uAddress(3) = &HFF var PortInit: HDLCNPORTINITDATA; PortInit.uAddressMode := HDLC_ADDRESS_AUTO1; PortInit.uAddress[0] := 3; // 扱うアドレスの個数は 3 PortInit.uAddress[1] := $01; // アドレス 01h アドレス 02h アドレス FFh を受信する PortInit.uAddress[2] := $02; PortInit.uAddress[3] := $FF; 構造体に値を設定した後に HdlcOpen 関数を呼び HDLC インタフェースモジュールの初期化を行います 初期化に成功したときデバイスハンドルが返されます 指定のデバイスが見つからない または初期化パラメータに誤りがあるとき 関数戻り値として INVALID_HANDLE_VALUE が返されます 受信について受信クロックを DPLL に設定している場合 同期ずれで正常に受信できない場合があります その場合 送信データのフレームの先頭に 2 つ以上フラグを挿入するようにしてください 送信 HDLC フレームを送信する際には HdlcSendFrame 関数を使用します HdlcSendFrame 関数では FCS 自動付加以外のデータ編集は行われず アプリケーションプログラムから渡されたデータ以外の送信は一切行いません アプリケーションはフレーム送信の完了まで待たず 関数から即制御が戻ります フレーム送信の完了は HdlcGetStatus 関数や イベントで確認することが出来ます HdlcGetStatus 関数でフレーム送信状況を確認する場合 HdlcGetStatus 関数をコールすることにより ポートステータス構造体 (HDLCNPORTSTATUS 構造体 ) に 現在の送受信状況が示されます ポートステータス構造体の usendframe メンバが 0 の場合 または usendfreeblock メンバが 128 の場合は 全てのフレームを送信したことになります 下記のようにすれば 全てのフレーム送信が完了するまで待つことができます 10

11 HDLCNPORTSTATUS PortStatus; LONG Ret; /* フレームを送信します */ Ret = HdlcSendFrame(hDevice, , 10, 1, NULL); do { /* 送受信ステータスを取得します */ Ret = HdlcGetStatus(hDevice, &PortStatus); } while(portstatus.usendframe); Dim PortStatus As HDLCNPORTSTATUS Dim Ret As LONG フレームを送信します Ret = HdlcSendFrameString(hDevice, , 10, 1, ByVal 0) do 送受信ステータスを取得します Ret = HdlcGetStatus(hDevice, PortStatus) Loop While PortStatus.uSendFrame > 0 var PortStatus:HDLCNPORTSTATUS; Ret: ULONG; Buffer: array[0..16] of byte; // フレームを送信します StrCopy(@Buffer[0], ); Ret := 10, 1, nil); repeat // 送受信ステータスを取得します Ret := HdlcGetStatus(hDevice, PortStatus); until (PortStatus.uSendFrame = 0); 11

12 イベントでフレーム送信完了を検出する場合 HdlcSendFrame 関数呼び出し時 OVERLAPPED 構造体を指定することにより 送信完了時イベントがシグナル状態になります long Ret; DWORD dwret; OVERLAPPED soverlapped; ZeroMemory(&sOverlapped, sizeof(overlapped)); soverlapped.hevent = CreateEvent(NULL, TRUE, FALSE, NULL); /* フレームを送信します */ Ret = HdlcSendFrame(hDevice, , 10, 1, &soverlapped); if(ret == FBIHDLC_ERROR_IO_PENDING) { dwret = WaitForSingleObject(sOverlapped.hEvent, 10000); if(dwret == WAIT_TIMEOUT) { printf( 送信完了のイベント待ちがタイムアウトしました ); } else if(dwret == WAIT_OBJECT_0) { printf( 送信完了イベントが発生しました ); } } CloseHandle(sOverlapped.hEvent); Dim Ret As Long Dim soverlapped As OVERLAPPED soverlapped.internal = 0 soverlapped.internalhigh = 0 soverlapped.offset = 0 soverlapped.offsethigh = 0 soverlapped.hevent = CreateEvent(0, TRUE, FALSE, 0) フレームを送信します Ret = HdlcSendFrameString(hDevice, , 10, 1, soverlapped) If Ret = FBIHDLC_ERROR_IO_PENDING Then Ret = WaitForSingleObject(sOverlapped.hEvent, 10000) If Ret = WAIT_TIMEOUT Then MsgBox 送信完了のイベント待ちがタイムアウトしました ElseIf dwret = WAIT_OBJECT_0 Then MsgBox 送信完了イベントが発生しました End If End If CloseHandle soverlapped.hevent 12

13 var Ret: ULONG; soverlapped: Toverlapped; Buffer: array[0..16] of byte; SizeOf(Toverlapped)); soverlapped.hevent := CreateEvent(nil, TRUE, FALSE, nil); // フレームを送信します ); Ret := HdlcSendFrame(hDevice, , 10, if Ret = FBIHDLC_ERROR_IO_PENDING then begin Ret := WaitForSingleObject(sOverlapped.hEvent, 10000); if Ret = WAIT_TIMEOUT then MessageDlg( 送信完了のイベント待ちがタイムアウトしました, mtinformation, [mbok], 0) else if Ret = WAIT_OBJECT_0 then MessageDlg( 送信完了イベントが発生しました, mtinformation, [mbok], 0); end; CloseHandle(sOverlapped.hEvent); フラグ数指定送信前に HdlcSetFlag 関数を実行することで フレームに任意の数だけリーディングフラグ / トレーリングフラグを付加して送信することができます 初期設定ではリーディングフラグ / トレーリングフラグは付加しません (0 個 ) リーディングフラグ n 個 n:0~255 フラグデータ FCS フラグ トレーリングフラグ n 個 フラグ数の設定は送信バッファが空の状態で行ってください また フレーム間にはマーク送信を指定 (HDLCNPORTINTIDATA 構造体の ulinemode に HDLC_TFIL_MARK を OR) してください フラグ送信を指定した場合 フレーム間にフラグが挿入されるため 必ずしも指定のフラグ数とはなりません 設定変更後 リーディングフラグ / トレーリングフラグを付加しない状態に戻すには 再度 HdlcSetFlag 関数でフラグ数を 0 に設定します フラグ数指定機能は FM 符号化対応製品でのみ使用できます PCI-4172FM, PCI-4172FMU, CPZ-4172FM, PEX FM, PCI-4171FM, CSI FM, CSI FM, CSI FM, LPC FM, PCI FM, PCI FM 13

14 3.2.3 受信受信バッファ内に格納されているフレーム数を取得するには HdlcGetFrameCount 関数を使用し 受信バッファの先頭に格納されているフレームの長さを知るには HdlcGetFrameLength 関数を使用します 受信できる 1 フレームの最大サイズは バイトですので HdlcGetFrameLength 関数の第 2 引数に格納される値は 0~16384 となります ULONG ulframecount; ULONG ulframelength; LONG Ret; /* 受信フレーム数を取得します */ Ret = HdlcGetFrameCount(hDevice, &ulframecount); /* 受信フレーム長を取得します */ Ret = HdlcGetFrameLength(hDevice, &ulframelength); Dim ulframecount As Long Dim ulframelength As Long Dim Ret As Long 受信フレーム数を取得します Ret = HdlcGetFrameCount(hDevice, ulframecount) 受信フレーム長を取得します Ret = HdlcGetFrameLength(hDevice, ulframelength) var ulframecount: Integer; ulframelength: Integer; Ret: ULONG; // 受信フレーム数を取得します Ret := HdlcGetFrameCount(hDevice, ulframecount); // 受信フレーム長を取得します Ret := HdlcGetFrameLength(hDevice, ulframelength); HdlcReceiveFrame 関数を使用して受信バッファのデータを取り出します 受信データを格納する変数は HdlcGetFrameLength 関数で得られたサイズ以上のバッファを用意してください 取り出されたデータは受信バッファから削除されます FCS の自動検査によるデータの編集およびエラー等によるデータ削除を除き 受信された全てのフレームが受信バッファへ保持されます 14

15 エラーフレームの受信ポート初期化情報構造体 (HDLCNPORTINITDATA 構造体 ) の ulinemode で HDLC_ACCEPT_ERRORFRAME を指定することで エラーフレームを受信することができます (PCI-4116, PCI/CTP-4158, PCI/CTP-4159 はエラーフレームは全て破棄されます ) エラーフレームは以下のフレームが該当します エラーフレーム 内容 FCS エラーフレーム FCS が不正なフレーム ショートフレーム 1 バイトのフレーム ( フラグ,FCS 除く ) ロングフレーム バイト以上のフレーム ( フラグ,FCS 除く ) アボートフレーム 7 ビット以上 1 が連続したフレーム アドレス不一致フレーム 指定したアドレスが検出されなかったフレーム HdlcReceiveFrame 関数で取り出したフレームがエラーフレームの場合 戻り値として以下の値が返 されます エラーフレーム 戻り値 FCS エラーフレーム FBIHDLC_ERROR_FCSERRORFRAME ショートフレーム FBIHDLC_ERROR_SHORTFRAME ロングフレーム FBIHDLC_ERROR_LONGFRAME アボートフレーム FBIHDLC_ERROR_ABORTFRAME アドレス不一致フレーム FBIHDLC_ERROR_NOADDRESSFRAME BYTE Buffer[16384]; ULONG ulframecount, ulframelength; LONG Ret; /* 受信フレーム数を取得します */ Ret = HdlcGetFrameCount(hDevice, &ulframecount); if(ulframecount > 0) { /* 受信フレームを取り出します */ Ret = HdlcReceiveFrame(hDevice, Buffer, &ulframelength); switch(ret) { case FBIHDLC_ERROR_FCSERRORFRAME: printf( FCS error frame:\n ); break; case FBIHDLC_ERROR_SHORTFRAME: printf( short frame:\n ); break; case FBIHDLC_ERROR_LONGFRAME: printf( long frame:\n ); break; case FBIHDLC_ERROR_ABORTFRAME: printf( abort frame:\n ); break; case FBIHDLC_ERROR_NOADDRESSFRAME: printf( no address frame:\n ); break; case FBIHDLC_ERROR_SUCCESS: printf( normal frame:\n ); break; } } 15

16 Dim Buffer(16384) As Byte Dim ulframecount, ulframelength As Long Dim Ret As Long 受信フレーム数を取得し 受信フレームを取り出します Ret = HdlcGetFrameCount(hDevice, ulframecount) If ulframecount > 0 Then Ret = HdlcReceiveFrame(hDevice, Buffer(0), ulframelength) Select Case Ret Case FBIHDLC_ERROR_FCSERRORFRAME MsgBox FCS error frame Case FBIHDLC_ERROR_SHORTFRAME MsgBox short frame Case FBIHDLC_ERROR_LONGFRAME MsgBox long frame Case FBIHDLC_ERROR_ABORTFRAME MsgBox abort frame Case FBIHDLC_ERROR_NOADDRESSFRAME MsgBox no address frame Case FBIHDLC_ERROR_SUCCESS MsgBox normal frame End Select End If var Buffer: array[ ] of Byte; ulframecount, ulframelength: Integer; Ret: ULONG; // 受信フレーム数を取得し 受信フレームを取り出します Ret := HdlcGetFrameCount(hDevice, ulframecount); if ulframecount > 0 then begin Ret := ulframelength); case Ret of FBIHDLC_ERROR_FCSERRORFRAME: MessageDlg( FCS error frame, mtinformation, [mbok], 0); FBIHDLC_ERROR_SHORTFRAME: MessageDlg( short frame, mtinformation, [mbok], 0); FBIHDLC_ERROR_LONGFRAME: MessageDlg( long frame, mtinformation, [mbok], 0); FBIHDLC_ERROR_ABORTFRAME: MessageDlg( abort frame, mtinformation, [mbok], 0); FBIHDLC_ERROR_NOADDRESSFRAME: MessageDlg( no address frame, mtinformation, [mbok], 0); FBIHDLC_ERROR_SUCCESS: MessageDlg( normal frame, mtinformation, [mbok], 0); end; end; 16

17 3.2.4 制御信号出力状態の設定と取得 HdlcSetControlLine 関数を使用して制御信号の ON/OFF HdlcGetControlLine 関数を使用して制御信号の入力状態を取得することができます 0 が OFF 1 が ON となっています RS-232C での制御信号操作の例を示します インクルードファイル fbihdlc.h で各信号の値が定義されているので それを使用すると便利です 識別子 値 内容 HDLC_SSIG_ER h ER 信号 HDLC_SSIG_RS h RS 信号 /C 信号 HDLC_SSIG_DR h DR 信号 HDLC_SSIG_CD h CD 信号 HDLC_SSIG_CS h CS 信号 /I 信号 HDLC_SSIG_CI h CI 信号 ULONG ulcontrolline, uldeltaline; LONG Ret; /* RS-232C の場合 RS 信号と ER 信号を ON にします */ Ret = HdlcSetControlLine(hDevice, HDLC_SSIG_RS HDLC_SSIG_ER); /* 制御信号情報を取得します */ Ret = HdlcGetControlLine(hDevice, &ulcontrolline, &uldeltaline); Dim ulcontrolline As Long Dim uldeltaline As Long Dim Ret As Long RS-232C の場合 RS 信号と ER 信号を ON にします Ret = HdlcSetControlLine(hDevice, HDLC_SSIG_RS Or HDLC_SSIG_ER) 制御信号情報を取得します Ret = HdlcGetControlLine(hDevice, ulcontrolline, uldeltaline) var ulcontrolline: Integer; uldeltaline: Integer; Ret: ULONG; // RS-232C の場合 RS 信号と ER 信号を ON にします Ret := HdlcSetControlLine(hDevice, HDLC_SSIG_RS or HDLC_SSIG_ER); // 制御信号情報を取得します Ret := HdlcGetControlLine(hDevice, ulcontrolline, uldeltaline); 17

18 3.2.5 半二重制御半二重の設定は ポート初期化情報構造体 (HDLCNPORTINITDATA 構造体 ) の ulinemode メンバにより行います 半二重通信時は半二重ディレイ時間 ( インタフェースモジュール初期化情報構造体の usendtiming, uclosetiming メンバ ) を設定する必要があります RS-232C RS-485 送信前切り替え時間 (usendtiming) RS 信号を ON にしてからフレーム送信開始までの時間 ラインを送信に切り替えてからフレーム送信開始までの時間 ( ) 送信後切り替え時間 (uclosetiming) フレーム送信終了後 RS 信号を OFF にするまでの時間 フレーム送信終了後ラインを受信に切り替えるまでの時間 ( ) HDLC_LINE_HALF2 の場合はラインの切り替えと同時に C 信号の制御も行います RS-232C の半二重制御 ulinemode メンバに HDLC_LINE_HALF2 を指定します フレーム送信時に RS 信号を ON にし フレーム送信後に RS 信号を OFF にします 但し PCI-4171 ではリビジョン ID が 3 以上 PCI CPZ ではリビジョン ID が 2 以上の製品で RS 信号が自動的に制御されます リビジョン ID は HdlcCommonGetPciDeviceInfo 関数で取得できます RS-485 の半二重制御 (PCI-4116, PCI/CTP-4158, PCI/CTP-4159) RS-485 では 2 種類の半二重処理があります それぞれ ulinemode メンバに HDLC_LINE_HALF HDLC_LINE_HALF2 を指定します HDLC_LINE_HALF を指定した場合 アイドル検出と送受信ラインの切り替えを自動的に行います ただし C 信号の制御は行いません 送信クロックラインは utxcmode メンバにて設定します HDLC_LINE_HALF2 を指定した場合も アイドル検出と送受信ラインの切り替えを自動的に行います また フレーム送信前に C 信号を ON にし フレーム送信後に C 信号を OFF にします 送信クロックラインは utxcmode メンバにて設定します 設定例 ) 半二重通信 (C 信号の制御あり ) に設定 HDLCNPORTINITDATA PortInit; PortInit.uLineMode = HDLC_LINE_HALF2; PortInit.uTxcMode = HDLC_STOUT_NONE; /* 送信クロック : 出力しない */ PortInit.uSendTiming = 2; /* 送信前切り替え時間 :20ms */ PortInit.uCloseTiming = 10; /* 送信後切り替え時間 :100ms */ Dim PortInit As HDLCNPORTINITDATA PortInit.uLineMode = HDLC_LINE_HALF2 PortInit.uTxcMode = HDLC_STOUT_NONE 送信クロック : 出力しない PortInit.uSendTiming = 2 送信前切り替え時間 :20ms PortInit.uCloseTiming = 10 送信後切り替え時間 :100ms 18

19 var PortInit: HDLCNPORTINITDATA; PortInit.uLineMode := HDLC_LINE_HALF2; PortInit.uTxcMode := HDLC_STOUT_NONE; // 送信クロック : 出力しない PortInit.uSendTiming := 2; // 送信前切り替え時間 :20ms PortInit.uCloseTiming := 10; // 送信後切り替え時間 :100ms 半二重通信時の注意点として 受信クロックを外部で 半二重通信する時 ( 相手の送信クロックを使い受信する時 ) には 常に受信クロックが供給されるよう システムを設計してください 受信クロックが停止すると アイドル検出が出来ないため 送信が行えなくなります 受信クロックを DPLL にしたときには問題ありません RS-485 の半二重制御 (PCI-4116, PCI/CTP-4158, PCI/CTP-4159 以外 ) RS-485 では 2 種類の半二重処理があります それぞれ ulinemode メンバに HDLC_LINE_HALF HDLC_LINE_HALF2 を指定します HDLC_LINE_HALF を指定した場合 送受信ラインの切り替えを自動的に行います ただし C 信号の制御は行いません 送信クロックラインは utxcmode メンバにて設定します HDLC_LINE_HALF2 を指定した場合も 送受信ラインの切り替えを自動的に行います また フレーム送信前に C 信号を ON にし フレーム送信後に C 信号を OFF にします 送信クロックラインは utxcmode メンバにて設定します 設定例 ) 半二重通信 (C 信号の制御あり ) に設定 HDLCNPORTINITDATA PortInit; PortInit.uLineMode = HDLC_LINE_HALF2; PortInit.uTxcMode = HDLC_STOUT_NONE; /* 送信クロック : 出力しない */ PortInit.uSendTiming = 100 HDLC_TIME_MICRO_SEC; /* 送信前切り替え時間 :100us */ PortInit.uCloseTiming = 200 HDLC_TIME_MICRO_SEC; /* 送信後切り替え時間 :200us */ Dim PortInit As HDLCNPORTINITDATA PortInit.uLineMode = HDLC_LINE_HALF2 PortInit.uTxcMode = HDLC_STOUT_NONE 送信クロック : 出力しない PortInit.uSendTiming = 100 Or HDLC_TIME_MICRO_SEC 送信前切り替え時間 :100us PortInit.uCloseTiming = 200 Or HDLC_TIME_MICRO_SEC 送信後切り替え時間 :200us var PortInit: HDLCNPORTINITDATA; PortInit.uLineMode := HDLC_LINE_HALF2; PortInit.uTxcMode := HDLC_STOUT_NONE; // 送信クロック : 出力しない PortInit.uSendTiming := 100 or HDLC_TIME_MICRO_SEC; // 送信前切り替え時間 :100us PortInit.uCloseTiming := 200 or HDLC_TIME_MICRO_SEC; // 送信後切り替え時間 :200us 19

20 3.2.6 イベント処理以下のイベント要因が発生したとき アプリケーションに通知することができます HDLC フレームを受信したとき 制御信号が変化したとき HDLC フレームが送信完了したとき アイドルを検出したとき ( 1) エラーフレームを受信したとき ( 1) オーバーフロー オーバーランエラーが発生したとき ( 1) HDLC モジュールに異常が発生したとき ( 2) 1 PCI-4116, PCI/CTP-4158, PCI/CTP-4159 は使用できません 2 HDLC モジュール製品でのみ使用できます 要因により使用できるイベント処理が異なります シグナルイベント コールバック メッセージ フレーム受信 制御信号変化 フレーム送信完了 アイドル検出 エラーフレーム受信 オーバーフロー オーバーラン HDLC モジュール異常 シグナルイベント (HdlcEventRequestPending 関数を使用 ) での処理シグナルイベントを使用する場合 以下のように処理を行います ポートオープン (HdlcOpen) 割り込みマスクの設定 (HdlcSetEventMask) イベント待ちの開始 (HdlcEventRequestPending) 割り込みマスクの解除 (HdlcSetEventMask) ポートクローズ (HdlcClose) 20

21 処理例 ) フレーム受信イベントを待ちます int main(void) { HANDLE hdevice; LONG Ret; DWORD EventBuffer, dwret; OVERLAPPED soverlapped; HDLCNPORTINITDATA PortInit; /* ポート初期化構造体メンバへの代入処理省略 */ hdevice = HdlcOpen( FBIHDLC1, &PortInit); /* 割り込みマスク設定 */ Ret = HdlcSetEventMask(hDevice, HDLC_RECEIVED_FRAME, 0); } /* イベント待ち開始 */ ZeroMemory(&sOverlapped, sizeof(overlapped)); soverlapped.hevent = CreateEvent(NULL, TRUE, FALSE, NULL); Ret = HdlcEventRequestPending(hDevice, HDLC_RECEIVED_FRAME, &EventBuffer, &soverlapped); if(ret == FBIHDLC_ERROR_IO_PENDING) { dwret = WaitForSingleObject(sOverlapped.hEvent, 10000); if(dwret == WAIT_OBJECT_0) { /* フレーム受信処理 */ } } /* 割り込みマスク解除 */ Ret = HdlcSetEventMask(hDevice, 0, 0); Ret = HdlcClose(hDevice); CloseHandle(sOverlapped.hEvent); 21

22 Dim hdevice As Long Dim Ret As Long Dim EventBuffer As Long Dim soverlapped As OVERLAPPED Dim PortInit As HDLCNPORTINITDATA ポート初期化構造体メンバへの代入処理省略 hdevice = HdlcOpen( FBIHDLC1, PortInit) 割り込みマスク設定 Ret = HdlcSetEventMask(hDevice, HDLC_RECEIVED_FRAME, 0) イベント待ち開始 soverlapped.internal = 0 soverlapped.internalhigh = 0 soverlapped.offset = 0 soverlapped.offsethigh = 0 soverlapped.hevent = CreateEvent(0, TRUE, FALSE, 0) Ret = HdlcEventRequestPending(hDevice, HDLC_RECEIVED_FRAME, EventBuffer, soverlapped) If Ret = FBIHDLC_ERROR_IO_PENDING Then Ret = WaitForSingleObject(sOverlapped.hEvent, 10000) If Ret = WAIT_OBJECT_0 Then フレーム受信処理 End If End If 割り込みマスク解除 Ret = HdlcSetEventMask(hDevice, 0, 0) Ret = HdlcClose(hDevice) CloseHandle soverlapped.hevent 22

23 var hdevice: Thandle; Ret: ULONG; EventBuffer: Integer; PortInit: HDLCNPORTINITDATA; soverlapped: Toverlapped; // ポート初期化構造体メンバへの代入処理省略 hdevice := HdlcOpen( FBIHDLC1, PortInit); // 割り込みマスク設定 Ret := HdlcSetEventMask(hDevice, HDLC_RECEIVED_FRAME, 0); // イベント待ち開始 SizeOf(Toverlapped)); soverlapped.hevent := CreateEvent(nil, TRUE, FALSE, nil); Ret := HdlcEventRequestPending(hDevice, HDLC_RECEIVED_FRAME, if Ret = FBIHDLC_ERROR_IO_PENDING then begin Ret := WaitForSingleObject(sOverlapped.hEvent, 10000); if Ret = WAIT_OBJECT_0 then begin // フレーム受信処理 end; end; // 割り込みマスク解除 Ret := HdlcSetEventMask(hDevice, 0, 0); Ret := HdlcClose(hDevice); CloseHandle(sOverlapped.hEvent); 23

24 Window メッセージでの処理 Window メッセージを使用する場合 以下のように処理を行います ポートオープン (HdlcOpen) 割り込みマスクの設定 (HdlcSetEventMask) イベント待ち ( イベントが発生するとメッセージハンドラが呼び出されます ) 割り込みマスクの解除 (HdlcSetEventMask) ポートクローズ (HdlcClose) 処理例 ) フレーム受信イベントを待ちます (MFC での処理例 ) // メッセージハンドラの定義 BEGIN_MESSAGE_MAP(ChdlcPort, ClistView) ON_MESSAGE(WM_USER, OnMessage) END_MESSAGE_MAP() LRESULT ChdlcPort::OnMessage(WPARAM wparam, LPARAM lparam) { if(wparam == HDLC_RECEIVED_FRAME) { /* フレーム受信処理 */ } return 0; } void ChdlcPort::PortOpen(void) { HDLCNPORTINITDATA PortInit; LONG Ret; /* ポート初期化構造体メンバへの代入処理一部省略 */ PortInit.hWindowHandle = this->m_hwnd; /* ウィンドウハンドル */ PortInit.uWindowMessage = WM_USER; /* ウィンドウメッセージ */ hdevice = HdlcOpen( FBIHDLC1, &PortInit); } /* 割り込みマスク設定 */ Ret = HdlcSetEventMask(hDevice, HDLC_RECEIVED_FRAME, 0); void ChdlcPort::PortClose(void) { LONG Ret; /* 割り込みマスク解除 */ Ret = HdlcSetEventMask(hDevice, 0, 0); Ret = HdlcClose(hDevice); } 24

25 Win32 API declare Declare Function CallWindowProc Lib user32 Alias CallWindowProcA (ByVal lpprevwndfunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wparam As Long, ByVal lparam As Long) As Long Declare Function SetWindowLong Lib user32 Alias SetWindowLongA (ByVal hwnd As Long, ByVal nindex As Long, ByVal dwnewlong As Long) As Long constant declare Public Const GWL_WNDPROC = (-4) Public Const WM_USER = &H400 Public lpprevwndproc As Long Public ghw As Long Public hdevice As Long Address of revious window procedure Window handle Device handle Function WindowProc(ByVal hw As Long, ByVal umsg As Long, ByVal wparam As Long, ByVal lparam As Long) As Long Dim nsize As Long Dim szdata As String * Dim nret As Long If umsg = WM_USER Then Select Case wparam Case HDLC_RECEIVED_FRAME Receive data nreceivedframe = 0 nsize = 0 nret = HdlcReceiveFrameString(hHdlcPort, szdata, nsize) : : : End If WindowProc = CallWindowProc(lpPrevWndProc, hw, umsg, wparam, lparam) End Function Private Sub Form_Load() ghw = Me.hwnd Hook window procedure lpprevwndproc = SetWindowLong(gHW, GWL_WNDPROC, AddressOf WindowProc) End Sub Private Sub Form_Unload(Cancel As Integer) Unhook window procedure nret = SetWindowLong(gHW, GWL_WNDPROC, lpprevwndproc) End Sub Private Sub PortOpen() Dim Ret As Long Dim EventBuffer As Long Dim soverlapped As OVERLAPPED 25

26 Dim PortInit As HDLCNPORTINITDATA PortInit.hWindowHandle = ghw PortInit.uWindowMessage = WM_USER ポート初期化構造体メンバへの代入処理省略 hdevice = HdlcOpen( FBIHDLC1, PortInit) 割り込みマスク設定 Ret = HdlcSetEventMask(hDevice, HDLC_RECEIVED_FRAME, 0) End Sub Private Sub PortClose() Dim Ret As Long 割り込みマスク解除 Ret = HdlcSetEventMask(hDevice, 0, 0) Ret = HdlcClose(hDevice) End Sub 26

27 // フォームの定義 type TMDIChild = class(tform) private procedure ReceiveMsg(var Message: Tmessage); message WM_USER; end; implementation procedure TMDIChild.ReceiveMsg(var Message: Tmessage); begin if Message.Wparam = HDLC_RECEIVED_FRAME then begin // フレーム受信処理 end; inherited; end; procedure TMDIChild.PortOpen(Sender: Tobject); var Ret: ULONG; PortInit: HDLCNPORTINITDATA; begin // ポート初期化 // 構造体メンバへの代入処理一部省略 PortInit.hWindowHandle := Handle; // ウィンドウハンドル PortInit.uWindowMessage := WM_USER; // ウィンドウメッセージ hdevice := HdlcOpen( FBIHDLC1, PortInit); // 割り込みマスク設定 Ret := HdlcSetEventMask(hDevice, HDLC_RECEIVED_FRAME, 0); end; procedure TMDIChild.PortClose(Sender: Tobject); var Ret: ULONG; begin // 割り込みマスク解除 Ret := HdlcSetEventMask(hDevice, 0, 0); Ret := HdlcClose(hDevice); end; 27

28 コールバックでの処理コールバックを使用する場合 以下のように処理を行います ポートオープン (HdlcOpen) 割り込みマスクの設定 (HdlcSetEventMask) イベント待ち ( イベントが発生するとコールバックルーチンが呼び出されます ) 割り込みマスクの解除 (HdlcSetEventMask) ポートクローズ (HdlcClose) 処理例 ) フレーム受信イベントを待ちます HANDLE hdevice; /* デバイスハンドル */ /* コールバックルーチン */ void EventHandler(ULONG EventFactor, ULONG Device) { if(eventfactor == HDLC_RECEIVED_FRAME) { /* フレーム受信処理 */ } } int main(void) { HDLCNPORTINITDATA PortInit; LONG Ret; /* ポート初期化構造体メンバへの代入処理一部省略 */ PortInit.lpCallBackProc = (LPHDLCCALLBACK)EventHandler; /* コールバックルーチン */ hdevice = HdlcOpen( FBIHDLC1, &PortInit); /* 割り込みマスク設定 */ Ret = HdlcSetEventMask(hDevice, HDLC_RECEIVED_FRAME, 0); /* 割り込みマスク解除 */ Ret = HdlcSetEventMask(hDevice, 0, 0); Ret = HdlcClose(hDevice); } return 0; 28

29 コールバックルーチン ( 標準モジュールで定義します ) Public Sub EventHandler(ByVal EventFactor As Long, ByVal Device As Long) If EventFactor = HDLC_RECEIVED_FRAME Then フレーム受信処理 End If End Sub Function ChangeAddressOf(ByVal Address As Long) As Long ChangeAddressOf = Address End Function Sub MainRoutine() Dim PortInit As HDLCNPORTINITDATA Dim Ret As Long ポート初期化 構造体メンバへの代入処理一部省略 PortInit.lpCallBackProc = ChangeAddressOf(AddressOf EventHandler) hdevice = HdlcOpen( FBIHDLC1, PortInit) 割り込みマスク設定 Ret = HdlcSetEventMask(hDevice, HDLC_RECEIVED_FRAME, 0) 割り込みマスク解除 Ret = HdlcSetEventMask(hDevice, 0, 0) Ret = HdlcClose(hDevice) End Sub 29

30 // コールバックルーチン procedure EventHandler(EventFactor: Integer; Device: Integer); begin if EventFactor = HDLC_RECEIVED_FRAME then begin // フレーム受信処理 end; end; var PortInit: HDLCNPORTINITDATA; Ret: ULONG; begin // ポート初期化 // 構造体メンバへの代入処理一部省略 PortInit.lpCallBackProc := Addr(EventHandler); // コールバックルーチン hdevice := HdlcOpen( FBIHDLC1, PortInit); // 割り込みマスク設定 Ret := HdlcSetEventMask(hDevice, HDLC_RECEIVED_FRAME, 0); // 割り込みマスク解除 Ret := HdlcSetEventMask(hDevice, 0, 0); Ret := HdlcClose(hDevice); end; 終了処理 HdlcClose 関数でポートの終了処理を行います ポートの使用を終了する際は必ず HdlcClose 関数を実行してください 30

31 3.3 実行手順 ( 汎用 DIO 部 ) 基本的な制御の手順は以下の通りです ( 記述例は C 言語です ) 初期化デバイスをオープンし デバイスハンドルを得ます hdevicehandle = SdioOpen("IFSDIO1"); デバイス名 "IFSDIO1" は IFSDIO1 IFSDIO2... と システムが PCI バス上にデバイスが発見された順番に割り付けられます インタフェースモジュールが挿入されているスロット位置やパソコン本体が変わると 検出順序が変わるため デバイス名が変わることがあります Windows NT 以外の OS では デバイスマネージャ に FbiSDio が追加され認識された弊社 HDLC モジュールのデジタル入出力デバイスが一覧表示されます 一覧の製品型式の横にインタフェースモジュール上のロータリスイッチの値とデバイス名が表示されますので ドライバインストール後 デバイス名を確認してからご使用ください ( 付属の DI 入力ユーティリティ (SdiUtil.exe) DO 出力ユーティリティ (SdoUtil.exe) でも確認することができます ) プログラム中では SdioCommonGetDeviceInfo 関数を用いて デバイス名とボード ID(RSW1 設定 ) を確認することが出来ます hdevicehandle = SdioOpen("IFSDIO1"); nret = SdioCommonGetDeviceInfo( hdevicehandle, &DeviceID, &VendorID, &RevisionID, &SubsystemID, &SubsystemVendorID, &BoardID, &TerminalNo ); DeviceID BoardID TermilanNo に返されるデバイス ID ボード ID 端子台番号を確認することで "IFSDIO1" がどの HDLC モジュール上の汎用 DIO デバイスであるかを確認することが出来ます 31

32 3.3.2 入力方法 SdioOpen 関数で得たデバイスハンドルを用いて 指定した接点の状態を読み出します // IN1~IN8 の 8 点の接点状態を入力します nret = SdioInputByte( hdevicehandle, IFSDIO_IN1_8, &Value ); // IN1~IN16 の 16 点の接点状態を入力します Ret = SdioInputWord( hdevicehandle, IFSDIO_IN1_16, &Value ); // IN1~IN32 の 32 点の接点状態を入力します nret = SdioInputDword( hdevicehandle, IFSDIO_IN1_32, &Value ); 上記方法では 8 / 16 / 32 点ごとに 区切られた範囲の接点状態を入力しますが 以下のように 入力する接点の範囲を指定して入力することも出来ます // IN5~IN7 の 3 点の接点状態を入力します nret = SdioInputPoint( hdevicehandle, &nbuffer[0], 5, 3 ); 配列 nbuffer は 3 つ以上の要素が用意されていなければなりません 出力方法 SdioOpen 関数で得たデバイスハンドルを用いて 出力を変化させます // OUT1~OUT8 の 8 点の出力を変化させします nret = SdioOutputByte( hdevicehandle, IFSDIO_OUT1_8, Value ); // OUT1~OUT16 の 16 点の出力を変化させます nret = SdioOutputWord( hdevicehandle, IFSDIO_OUT1_16, Value ); // OUT1~OUT32 の 32 点の出力を変化させします nret = SdioOutputDword( hdevicehandle, IFSDIO_OUT1_32, Value ); 上記方法では 8 / 16 / 32 点ごとに 区切られた範囲の出力状態を変化させますが 以下のように 出力する範囲を指定することも出来ます // OUT5~OUT7 の 3 点の出力を変化させます nret = SdioOutputPoint( hdevicehandle, &nbuffer[0], 5, 3 ); 配列 nbuffer は 3 つ以上の要素が用意され 予め nbuffer[0]~[2] へ OUT3~5 へ出力させる値がセットされていなければなりません 32

33 3.3.4 STB 入力時のデータを取り込む 1) STB 入力によるラッチ機能を有効にします // STB の立下りエッジでデータをラッチする nret = SdioSetLatchLogic( hdevicehandle, IFSDIO_FALL_EDGE ); 2) STB 入力割り込み時の動作を登録します // コールバック関数 CallBackProc を登録 nret = SdioSetEvent( hdevicehandle, NULL, 0, NULL, CallBackProc, 0); 上記はコールバックを用いた例です SdioSetEvent 関数では 以下の 3 種類の同期処理を登録させることが出来ます コールバック GPC-4116 が持つコールバック機能を用いて同期させる方法です STB 入力時に SdioSetEvent 関数で指定したコールバック関数が呼び出されます コールバック関数の仕様は CallBackProc を参照してください イベント Windows のイベントを用いて同期させる方法です Windows のイベント機能については Windows の技術資料等を参照してください メッセージ Windows のメッセージ機能を用いて同期させる方法です Windows のメッセージ機能については Windows の技術資料等を参照してください 3) STB 入力時の割り込みを有効にします // STB の立下りエッジで割り込みを発生させる nret = SdioSetEventLogic( hdevicehandle, IFSDIO_FALL_EDGE ); 4) CallBackProc 関数の中で STB 入力によってラッチされた接点状態を読み出します // IN1~IN8 の 8 点の接点状態を入力します nret = SdioInputLatchByte( hdevicehandle, IFSDIO_IN1_8, &Value ); // IN1~IN16 の 16 点の接点状態を入力します nret = SdioInputLatchWord( hdevicehandle, IFSDIO_IN1_16, &Value ); // IN1~IN32 の 32 点の接点状態を入力します nret = SdioInputLatchDword( hdevicehandle, IFSDIO_IN1_32, &Value ); 上記方法では 8 / 16 / 32 点ごとに 区切られた範囲の接点状態を入力しますが 以下のように 入力する接点の範囲を指定して入力することも出来ます // IN5~IN7 の 3 点の接点状態を入力します nret = SdioInputLatchPoint( hdevicehandle, &nbuffer[0], 5, 3 ); 配列 nbuffer は 3 つ以上の要素が用意されていなければなりません 33

34 3.3.5 終了方法 1) STB 入力割り込み処理を登録している場合 割り込みを無効にしてから 登録している処理を解除します // STB 入力割り込みを解除 nret = SdioSetEventLogic( hdevicehandle, 0); // STB 入力割り込み時の処理を解除 nret = SdioSetEvent( hdevicehandle, NULL, 0, NULL, NULL, 0); 2) SdioOpen 関数で得たデバイスハンドルを用いてデバイスをクローズします nret = SdioClose( hdevicehandle ); 34

35 第 4 章リファレンス (HDLC 通信部 ) 4.1 関数一覧 No 関数名 機能 1 HdlcOpen ポートのオープンを行い 以後ポートへのアクセスを行えるようにします 2 HdlcClose ポートのクローズを行い ポートアクセスのために使用されていた各種リソースの解放を行い 以後ポートへのアクセスを禁止します 3 HdlcSendFrame フレームの送信を行います 4 HdlcGetFrameCount 受信しているフレームの数を取得します 5 HdlcGetFrameLength 受信バッファの先頭のフレームの長さを取得します 6 HdlcReceiveFrame 受信バッファの先頭のフレームを取得します 7 HdlcGetStatus 受信フレームの有無 送信中フレームの有無等を取得します 8 HdlcSetControlLine 制御信号の状態を変更します 9 HdlcGetControlLine 制御信号の状態を取得します 10 HdlcClearBuffer 送信バッファ 受信バッファをクリアします 11 HdlcSetEventMask イベントマスクの設定を行います 12 HdlcGetEventMask イベントマスクの取得を行います 13 HdlcEventRequestPending HDLC インタフェースモジュールからのイベントを待ちます 14 HdlcCheckIdle アイドル状態であるかチェックします 15 HdlcSetIdleTimer アイドル検出の検出時間を設定します 16 HdlcGetIdleTimer アイドル検出の検出時間を取得します 17 HdlcSetCableTermination 終端抵抗の設定します 18 HdlcGetCableTermination 終端抵抗設定を取得します 19 HdlcGetTmoduleStatus HDLC モジュールの接続状態を取得します 20 HdlcSetTmodulePower HDLC モジュールの電源を制御します 21 HdlcSetFlag リーディングフラグ / トレーリングフラグの数を設定します 22 HdlcGetFlag リーディングフラグ / トレーリングフラグの数を取得します 23 HdlcCommonGetPciDeviceInfo HDLC インタフェースモジュールのリソース情報を取得します 24 CallBackProc イベント発生によってコールされるコールバック関数のプレー スホルダです 35

36 4.2 関数個別説明 1. HdlcOpen 機能 HDLC インタフェースモジュールのオープンを行い 以後のインタフェースモジュールへのアクセスを行えるようにします 書式 (x86 専用 ) HANDLE HdlcOpen( LPCTSTR PHDLCNPORTINITDATA ); (x64 専用 ) HANDLE HdlcOpen( LPCSTR PHDLCNPORTINITDATA ); lpszname, pinitdata lpszname, pinitdata Declare Function HdlcOpen Lib "FbiHdlc.DLL"( _ ByVal lpszname As String, _ ByRef pinitdata As HDLCNPORTINITDATA _ ) As Long function HdlcOpen( lpszname: String; var pinitdata: HDLCNPORTINITDATA ):THandle; stdcall; external 'FbiHdlc.DLL'; パラメータ lpszname オープンするデバイス名を指定します pinitdata ポート初期化情報構造体 (HDLCNPORTINTIDATA 構造体 ) へのポインタを指定します 戻り値 関数が正常に終了した場合には 有効なハンドルが返されます 他の関数は 本関数により取得したハンドルを使用してデバイスの制御を行います オープンに失敗した場合には INVALID_HANDLE_VALUE(-1) が返されます 36

37 備考 UNICODE 文字列について C 言語 (x86 専用 ) で HdlcOpen の引数 lpszname に指定する文字列は LPCTSTR 型として定義していますが UNICODE 文字列には対応しておりません x86 環境でご使用になる場合 使用例に沿って記述してください 37

38 使用例 (x86 専用 ) HDLCNPORTINITDATA PortInit; HANDLE hdevice; /* ポート初期化 */ ZeroMemory(&PortInit, sizeof(hdlcnportinitdata)); PortInit.uLineMode = HDLC_LINE_HALF; /* 半二重 */ PortInit.uTxc = HDLC_SCLK_PTC; /* 送信内部クロック */ PortInit.uRxc = HDLC_RCLK_DPLL; /* 受信 DPLL */ PortInit.uSourceClock = HDLC_CLOCK_ ; /* 内部クロック 32MHz */ PortInit.uBaudRate = ; /* 250kbps */ PortInit.uInterface = HDLC_INTERFACE_485; /* RS-485 */ PortInit.uFormat = HDLC_FORMAT_NRZI; /* 符号化フォーマット NRZI */ PortInit.uFcs = HDLC_FCS_16; /* FCS 生成多項式 ITUT FCS16 */ PortInit.uAddressMode = HDLC_ADDRESS_NONE; /* アドレス検出を行わない */ PortInit.uTxcMode = HDLC_STOUT_NONE; /* クロックを出力しない */ PortInit.uSendTiming = 100 HDLC_TIME_MICRO_SEC; /* 送信前切り替え時間 100us */ PortInit.uCloseTiming = 100 HDLC_TIME_MICRO_SEC; /* 送信後切り替え時間 100us */ hdevice = HdlcOpen((LPCTSTR)"FBIHDLC1", &PortInit); if(hdevice == INVALID_HANDLE_VALUE){ /* オープンに失敗 */ printf("fail to open the port\n"); } else { /* 実際に設定された送信前切り替え時間を表示 */ if(portinit.usendtiming & HDLC_TIME_MICRO_SEC) { printf("sendtiming = %ld us", (PortInit.uSendTiming & ~HDLC_TIME_MICRO_SEC)); } else { printf("sendtiming = %ld ms", PortInit.uSendTiming * 10); } } 38

39 (x64 専用 ) HDLCNPORTINITDATA PortInit; HANDLE hdevice; /* ポート初期化 */ ZeroMemory(&PortInit, sizeof(hdlcnportinitdata)); PortInit.uLineMode = HDLC_LINE_HALF; /* 半二重 */ PortInit.uTxc = HDLC_SCLK_PTC; /* 送信内部クロック */ PortInit.uRxc = HDLC_RCLK_DPLL; /* 受信 DPLL */ PortInit.uSourceClock = HDLC_CLOCK_ ; /* 内部クロック 32MHz */ PortInit.uBaudRate = ; /* 250kbps */ PortInit.uInterface = HDLC_INTERFACE_485; /* RS-485 */ PortInit.uFormat = HDLC_FORMAT_NRZI; /* 符号化フォーマット NRZI */ PortInit.uFcs = HDLC_FCS_16; /* FCS 生成多項式 ITUT FCS16 */ PortInit.uAddressMode = HDLC_ADDRESS_NONE; /* アドレス検出を行わない */ PortInit.uTxcMode = HDLC_STOUT_NONE; /* クロックを出力しない */ PortInit.uSendTiming = 100 HDLC_TIME_MICRO_SEC; /* 送信前切り替え時間 100us */ PortInit.uCloseTiming = 100 HDLC_TIME_MICRO_SEC; /* 送信後切り替え時間 100us */ hdevice = HdlcOpen("FBIHDLC1", &PortInit); if(hdevice == INVALID_HANDLE_VALUE){ /* オープンに失敗 */ printf("fail to open the port\n"); } else { /* 実際に設定された送信前切り替え時間を表示 */ if(portinit.usendtiming & HDLC_TIME_MICRO_SEC) { printf("sendtiming = %ld us", (PortInit.uSendTiming & ~HDLC_TIME_MICRO_SEC)); } else { printf("sendtiming = %ld ms", PortInit.uSendTiming * 10); } } 39

40 Dim hdevice As Long Dim szmessage As String Dim PortInit As HDLCNPORTINITDATA ' ポート初期化 ' 構造体メンバへの代入処理省略 hdevice = HdlcOpen("FBIHDLC1", PortInit) If hdevice = -1 Then ' オープンに失敗 MsgBox("Fail to open the port") Else ' 実際に設定された送信前切り替え時間を表示 If (PortInit.uSendTiming AND HDLC_TIME_MICRO_SEC) <> 0 Then szmessage = "SendTiming = " & Str(PortInit.uSendTiming AND 65536) szmessage = szmessage & " us" Else szmessage = "SendTiming = " & Str(PortInit.uSendTiming * 10) & " ms" End If MsgBox(szMessage) End If 40

41 var hdevice: THandle; szmessage: String; S: String; PortInit: HDLCNPORTINITDATA; begin // ポート初期化 // 構造体メンバへの代入処理省略 hdevice := HdlcOpen('FBIHDLC2', PortInit); if hdevice = INVALID_HANDLE_VALUE then begin // オープンに失敗 MessageDlg('Fail to open the port', mtinformation, [mbok], 0); end else begin // 実際に設定された送信前切り替え時間を表示 if (PortInit.uSendTiming and HDLC_TIME_MICRO_SEC) <> 0 then begin Str(PortInit.uSendTiming and $FFFF,S); szmessage := 'SendTiming = ' + S; szmessage := szmessage + ' us'; end else begin Str(PortInit.uSendTiming * 10,S); szmessage := 'SendTiming = ' + S + ' us'; end; MessageDlg(szMessage, mtinformation, [mbok], 0); end; end; 41

42 2. HdlcClose 機能 ポートのクローズを行い ポートアクセスのために使用されていた各種リソースの解放を行い 以後のポートへのアクセスを禁止します 書式 LONG HdlcClose( HANDLE HDevice ); Declare Function HdlcClose Lib "FbiHdlc.DLL" ( _ ByVal HDevice As Long _ ) As Long function HdlcClose( hdevice: THandle ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice クローズするデバイスハンドルを指定します 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 使用例 HANDLE hdevice; HDLCNPORTINITDATA PortInit; LONG Ret; hdevice = HdlcOpen( FBIHDLC1, &PortInit); : : Ret = HdlcClose(hDevice); Dim hdevice As Long Dim PortInit As HDLCNPORTINITDATA Dim Ret As Long hdevice = HdlcOpen("FBIHDLC1", PortInit) : : Ret = HdlcClose(hDevice) 42

43 var hdevice: THandle; PortInit: HDLCNPORTINITDATA; Ret: Integer; hdevice := HdlcOpen('FBIHDLC1', PortInit); : : Ret := HdlcClose(hDevice); 43

44 3. HdlcSendFrame 機能 HDLC フレームの送信を行います 書式 LONG HdlcSendFrame( HANDLE hdevice, void *lpbuffer, ULONG ullength, ULONG ulendflag, LPOVERLAPPED lpoverlapped ); バイト型変数によるデータ送信を行う場合 Declare Function HdlcSendFrame Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByRef lpbuffer As Byte, _ ByVal ullength As Long, _ ByVal ulendflag As Long, _ ByRef lpoverlapped As OVERLAPPED _ ) As Long 文字列型変数によるデータ送信を行う場合 Declare Function HdlcSendFrameString Lib "FbiHdlc.DLL" Alias "HdlcSendFrame" ( ByVal hdevice As Long, ByVal lpbuffer As String, ByVal ullength As Long, ByVal ulendflag As Long, ByRef lpoverlapped As OVERLAPPED ) As Long function HdlcSendFrame( hdevice: THandle; lpbuffer: pointer; ullength: Integer; ulendflag: Integer; lpoverlapped: Poverlapped ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice データを送信するデバイスハンドルを指定してください lpbuffer 送信データ格納変数へのポインタを指定します (C 言語 Delphi) 送信データ格納変数を指定します (Visual Basic) ullength 送信データのサイズをバイト単位で指定します 44

45 ulendflag 続けて送信するフレームがあるかどうかを指定します 本パラメータは PCI-4116, PCI/CTP-4159 半二重通信時のみ有効です 値内容 0 続きのフレームがあるので データ送信が完了しても受信状態に移行しない 1 このフレームを送信し終わったら受信状態に移行する lpoverlapped フレーム送信後 イベントを発生させる場合は指定してください 使用しない場合は NULL または 0 を指定してください 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます 非同期で動作させる場合は FBIHDLC_ERROR_IO_PENDING を返します それ以外の値が返された場合については 戻り値一覧 をご参照ください 備考 にて文字列の送信を行う場合には HdlcSendFrameString 関数をご使用ください 文字列以外のデータを送信する場合には HdlcSendFrame 関数をご使用ください HdlcSendFrame 関数による送信が完了する以前に次の HdlcSendFrame 関数による送信を実行しても 終結フラグと次に送信するフレームの先頭フラグが共有されることはありません 終結フラグと先頭フラグは連続せずに間が出来ます フラグフィルに設定している場合 フラグは最低 3 つ ( 終結フラグと先頭フラグを含む ) 挿入されます 使用例 HANDLE hdevice; OVERLAPPED soverlapped; LONG Ret; ZeroMemory(&sOverlapped, sizeof(overlapped)); soverlapped.hevent = CreateEvent(NULL, TRUE, FALSE, NULL); Ret = HdlcSendFrame(hDevice, " ", 10, 1, &soverlapped); if(ret == FBIHDLC_ERROR_IO_PENDING) { WaitForSingleObject(sOverlapped.hEvent, INFINITE); } CloseHandle(sOverlapped.hEvent); Dim hdevice As Long Dim soverlapped As OVERLAPPED Dim Ret As Long soverlapped.internal = 0 soverlapped.internalhigh = 0 soverlapped.offset = 0 soverlapped.offsethigh = 0 soverlapped.hevent = CreateEvent(0, True, False, 0) Ret = HdlcSendFrameString(hDevice, " ", 10, 1, soverlapped) If Ret = FBIHDLC_ERROR_IO_PENDING Then WaitForSingleObject soverlapped.hevent, -1 45

46 End If CloseHandle soverlapped.hevent Var HDevice: THandle; soverlapped: OVERLAPPED; Ret: Integer; SizeOf(TOverLapped)); Soverlapped.hEvent := CreateEvent(nil, True, False, nil); Ret := HdlcSendFrame(hDevice, ' ', 10, if Ret = FBIHDLC_ERROR_IO_PENDING then begin WaitForSingleObject(sOverlapped.hEvent, -1); end; CloseHandle(Overlapped.hEvent); 10 バイトのフレームを送信します 46

47 4. HdlcGetFrameCount 機能 受信バッファ内に格納されているフレームの数を取得します 書式 LONG HdlcGetFrameCount( HANDLE hdevice, PULONG pulframecount ); Declare Function HdlcGetFrameCount Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByRef pulframecount As Long _ ) As Long function HdlcGetFrameCount( hdevice: THandle; var pulframecount: Integer ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice 受信フレーム数を取得するデバイスハンドルを指定します pulframecount 受信フレーム数を返す変数へのポインタを指定します (C 言語 ) 受信フレーム数を返す変数を指定します (Visual Basic Delphi) 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 使用例 HANDLE hdevice; ULONG ulframecount, ulframelength; ULONG n; LONG Ret; BYTE Buffer[16384]; Ret = HdlcGetFrameCount(hDevice, &ulframecount); for(n = 0; n < ulframecount; n++) { Ret = HdlcReceiveFrame(hDevice, Buffer, &ulframelength); } 47

48 Dim hdevice As Long Dim ulframecount, ulframelength As Long Dim n As Long Dim Ret As Long Dim Buffer(16384) As Byte Ret = HdlcGetFrameCount(hDevice, ulframecount) For n = 0 To ulframecount - 1 Ret = HdlcReceiveFrame(hDevice, Buffer(0), ulframelength) Next var hdevice: THandle; ulframecount: Integer; ulframelength: Integer; n: Integer; Ret: Integer; Buffer: array[ ] of Byte Ret := HdlcGetFrameCount(hDevice, ulframecount); for n := 0 to ulframecount - 1 do begin Ret := ulframelength); end; 受信フレーム数を取得し 取得したフレーム分だけデータを取り出します 48

49 5. HdlcGetFrameLength 機能 受信フレームの先頭に格納されているフレームの長さを取得します (FCS は含まれません ) 書式 LONG HdlcGetFrameLength( HANDLE hdevice, PULONG pulframelength ); Declare Function HdlcGetFrameLength Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByRef pulframelength As Long _ ) As Long function HdlcGetFrameLength( hdevice: THandle; var pulframelength: Integer ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice 受信フレーム数を取得するデバイスハンドルを指定します pulframelength 受信フレーム長を返す変数へのポインタを指定します (C 言語 ) 受信フレーム長を返す変数を指定します (Visual Basic Delphi) 単位はバイトで 0~16384 の値が返されます 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 使用例 HANDLE hdevice; ULONG ulframelength; LONG Ret; BYTE Buffer[16384]; Ret = HdlcGetFrameLength(hDevice, &ulframelength); if(ulframelength > 0) { Ret = HdlcReceiveFrame(hDevice, Buffer, &ulframelength); } 49

50 Dim hdevice As Long Dim ulframelength As Long Dim Ret As Long Dim Buffer(16384) As Byte Ret = HdlcGetFrameLength(hDevice, ulframelength) If ulframelength > 0 Then Ret = HdlcReceiveFrame(hDevice, Buffer(0), ulframelength) End If var hdevice: THandle; ulframelength: Integer; Ret: Integer; Buffer: array[ ] of Byte Ret := HdlcGetFrameLength(hDevice, ulframelength); if ulframelength > 0 then begin Ret := ulframelength); end; 受信バッファ内に残っている受信データサイズを取得し 受信フレームが 0 でなければ ( データが残っていれば ) 受信フレームを取り出します 50

51 6. HdlcReceiveFrame 機能 受信バッファに蓄えられた HDLC フレームを取り出します 書式 LONG HdlcReceiveFrame( HANDLE hdevice, void *lpbuffer, PULONG pullength ); バイト型変数によるデータ送信を行う場合 Declare Function HdlcReceiveFrame Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByRef lpbuffer As Byte, _ ByRef pullength As Long _ ) As Long 文字列型変数によるデータ送信を行う場合 Declare Function HdlcReceiveFrameString Lib "FbiHdlc.DLL" Alias "HdlcReceiveFrame" ( ByVal hdevice As Long, ByVal lpbuffer As String, ByRef pullength As Long ) As Long function HdlcReceiveFrame( hdevice: THandle; lpbuffer: pointer; var pullength: Integer ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice 受信データを取り出すデバイスハンドルを指定します lpbuffer 受信データを返す変数へのポインタを指定してください (C 言語 Delphi) 受信データを返す変数を指定してください (Visual Basic) HdlcGetFrameLength 関数で得られたサイズ以上のバッファを用意してください pullength lpbuffer へコピーされたバイト数が返されます 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 51

52 備考 Visual Basic にて文字列の受信を行う場合には HdlcReceiveFrameString 関数をご使用ください 文字列以外のデータを受信する場合には HdlcReceiveFrame 関数をご使用ください 文字列以外のデータを HdlcReceiveFrameString 関数で受信すると データ化けが起こります 受信するデータ型にあわせて関数をご使用ください 使用例 HANDLE hdevice; ULONG ulframecount, ulframelength; ULONG n; LONG Ret; BYTE Buffer[16384]; Ret = HdlcGetFrameCount(hDevice, &ulframecount); for(n = 0; n < ulframecount; n++) { Ret = HdlcReceiveFrame(hDevice, Buffer, &ulframelength); } Dim hdevice As Long Dim ulframecount, ulframelength As Long Dim n As Long Dim Ret As Long Dim Buffer(16384) As Byte Ret = HdlcGetFrameCount(hDevice, ulframecount) For n = 0 To ulframecount - 1 Ret = HdlcReceiveFrame(hDevice, Buffer(0), ulframelength) Next var hdevice: THandle; ulframecount: Integer; ulframelength: Integer; n: Integer; Ret: Integer; Buffer: array[ ] of Byte Ret = HdlcGetFrameCount(hDevice, ulframecount); for n := 0 to ulframecount - 1 do begin Ret = ulframelength); end; 受信フレーム数を取得し 取得したフレーム分だけデータを取り出します 52

53 7. HdlcGetStatus 機能 HDLC インタフェースモジュールの各種ステータスを取得します 取得できるステータスは フレーム受信の有無 受信バッファの残り容量 送信フレームの有無 送信バッファの残り容量になります 書式 LONG HdlcGetStatus( HANDLE PHDLCNPORTSTATUS ); hdevice, pportstatus Declare Function HdlcGetStatus Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByRef pportstatus As HDLCNPORTSTATUS _ ) As Long function HdlcGetStatus( hdevice: THandle; var pportstatus: HDLCNPORTSTATUS ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice ステータスを取得するデバイスハンドルを指定します pportstatus ポートステータス構造体 (HDLCNPORTSTATUS 構造体 ) へのポインタを指定します (C 言語 ) ポートステータス構造体 (HDLCNPORTSTATUS 構造体 ) を指定します (Visual Basic Delphi) 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 使用例 HANDLE hdevice; HDLCNPORTSTATUS PortStatus; LONG Ret; BYTE Buffer[16384]; Buffer[0] = 0x02; Buffer[1] = 0x53; Ret = HdlcGetStatus(hDevice, &PortStatus); if(portstatus.usendfreeblock >= 1) { Ret = HdlcSendFrame(hDevice, Buffer, 2, 1, NULL); } 53

54 Dim hdevice As Long Dim PortStatus As HDLCNPORTSTATUS Dim Ret As Long Dim Buffer(16384) As Byte Buffer(0) = &H02 Buffer(1) = &H53 Ret = HdlcGetStatus(hDevice, PortStatus) If PortStatus.uSendFreeBlock >= 1 Then Ret = HdlcSendFrame(hDevice, Buffer(0), 2, 1, ByVal 0) End If var hdevice: THandle; PortStatus: HDLCNPORTSTATUS; Ret: Integer; Buffer: array[ ] of Byte; Buffer[0] := $02; Buffer[1] := $53; Ret := HdlcGetStatus(hDevice, PortStatus); if PortStatus.uSendFreeBlock >= 1 then begin Ret := 2, 1, nil); end; 送信バッファが空であることを確認し フレーム送信を行います 54

55 8. HdlcSetControlLine 機能 HDLC インタフェースモジュールの制御信号の出力状態を変更します 書式 LONG HdlcSetControlLine( HANDLE hdevice, DWORD dwcontrolline ); Declare Function HdlcSetControlLine Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByVal dwcontrolline As Long _ ) As Long function HdlcSetControlLine( hdevice: THandle; dwcontrolline: Integer ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice 制御信号出力状態を変更するデバイスハンドルを指定します dwcontrolline 制御信号情報を指定します bit31 bit1 bit0 ~bit2 RS-232C 無効 RS ER RS-485 無効 C 無効 0 = OFF 1 = ON 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 使用例 HANDLE hdevice; LONG Ret; Ret = HdlcSetControlLine(hDevice, 0x02); 55

56 Dim hdevice As Long Dim Ret As Long Ret = HdlcSetControlLine(hDevice, &H2) var hdevice: THandle; Ret: Integer; Ret := HdlcSetControlLine(hDevice, $02); RS 信号 (C 信号 ) を ON にします 56

57 9. HdlcGetControlLine 機能 HDLC インタフェースモジュールの制御信号の入力状態 出力状態を取得します 書式 LONG HdlcGetControlLine( HANDLE hdevice, PDWORD pdwcontrolline, PDWORD pdwchangeofcontrolline ); Declare Function HdlcGetControlLine Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByRef pdwcontrolline As Long, _ ByRef pdwchangeofcontrolline As Long _ ) As Long function HdlcGetControlLine( hdevice: THandle; var pdwcontrolline: Integer; var pdwchangeofcontrolline: Integer ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice 制御信号情報を取得するデバイスハンドルを指定します pdwcontrolline 制御信号情報を返す変数へのポインタを指定します (C 言語 ) 制御信号情報を返す変数を指定します (Visual Basic Delphi) bit31 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 ~bit8 RS-232C 無効 CI CS CD DR 予約 予約 RS ER RS-485 無効 予約 I 予約 予約 予約 予約 C 予約 0 = OFF 1 = ON pdwchangeofcontrolline 制御信号の変化情報を返す変数へのポインタを指定します (C 言語 ) 制御信号の変化情報を返す変数へのポインタを指定します (Visual Basic Delphi) bit31 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 ~bit8 RS-232C 無効 CI CS CD DR 予約 予約 予約 予約 RS-485 無効 予約 I 予約 予約 予約 予約 予約 予約 0 = 変化なし 1 = 変化あり 57

58 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 備考 pdwchangeofcontrolline に状態の変化を返すためには HdlcSetEventMask 関数で制御信号の状態変化によるイベントのマスクを解除 ( アンマスク ) しておく必要があります pdwchangeofcontrolline の状態の変化とは HdlcSetEventMask 関数の制御信号による割り込みイベント発生の論理です 使用例 HANDLE hdevice; DWORD dwcontrolline, dwdeltaline; LONG Ret; Ret = HdlcGetControlLine(hDevice, &dwcontrolline, &dwdeltaline); Dim hdevice As Long Dim dwcontrolline As Long Dim dwdeltaline As Long Dim Ret As Long Ret = HdlcGetControlLine(hDevice, dwcontrolline, dwdeltaline) var hdevice: THandle; dwcontrolline: Integer; dwdeltaline: Integer; Ret: Integer; Ret := HdlcGetControlLine(hDevice, dwcontrolline, dwdeltaline); 制御信号情報を取得します 58

59 10. HdlcClearBuffer 機能 HDLC インタフェースモジュールの送受信バッファのクリアを行います 書式 LONG HdlcClearBuffer( HANDLE hdevice, ULONG ulclearbuffer ); Declare Function HdlcClearBuffer Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByVal ulclearbuffer As Long _ ) As Long function HdlcClearBuffer( hdevice: THandle; ulclearbuffer: Integer ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice バッファのクリアを行うデバイスハンドルを指定します ulclearbuffer クリアするバッファを指定します 識別子 値 内容 HDLC_CLEAR_SEND_BUFFER 1 送信バッファをクリアします HDLC_CLEAR_RECEIVE_BUFFER 2 受信バッファをクリアします 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 備考 送信バッファのクリアは 送信データが通信コントローラに書き込まれる前でのみ行うことができます 通信コントローラに送信データが書き込まれた後ではクリアすることはできません ご注意ください 59

60 使用例 HANDLE hdevice; LONG Ret; Ret = HdlcClearBuffer(hDevice, HDLC_CLEAR_RECEIVE_BUFFER); Dim hdevice As Long Dim Ret As Long Ret = HdlcClearBuffer(hDevice, HDLC_CLEAR_RECEIVE_BUFFER) Var hdevice: Thandle; Ret: Integer; Ret := HdlcClearBuffer(hDevice, HDLC_CLEAR_RECEIVE_BUFFER); 受信バッファをクリアします 60

61 11. HdlcSetEventMask 機能 割り込みイベントマスクを設定します 書式 LONG HdlcSetEventMask( HANDLE hdevice, BYTE beventmask, BYTE beventconfig ); Declare Function HdlcSetEventMask Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByVal beventmask As Byte, _ ByVal beventconfig As Byte _ ) As Long function HdlcSetEventMask( hdevice: THandle; beventmask: byte; beventconfig: byte ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice イベントマスクを設定するデバイスハンドルを指定します beventmask イベント発生要因のマスク / アンマスクを設定するデータを指定します bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 RS-232C CI CS CD DR IDLE ERROR BOV RD RS-485 予約 I 予約 予約 IDLE ERROR BOV RD 0 = マスク ( イベントは発生しません ) 1 = アンマスク ( イベントが発生します ) CI CD DR CS I IDLE ERROR RD BOV = CI 信号の入力状態に変化があったとき = CD 信号の入力状態に変化があったとき = DR 信号の入力状態に変化があったとき = CS 信号の入力状態に変化があったとき = I 信号の入力状態に変化があったとき = アイドルを検出したとき = エラーフレームを受信したとき または HDLC モジュールに異常が発生したとき = データを受信し 受信バッファに格納し終わったとき = オーバーフローエラー オーバーランエラーが発生したとき 61

62 beventconfig イベント発生要因を指定します bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 RS-232C CI CS CD DR 予約予約予約予約 RS-485 予約 I 予約予約予約予約予約予約 0 制御信号の状態が OFF(0) から ON(1) でイベント発生 1 制御信号の状態が ON(1) から OFF(0) でイベント発生 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 備考 1. エラーフレーム受信イベントは ポート初期化情報構造体 ulinemode メンバでエラーフレーム受信ビットを有効にした場合にのみ使用できます 2. アイドル検出イベントを使用するには予め HdlcSetIdleTimer 関数でアイドル検出時間を設定している必要があります 以下のインタフェースモジュールではアイドル検出イベントは使用できません PCI-4116 PCI/CTP-4158 PCI/CTP オーバーフローエラー オーバーランエラー発生イベントは PCI-4171 PCI-4171S PCI-4172 PCI-4172FMU PCI/CPZ/CSI CBI-4171 CBI-4171A CBI-4171B CBI CBI WA CBI WB CTP/CPZ-4172 CSI CSI CSI CSI CSI CSI LPC/PEX LPC/PEX LPC/PEX PCI/CTP/CPZ P PCI/CTP/CPZ P PEX-H PEX-H467102P PEX-H PEX-H467120P で使用できます 但し PCI-4171 PCI-4171S PCI-4172 ではリビジョン ID が 2 以上 CBI-4171 CBI-4171A CBI-4171B ではリビジョン ID が 3 以上の製品で使用できます リビジョン ID は HdlcCommonGetPciDeviceInfo 関数で取得できます 4. HDLC モジュールの異常発生イベントは HDLC モジュール製品 (PCI Q PCI Q PCI Q PCI Q CPZ Q CPZ Q CPZ Q CPZ Q CTP Q CTP Q CTP Q CTP Q) でのみ使用できます 使用例 HANDLE hdevice; LONG Ret; Ret = HdlcSetEventMask(hDevice, 0x40, 0x40); Dim hdevice As Long Dim Ret As Long Ret = HdlcSetEventMask(hDevice, &H40, &H40) var hdevice: THandle; Ret: Integer; Ret := HdlcSetEventMask(hDevice, $40, $40); CS 信号 (I 信号 ) の入力状態が ON から OFF になったときにイベントが発生するように設定します 62

63 12. HdlcGetEventMask 機能 割り込みイベントマスクを取得します 書式 LONG HdlcGetEventMask( HANDLE hdevice, PBYTE pbeventmask, PBYTE pbeventconfig ); Declare Function HdlcGetEventMask Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByRef pbeventmask As Byte, _ ByRef pbeventconfig As Byte _ ) As Long function HdlcGetEventMask( hdevice: THandle; var pbeventmask: byte; var pbeventconfig: byte ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice イベントマスクを取得するデバイスハンドルを指定します pbeventmask イベント発生要因のマスク / アンマスクを格納する変数へのポインタを指定します (C 言語 ) イベント発生要因のマスク / アンマスクを格納する変数を指定します (Visual Basic Delphi) bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 RS-232C CI CS CD DR IDLE ERROR BOV RD RS-485 予約 I 予約 予約 IDLE ERROR BOV RD 0 = マスク状態 ( イベントは発生しません ) 1 = アンマスク状態 ( イベントが発生します ) CI CD DR CS I IDLE ERROR RD BOV = CI 信号の入力状態に変化があったとき = CD 信号の入力状態に変化があったとき = DR 信号の入力状態に変化があったとき = CS 信号の入力状態に変化があったとき = I 信号の入力状態に変化があったとき = アイドルを検出したとき = エラーフレームを受信したとき または HDLC モジュールに異常が発生したとき = データを受信し 受信バッファに格納し終わったとき = オーバーフローエラー オーバーランエラーが発生したとき 63

64 pbeventconfig イベント発生要因の設定値を格納する変数へのポインタを指定します (C 言語 ) イベント発生要因の設定値を格納する変数を指定します (Visual Basic Delphi) bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 RS-232C CI CS CD DR 予約 予約 予約 予約 RS-485 予約 I 予約 予約 予約 予約 予約 予約 0 制御信号の状態が OFF(0) から ON(1) でイベント発生 1 制御信号の状態が ON(1) から OFF(0) でイベント発生 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 使用例 HANDLE hdevice; BYTE beventmask, beventconfig; LONG Ret; Ret = HdlcGetEventMask(hDevice, &beventmask, &beventconfig); Dim hdevice As Long Dim beventmask As Byte Dim beventconfig As Byte Dim Ret As Long Ret = HdlcGetEventMask(hDevice, beventmask, beventconfig) var hdevice: THandle; beventmask: byte; beventconfig: byte; Ret: Integer; Ret := HdlcSetEventMask(hDevice, beventmask, beventconfig); イベントマスク情報を取得します 64

65 13. HdlcEventRequestPending 機能 HDLC インタフェースモジュールのイベント要求を待ちます 書式 LONG HdlcEventRequestPending( HANDLE hdevice, DWORD dweventmask, PDWORD pdweventbuffer, LPOVERLAPPED lpoverlapped ); Declare Function HdlcEventRequestPending Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByVal dweventmask As Long, _ ByRef pdweventbuffer As Long, _ ByRef lpoverlapped As OVERLAPPED _ ) As Long function HdlcEventRequestPending ( hdevice: THandle; dweventmask: Integer; var pdweventbuffer: Integer; lpoverlapped: Poverlapped ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice イベント要求を待つデバイスハンドルを指定してください dweventmask 待機するイベントの種類を指定します bit31~bit12 bit11 bit10 bit9 bit8 RS-232C 予約 PWR SAF OVR OVF RS-485 予約 PWR SAF OVR OVF bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 RS-232C CI CS CD DR IDLE ERROR 予約 RD RS-485 予約 I 予約 予約 IDLE ERROR 予約 RD 0 = 無効 1 = 有効 CI = CI 信号の入力状態に変化があったとき CD = CD 信号の入力状態に変化があったとき DR = DR 信号の入力状態に変化があったとき CS = CS 信号の入力状態に変化があったとき I = I 信号の入力状態に変化があったとき IDLE = アイドルを検出したとき ERROR = エラーフレームを受信したとき RD = データを受信し 受信バッファに格納し終わったとき 65

66 OVF OVR SAF PWR = オーバーフローエラーが発生したとき = オーバーランエラーが発生したとき = HDLC モジュールとのケーブル切断が発生したとき = HDLC モジュールの電源電圧に異常が発生したとき pdweventbuffer 発生したイベントを格納する変数へのポインタを指定します (C 言語 ) 発生したイベントを格納する変数を指定します (Visual Basic Delphi) ビットアサインは dweventmask と同じです lpoverlapped OVERLAPPED 構造体を指定します NULL を指定すると同期呼び出しとなり イベントが発生するまで関数から戻ってきません OVERLAPPED 構造体を指定すると非同期呼び出しとなり イベントが発生する前に戻り値 HDLC_ERROR_IO_PENDING で関数から戻ってきます WIN32API の WaitForSingleObject 等を使用し イベントの発生を待ってください 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます 非同期で動作させる場合は FBIHDLC_ERROR_IO_PENDING を返します それ以外の値が返された場合については 戻り値一覧 をご参照ください 備考 1. HdlcSetEventMask 関数でイベントマスクを有効にしないとイベントが発生しません この関数を使用する前に HdlcSetEventMask 関数でイベントマスクを設定してください 2. オーバーフローエラー オーバーランエラー発生イベントは PCI-4171 PCI-4171S PCI-4172 PCI-4172FMU PCI/CPZ/CSI CBI-4171 CBI-4171A CBI-4171B CBI CBI WA CBI WB CTP/CPZ-4172 CSI CSI CSI CSI CSI CSI LPC/PEX LPC/PEX LPC/PEX PCI/CTP/CPZ P PCI/CTP/CPZ P PEX-H PEX-H467102P PEX-H PEX-H467120P で使用できます 但し PCI-4171 PCI-4171S PCI-4172 ではリビジョン ID が 2 以上 CBI-4171 CBI-4171A CBI-4171B ではリビジョン ID が 3 以上の製品で使用できます リビジョン ID は HdlcCommonGetPciDeviceInfo 関数で取得できます 3. HDLC モジュールの異常発生イベントは HDLC モジュール製品 (PCI Q PCI Q PCI Q PCI Q CPZ Q CPZ Q CPZ Q CPZ Q CTP Q CTP Q CTP Q CTP Q) でのみ使用できます 4. WaitForSingleObject 関数の待ち時間を設定し タイムアウトが発生しても イベント要求は残っていますので HdlcEventRequestPending 関数を再実行する必要はありません < 正しい処理 > 1. HdlcEventRequestPending 関数でイベント要求を行う 2. WaitForSingleObject でイベントが発生するまで待つ 3. WaitForSingleObject がタイムアウトした場合 2. へ戻る 4. イベントに応じた処理を行う < 誤った処理 > 1. HdlcEventRequestPending 関数でイベント要求を行う 2. WaitForSingleObject でイベントが発生するまで待つ 3. WaitForSingleObject がタイムアウトした場合 1. へ戻る 4. イベントに応じた処理を行う 66

67 使用例 HANDLE hdevice; OVERLAPPED soverlapped; DWORD dweventbuffer, dwret; ULONG ulframelength; BYTE Buffer[16384]; LONG Ret; Ret = HdlcSetEventMask(hDevice, 0x01, 0x00); ZeroMemory(&sOverlapped, sizeof(overlapped)); soverlapped.hevent = CreateEvent(NULL, TRUE, FALSE, NULL); Ret = HdlcEventRequestPending(hDevice, 0x01, &dweventbuffer, &soverlapped); if(ret == FBIHDLC_ERROR_IO_PENDING) { dwret = WaitForSingleObject(sOverlapped.hEvent, INFINITE); Ret = HdlcReceiveFrame(hDevice, Buffer, &ulframelength); } CloseHandle(sOverlapped.hEvent); Dim hdevice As Long Dim soverlapped As OVERLAPPED Dim dweventbuffer As Long Dim ulframelength As Long Dim Buffer(16384) As Byte Dim Ret As Long Ret = HdlcSetEventMask(hDevice, &H1, &H0) soverlapped.internal = 0 soverlapped.internalhigh = 0 soverlapped.offset = 0 soverlapped.offsethigh = 0 soverlapped.hevent = CreateEvent(0, True, False, 0) Ret = HdlcEventRequestPending(hDevice, 1, dweventbuffer, soverlapped) If Ret = FBIHDLC_ERROR_IO_PENDING Then Ret = WaitForSingleObject(sOverlapped.hEvent, -1) Ret = HdlcReceiveFrame(hDevice, Buffer(0), ulframelength) End If CloseHandle soverlapped.hevent 67

68 var hdevice: THandle; soverlapped: TOverlapped; dweventbuffer: Integer; ulframelength: Integer; Buffer: array[ ] of Byte; Ret: Integer; Ret := HdlcSetEventMask(hDevice, $01, $00); SizeOf(TOverLapped)); soverlapped.hevent := CreateEvent(nil, True, False, nil); Ret := HdlcEventRequestPending(hDevice, 1, if Ret = FBIHDLC_ERROR_IO_PENDING then begin Ret := WaitForSingleObject(sOverlapped.hEvent, -1); Ret := HdlcReceiveFrame(hDevice, Buffer, ulframelength) end; CloseHandle(sOverlapped.hEvent); データ受信のイベント要求を待ちます 68

69 14. HdlcCheckIdle 機能 アイドル状態を取得します 書式 LONG HdlcCheckIdle( HANDLE hdevice, PULONG pulidlestatus ); Declare Function HdlcCheckIdle Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByRef pulidlestatus As Long _ ) As Long function HdlcCheckIdle( hdevice: THandle; pulidlestatus: Integer ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice アイドル状態を取得するデバイスハンドルを指定します pulidlestatus アイドル状態を格納する変数へのポインタを指定します (C 言語 ) アイドル状態を格納する変数を指定します (Visual Basic Delphi) 識別子 値 内容 HDLC_IDLESTATE_INACTIVE 0 アイドル状態でない HDLC_IDLESTATE_ACTIVE 1 アイドル状態 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 備考 本関数は以下のインタフェースモジュールでは使用できません PCI-4116 PCI/CTP-4158 PCI/CTP

70 使用例 HANDLE hdevice; ULONG ulidlestatus; LONG Ret; Ret = HdlcCheckIdle(hDevice, &ulidlestatus); if(ulidlestatus == HDLC_IDLESTATE_ACTIVE) { Ret = HdlcSendFrame(hDevice, " ", 10, 1, NULL); } Dim hdevice As Long Dim ulidlestatus As Long Dim Ret As Long Ret = HdlcCheckIdle(hDevice, ulidlestatus) If ulidlestatus = HDLC_IDLESTATE_ACTIVE Then Ret = HdlcSendFrameString(hDevice, " ", 10, 1, ByVal 0) End If var hdevice: THandle; ulidlestatus: Integer; Ret: Integer; Ret := HdlcCheckIdle(hDevice, ulidlestatus); if ulidlestatus = HDLC_IDLESTATE_ACTIVE then begin Ret := HdlcSendFrame(hDevice, ' ', 10, 1, nil); end; アイドル状態か確認して フレーム送信を行います 70

71 15. HdlcSetIdleTimer 機能 アイドル検出の検出時間を設定します 書式 LONG HdlcSetIdleTimer( HANDLE hdevice, ULONG ulidletimer ); Declare Function HdlcSetIdleTimer Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByVal ulidletimer As Long _ ) As Long function HdlcSetIdleTimer( hdevice: THandle; ulidletimer: Integer ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice アイドル検出時間を設定するデバイスハンドルを指定します ulidletimer アイドル検出時間を us 単位で設定します 範囲は 0~ です 0 に設定した場合 アイドル検出が無効になります 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 備考 1. 本関数で指定した時間 マーク状態 ( 無通信状態 ) を検出するとアイドルとなりイベントを発生させることができます 2. 本関数は以下のインタフェースモジュールでは使用できません PCI-4116 PCI/CTP-4158 PCI/CTP

72 使用例 HANDLE hdevice; LONG Ret; Ret = HdlcSetIdleTimer(hDevice, ); Dim hdevice As Long Dim Ret As Long Ret = HdlcSetIdleTimer(hDevice, ) var hdevice: THandle; Ret: Integer; Ret := HdlcSetIdleTimer(hDevice, ); 1 秒間マーク状態が続くとアイドル検出イベントを発生させます 72

73 16. HdlcGetIdleTimer 機能 アイドル検出の検出時間を取得します 書式 LONG HdlcGetIdleTimer( HANDLE hdevice, PULONG pulidletimer ); Declare Function HdlcGetIdleTimer Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByRef pulidletimer As Long _ ) As Long function HdlcGetIdleTimer( hdevice: THandle; var pulidletimer: Integer ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice アイドル検出時間を取得するデバイスハンドルを指定します pulidletimer アイドル検出時間を格納する変数へのポインタを指定します (C 言語 ) アイドル検出時間を格納する変数を指定します (Visual Basic Delphi) 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 備考 本関数は以下のインタフェースモジュールでは使用できません PCI-4116 PCI/CTP-4158 PCI/CTP

74 使用例 HANDLE hdevice; ULONG ulidletimer; LONG Ret; Ret = HdlcGetIdleTimer(hDevice, &ulidletimer); Dim hdevice As Long Dim ulidletimer As Long Dim Ret As Long Ret = HdlcGetIdleTimer(hDevice, ulidletimer) var hdevice: THandle; ulidletimer: Integer; Ret: Integer; Ret := HdlcGetIdleTimer(hDevice, ulidletimer); アイドル検出時間を取得します 74

75 17. HdlcSetCableTermination 機能 RS-485 終端設定します 書式 LONG HdlcSetCableTermination( HANDLE hdevice, BYTE btermination ); Declare Function HdlcSetCableTermination Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByVal btermination As Byte _ ) As Long function HdlcSetCableTermination( hdevice: THandle; btermination: byte ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice RS-485 終端設定を行うデバイスハンドルを指定します btermination RS-485 終端設定を指定します bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 予約 予約 RT ST I C R T 0 = 終端抵抗を挿入しません 1 = 終端抵抗を挿入します 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 75

76 備考 1. 本関数は以下の CardBus 製品のみ使用できます CBI-4171 CBI-4171A CBI-4171B CBI CBI WA CBI WB 2. CardBus 製品のリビジョン ID によっては 本関数で設定された終端設定値は電源を OFF するとクリアされます 下表の型式 リビジョン ID の製品では 電源を ON するごとに 本関数で終端設定する必要があります リビジョン ID は HdlcCommonGetPciDeviceInfo 関数で取得します 型式リビジョン ID CBI CBI-4171A 1 CBI-4171B 1 使用例 HANDLE hdevice; LONG Ret; Ret = HdlcSetCableTermination(hDevice, 0x2A); Dim hdevice As Long Dim Ret As Long Ret = HdlcSetCableTermination(hDevice, &H2A) var hdevice: THandle; Ret: Integer; Ret := HdlcSetCableTermination(hDevice, $2A); R, I, RT 端子に終端抵抗を挿入します 76

77 18. HdlcGetCableTermination 機能 RS-485 終端設定を取得します 書式 LONG HdlcGetCableTermination( HANDLE hdevice, PBYTE pbtermination ); Declare Function HdlcGetCableTermination Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByRef pbtermination As Byte _ ) As Long function HdlcGetCableTermination( hdevice: THandle; var pbtermination: byte ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice RS-485 終端設定を取得するデバイスハンドルを指定します pbtermination RS-485 終端設定を格納する変数へのポインタを指定します (C 言語 ) RS-485 終端設定を格納する変数を指定します (Visual Basic Delphi) bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 予約予約 RT ST I C R T 0 = 終端抵抗が挿入されていません 1 = 終端抵抗が挿入されています 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 備考 本関数は以下の CardBus 製品のみ使用できます CBI-4171 CBI-4171A CBI-4171B CBI CBI WA CBI WB 77

78 使用例 HANDLE hdevice; BYTE btermination; LONG Ret; Ret = HdlcGetCableTermination(hDevice, &btermination); Dim hdevice As Long Dim btermination As Byte Dim Ret As Long Ret = HdlcGetCableTermination(hDevice, btermination) var hdevice: THandle; btermination: byte; Ret: Integer; Ret := HdlcGetCableTermination(hDevice, btermination); 終端抵抗設定を取得します 78

79 19. HdlcGetTmoduleStatus 機能 HDLC モジュールの接続状態を取得します 書式 LONG HdlcGetTmoduleStatus( HANDLE hdevice, PBYTE pbtmodulestatus ); Declare Function HdlcGetTmoduleStatus Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByRef pbtmodulestatus As Byte _ ) As Long function HdlcGetTmoduleStatus ( hdevice: THandle; var pbtmodulestatus: byte ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice HDLC モジュールの接続状態を取得するデバイスハンドルを指定します pbtmodulestatus HDLC モジュールの接続状態を格納する変数へのポインタを指定します (C 言語 ) HDLC モジュールの接続状態を格納する変数を指定します (Visual Basic Delphi) bit7 bit6 Bit5 bit4 bit3 bit2 bit1 bit0 予約 予約 PWRNG SAFNG 予約 予約 PWROK SAFOK SAFOK 1 現在 HDLC モジュールと接続されています 0 現在 HDLC モジュールと接続されていません PWROK 1 現在 HDLC モジュールの電源電圧は正常です 0 現在 HDLC モジュールの電源電圧が異常です SAFNG 1 前回の本関数実行時から今回の実行までに HDLC モジュールとの切断がありました 0 前回の本関数実行時から今回の実行までに HDLC モジュールとの切断はありませんでした PWRNG 1 前回の本関数実行時から今回の実行までに HDLC モジュールの電源電圧の異常がありました 0 前回の本関数実行時から今回の実行までに HDLC モジュールの電源電圧の異常はありませんでした 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 79

80 備考 本関数は HDLC モジュールでのみ使用できます PCI Q PCI Q PCI Q PCI Q CPZ Q CPZ Q CPZ Q CPZ Q CTP Q CTP Q CTP Q CTP Q 使用例 HANDLE hdevice; BYTE pbtmodulestatus; LONG Ret; Ret = HdlcGetTmoduleStatus(hDevice, & pbtmodulestatus); Dim hdevice As Long Dim pbtmodulestatus As Byte Dim Ret As Long Ret = HdlcGetTmoduleStatus(hDevice, pbtmodulestatus) Var hdevice: THandle; pbtmodulestatus: byte; Ret: Integer; Ret := HdlcGetTmoduleStatus(hDevice, pbtmodulestatus); HDLC モジュールの接続状態を取得します 80

81 20. HdlcSetTmodulePower 機能 HDLC モジュールの電源を制御します 書式 LONG HdlcSetTmodulePower( HANDLE hdevice, BYTE bsetpower ); Declare Function HdlcSetTmodulePower Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByVal bsetpower As Byte _ ) As Long function HdlcSetTmodulePower ( hdevice: THandle; bsetpower: Byte ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice HDLC モジュールの電源制御を行うデバイスハンドルを指定します bsetpower 電源状態を指定します 識別子 値 内容 HDLC_POWER_ON 1 HDLC モジュールの電源を ON にします HDLC_POWER_OFF 0 HDLC モジュールの電源を OFF にします 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 備考 本関数は HDLC モジュールでのみ使用できます PCI Q PCI Q PCI Q PCI Q CPZ Q CPZ Q CPZ Q CPZ Q CTP Q CTP Q CTP Q CTP Q 81

82 使用例 HANDLE hdevice; LONG Ret; Ret = HdlcSetTmodulePower(hDevice, HDLC_POWER_OFF); Dim hdevice As Long Dim Ret As Long Ret = HdlcSetTmodulePower (hdevice, HDLC_POWER_OFF) Var hdevice: Thandle; Ret: Integer; Ret := HdlcSetTmodulePower (hdevice, HDLC_POWER_OFF); HDLC モジュールの電源を OFF にします 82

83 21. HdlcSetFlag 機能 リーディングフラグ / トレーリングフラグの数を設定します 書式 LONG HdlcSetFlag( HANDLE hdevice, BYTE bleading, BYTE btrailing ); Declare Function HdlcSetFlag Lib FbiHdlc.DLL ( _ ByVal hdevice As Long, _ ByVal bleading As Byte, _ ByVal btrailing As Byte _ ) As Long function HdlcSetFlag( hdevice: THandle; bleading: Byte; btrailing: Byte ):Integer; stdcall; external FbiHdlc.DLL ; パラメータ hdevice フラグの数を設定するデバイスハンドルを指定します bleading リーディングフラグの数を指定します デフォルトでは 0( リーディングフラグ無し ) です btrailing トレーリングフラグの数を指定します デフォルトでは 0( トレーリングフラグ無し ) です 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます それ以外の値が返された場合については 戻り値一覧 をご参照ください 備考 フラグ数の設定は送信バッファが空の状態で行ってください また フレーム間にはマーク送信を指定 (HDLCNPORTINTIDATA 構造体の ulinemode に HDLC_TFIL_MARK を OR) してください フラグ送信を指定した場合 フレーム間にフラグが挿入されるため 必ずしも指定のフラグ数とはなりません 本関数は FM 符号化対応製品でのみ使用できます PCI-4172FM, PCI-4172FMU, CPZ-4172FM, PEX FM, PCI-4171FM, CSI FM, CSI FM, CSI FM, LPC FM, PCI FM, PCI FM 83

84 使用例 HANDLE hdevice; HDLCNPORTINITDATA PortInit; LONG Ret; hdevice = HdlcOpen( FBIHDLC1, &PortInit); : : Ret = HdlcSetFlag(hDevice, 2, 2); Dim hdevice As Long Dim PortInit As HDLCNPORTINITDATA Dim Ret As Long hdevice = HdlcOpen( FBIHDLC1, PortInit) : : Ret = HdlcSetFlag(hDevice, 2, 2) var hdevice: THandle; PortInit: HDLCNPORTINITDATA; Ret: Integer; hdevice := HdlcOpen( FBIHDLC1, PortInit); : : Ret := HdlcSetFlag(hDevice, 2, 2); リーディングフラグ / トレーリングフラグをそれぞれ 2 つずつ付加します 84

85 22. HdlcGetFlag 機能 リーディングフラグ / トレーリングフラグの数を取得します 書式 LONG HdlcGetFlag( HANDLE hdevice, PBYTE pbleading, PBYTE pbtrailing ); Declare Function HdlcGetFlag Lib FbiHdlc.DLL ( _ ByVal hdevice As Long, _ ByRef pbleading As Byte, _ ByRef pbtrailing As Byte _ ) As Long function HdlcGetFlag( hdevice: THandle; var pbleading: Byte; var pbtrailing: Byte ):Integer; stdcall; external FbiHdlc.DLL ; パラメータ hdevice フラグの数を取得するデバイスハンドルを指定します pbleading リーディングフラグの数を格納する変数へのポインタを指定します (C 言語 ) リーディングフラグの数を格納する変数を指定します (Visual Basic Delphi) pbtrailing トレーリングフラグの数を格納する変数へのポインタを指定します (C 言語 ) トレーリングフラグの数を格納する変数を指定します (Visual Basic Delphi) 備考 本関数は FM 符号化対応製品でのみ使用できます PCI-4172FM, PCI-4172FMU, CPZ-4172FM, PEX FM, PCI-4171FM, CSI FM, CSI FM, CSI FM, LPC FM, PCI FM, PCI FM 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます それ以外の値が返された場合については 戻り値一覧 をご参照ください 85

86 使用例 HANDLE hdevice; HDLCNPORTINITDATA PortInit; LONG Ret; PBYTE Leading; PBYTE Trailing; hdevice = HdlcOpen( FBIHDLC1, &PortInit); : : Ret = HdlcGetFlag(hDevice, &Leading, &Trailing); Dim hdevice As Long Dim PortInit As HDLCNPORTINITDATA Dim Ret As Long Dim Leading As Byte Dim Trailing As Byte hdevice = HdlcOpen( FBIHDLC1, PortInit) : : Ret = HdlcGetFlag(hDevice, Leading, Trailing) var hdevice: THandle; PortInit: HDLCNPORTINITDATA; Ret: Integer; Leading: Byte; Trailing: Byte; hdevice := HdlcOpen( FBIHDLC1, PortInit); : : Ret := HdlcGetFlag(hDevice, Leading, Trailing); リーディングフラグ / トレーリングフラグの数を取得します 86

87 23. HdlcCommonGetPciDeviceInfo 機能 HDLC インタフェースモジュールのリソース ( デバイス ID リソース情報 リビジョン ID 等 ) 情報を取得します 書式 LONG HdlcCommonGetPciDeviceInfo ( HANDLE hdevice, DWORD *dwdeviceid, DWORD *dwvendorid, DWORD *dwclasscode, DWORD *dwrevisionid, DWORD *dwbaseaddress0, DWORD *dwbaseaddress1, DWORD *dwbaseaddress2, DWORD *dwbaseaddress3, DWORD *dwbaseaddress4, DWORD *dwbaseaddress5, DWORD *dwsubsystemid, DWORD *dwsubsystemvendorid, DWORD *dwinterruptline, DWORD *dwboardid ); Declare Function HdlcCommonGetPciDeviceInfo Lib "FbiHdlc.DLL" ( _ ByVal hdevice As Long, _ ByRef dwdeviceid As Long, _ ByRef dwvendorid As Long, _ ByRef dwclasscode As Long, _ ByRef dwrevisionid As Long, _ ByRef dwbaseaddress0 As Long, _ ByRef dwbaseaddress1 As Long, _ ByRef dwbaseaddress2 As Long, _ ByRef dwbaseaddress3 As Long, _ ByRef dwbaseaddress4 As Long, _ ByRef dwbaseaddress5 As Long, _ ByRef dwsubsystemid As Long, _ ByRef dwsubsystemvendorid As Long, _ ByRef dwinterruptline As Long, _ ByRef dwboardid As Long _ ) As Long 87

88 function HdlcCommonGetStatisticalInformation ( hdevice: Thandle; var dwdeviceid: Integer; var dwvendorid: Integer; var dwclasscode: Integer; var dwrevisionid: Integer; var dwbaseaddress0: Integer; var dwbaseaddress1: Integer; var dwbaseaddress2: Integer; var dwbaseaddress3: Integer; var dwbaseaddress4: Integer; var dwbaseaddress5: Integer; var dwsubsystemid: Integer; var dwsubsystemvendorid: Integer; var dwinterruptline: Integer; var dwboardid: Integer ):Integer; stdcall; external 'FbiHdlc.DLL'; パラメータ hdevice リソース情報を取得するデバイスハンドルを指定します dwdeviceid デバイス ID データを格納する変数へのポインタを指定します (C 言語 ) デバイス ID データを格納する変数を指定します (Visual Basic Delphi) デバイスを区別するための ID です 弊社 PCI CompactPCI バス及び CardBus 用 HDLC 製品は 製品型式の数字部分 4 桁が適用されます PCI-4116 ならば 4116(16 進数では 1014h) CBI ならば 4671(16 進数では 123Fh) です PCI 製品 CompactPCI 製品や CardBus 製品を判別する必要がある場合 dwsubsystemid を参照して下さい デバイス ID から 下記割込みラインまでのデータは PCI Rev2.1 で規定される PCI バス用デバイスが持つデータです ボード ID は弊社のインタフェースモジュール上に実装される RSW1 の値であり PCI バス用デバイスが標準で実装するデータではありません dwvendorid ベンダ ID データを格納する変数へのポインタを指定します (C 言語 ) ベンダ ID データを格納する変数を指定します (Visual Basic Delphi) 弊社のベンダ ID は 1147h(16 進数 ) です dwclasscode クラスコードデータを格納する変数へのポインタを指定します (C 言語 ) クラスコードデータを格納する変数を指定します (Visual Basic Delphi) デバイスのクラスコードが格納されます PCI Rev2.1 で規定されている値が格納されます dwrevisionid リビジョン ID データを格納する変数へのポインタを指定します (C 言語 ) リビジョン ID データを格納する変数を指定します (Visual Basic Delphi) インタフェースモジュールのリビジョン ID が格納されます 88

89 dwbaseaddress0 リソース 0 データを格納する変数へのポインタを指定します (C 言語 ) リソース 0 データを格納する変数を指定します (Visual Basic Delphi) インタフェースモジュールが占有する I/O または メモリ領域が格納されます dwbaseaddress1 リソース 1 データを格納する変数へのポインタを指定します (C 言語 ) リソース 1 データを格納する変数を指定します (Visual Basic Delphi) インタフェースモジュールが占有する I/O または メモリ領域が格納されます dwbaseaddress2 リソース 2 データを格納する変数へのポインタを指定します (C 言語 ) リソース 2 データを格納する変数を指定します (Visual Basic Delphi) インタフェースモジュールが占有する I/O または メモリ領域が格納されます dwbaseaddress3 リソース 3 データを格納する変数へのポインタを指定します (C 言語 ) リソース 3 データを格納する変数を指定します (Visual Basic Delphi) インタフェースモジュールが占有する I/O または メモリ領域が格納されます dwbaseaddress4 リソース 4 データを格納する変数へのポインタを指定します (C 言語 ) リソース 4 データを格納する変数を指定します (Visual Basic Delphi) インタフェースモジュールが占有する I/O または メモリ領域が格納されます dwbaseaddress5 リソース 5 データを格納する変数へのポインタを指定します (C 言語 ) リソース 5 データを格納する変数を指定します (Visual Basic Delphi) インタフェースモジュールが占有する I/O または メモリ領域が格納されます dwsubsystemid サブシステム ID データを格納する変数へのポインタを指定します (C 言語 ) サブシステム ID データを格納する変数を指定します (Visual Basic Delphi) インタフェースモジュールのサブシステム ID が格納されます 4 桁製品 (PCI-4116 等 ) と 6 桁製品 (CBI 等 ) ではサブシステム ID の bit 毎の意味が変わります 4 桁製品と 6 桁製品の区別方法 0h 4 桁製品 bit15~bit13 1h 6 桁製品 4 桁製品での PCI 製品 CompactPCI 製品 CardBus 製品か PCI Express 製品の判別方法 0h PCI 製品 1h CompactPCI 製品 bit11~bit8 2h CardBus 製品 3h PCI Express 製品 6 桁製品での PCI 製品 CompactPCI 製品 CardBus 製品か PCI Express 製品の判別方法 0h PCI 製品 1h CompactPCI 製品 bit12~bit10 2h CardBus 製品 3h PCI Express 製品 89

90 dwsubsystemvendorid サブシステムベンダ ID データを格納する変数へのポインタを指定します (C 言語 ) サブシステムベンダ ID データを格納する変数を指定します (Visual Basic Delphi) インタフェースモジュールのサブシステム ID が格納されます dwinterruptline 割込みラインデータを格納する変数へのポインタを指定します (C 言語 ) 割込みラインデータを格納する変数を指定します (Visual Basic Delphi) インタフェースモジュールが使用する割込みレベルが格納されます dwboardid ボード ID データを格納する変数へのポインタを指定します (C 言語 ) ボード ID データを格納する変数を指定します (Visual Basic Delphi) インタフェースモジュール上に実装されている RSW1 の値が格納されます CardBus カードでは CardBus ID 設定ユーティリティで設定した値が格納されます 備考 PCI-4172FMU で本関数を実行した場合 dwdeviceid dwvenderid dwsybsystemid dwboardid 以外は不定値が取得出来ます 戻り値 正常終了した場合は FBIHDLC_ERROR_SUCCESS が返されます FBIHDLC_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 90

91 使用例 HANDLE hdevice; LONG Ret; DWORD dwdeviceid; DWORD dwvendorid; DWORD dwclasscode; DWORD dwrevisionid; DWORD dwbaseaddress0; DWORD dwbaseaddress1; DWORD dwbaseaddress2; DWORD dwbaseaddress3; DWORD dwbaseaddress4; DWORD dwbaseaddress5; DWORD dwsubsystemid; DWORD dwsubsystemvendorid; DWORD dwinterruptline; DWORD dwboardid; Ret = HdlcCommonGetPciDeviceInfo( hdevice, &dwdeviceid, &dwvendorid, &dwclasscode, &dwrevisionid, &dwbaseaddress0, &dwbaseaddress1, &dwbaseaddress2, &dwbaseaddress3, &dwbaseaddress4, &dwbaseaddress5, &dwsubsystemid, &dwsubsystemvendorid, &dwinterruptline, &dwboardid ); 91

92 Dim hdevice As Long Dim Ret As Long Dim dwdeviceid As Long Dim dwvendorid As Long Dim dwclasscode As Long Dim dwrevisionid As Long Dim dwbaseaddress0 As Long Dim dwbaseaddress1 As Long Dim dwbaseaddress2 As Long Dim dwbaseaddress3 As Long Dim dwbaseaddress4 As Long Dim dwbaseaddress5 As Long Dim dwsubsystemid As Long Dim dwsubsystemvendorid As Long Dim dwinterruptline As Long Dim dwboardid As Long Ret = HdlcCommonGetPciDeviceInfo( hdevicehandle, dwdeviceid, dwvendorid, dwclasscode, dwrevisionid, dwbaseaddress0, dwbaseaddress1, dwbaseaddress2, _ dwbaseaddress3, dwbaseaddress4, dwbaseaddress5, _ dwsubsystemid, dwsubsystemvendorid, dwinterruptline, dwboardid _ ) var hdevice: THandle; Ret: Integer; dwdeviceid : Integer; dwvendorid : Integer; dwclasscode : Integer; dwrevisionid : Integer; dwbaseaddress0 : Integer; dwbaseaddress1 : Integer; dwbaseaddress2 : Integer; dwbaseaddress3 : Integer; dwbaseaddress4 : Integer; dwbaseaddress5 : Integer; dwsubsystemid : Integer; dwsubsystemvendorid : Integer; dwinterruptline : Integer; dwboardid : Integer; Ret := HdlcCommonGetPciDeviceInfo( hdevice, dwdeviceid, dwvendorid, dwclasscode, dwrevisionid, dwbaseaddress0, dwbaseaddress1, dwbaseaddress2, dwbaseaddress3, dwbaseaddress4, dwbaseaddress5, dwsubsystemid, dwsubsystemvendorid, dwinterruptline, dwboardid ); リソース情報を取得します 92

93 24. CallBackProc 機能 イベント発生によってコールされるコールバック関数のプレースホルダです 関数名はポート初期化情報構造体 (HDLCNPORTINITDATA 構造体 ) の lpcallbackproc メンバに渡した関数名となります 書式 (x86) void CallBackProc( DWORD uleventfactor, DWORD hdevicehandle ); (x64) void CallBackProc( DWORD uleventfactor, HANDLE hdevicehandle ); Declare Sub CallBackProc ( _ ByVal uleventfactor As Long, _ ByVal hdevicehandle As Long _ ) procedure CallBackProc( uleventfactor: hdevicehandle: ); stdcall; Integer; Integer 93

94 パラメータ uleventfactor コールバック関数を呼び出した割り込みイベント要因です bit31~bit12 bit11 bit10 bit9 bit8 RS-232C 予約 PWR SAF OVR OVF RS-485 予約 PWR SAF OVR OVF bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 RS-232C CI CS CD DR IDLE ERROR 予約 RD RS-485 予約 I 予約 予約 IDLE ERROR 予約 RD 0 = イベントは発生していません 1 = イベントが発生しました CI = CI 信号の入力状態に変化があったとき CD = CD 信号の入力状態に変化があったとき DR = DR 信号の入力状態に変化があったとき CS = CS 信号の入力状態に変化があったとき I = I 信号の入力状態に変化があったとき IDLE = アイドルを検出したとき ERROR = エラーフレームを受信したとき RD = データを受信し 受信バッファに格納し終わったとき OVF = オーバーフローエラーが発生したとき OVR = オーバーランエラーが発生したとき SAF = HDLC モジュールとのケーブル切断が発生したとき PWR = HDLC モジュールの電源電圧に異常が発生したとき hdevicehandle イベントが発生したデバイスハンドルです 戻り値 なし 94

95 4.3 構造体 1. HDLCNPORTINTIDATA 構造体ポートの初期化情報を設定する構造体です typedef struct { ULONG uformat; ULONG ufcs; ULONG uaddressmode; ULONG uaddress[13]; ULONG ulinemode; ULONG utxc; ULONG urxc; ULONG usourceclock; ULONG ubaudrate; ULONG uinterface; ULONG utxcmode; ULONG usendtiming; ULONG ucsignal; ULONG uclosetiming; HANDLE hwindowhandle; ULONG uwindowsmessage; LPHDLCCALLBACK lpcallbackproc; } HDLCNPORTINITDATA, *PHDLCNPORTINITDATA; Type HDLCNPORTINITDATA uformat ufcs uaddressmode uaddress(12) ulinemode utxc urxc usourceclock ubaudrate uinterface utxcmode usendtiming ucsignal uclosetiming hwindowhandle uwindowsmessage lpcallbackproc End Type As Long As Long As Long As Long As Long As Long As Long As Long As Long As Long As Long As Long As Long As Long As Long As Long As Long 1999, 2009 Interface Corporation. All rights reserved. 95

96 type HDLCNPORTINITDATA = record uformat: Integer; ufcs: Integer; uaddressmode: Integer; uaddress: array[0..12] of Integer; ulinemode: Integer; utxc: Integer; urxc: Integer; usourceclock: Integer; ubaudrate: Integer; uinterface: Integer; utxcmode: Integer; usendtiming: Integer; ucsignal: Integer; uclosetiming: Integer; hwindowhandle: THandle; uwindowsmessage: Integer; lpcallbackproc: pointer; End Type メンバ uformat 説明 符号化フォーマットの種類を選択します 識別子 値 内容 HDLC_FORMAT_NRZI 0 NRZI HDLC_FORMAT_NRZ 1 NRZ HDLC_FORMAT_FM0 2 FM0 *1) HDLC_FORMAT_FM1 3 FM1 *1) FM0 FM1 を設定した際は 自動で送信クロックは内部クロック 受信クロッ クは外部クロック (RT から入力したクロック ) が設定されます *1) FM 符号化対応製品でのみ指定できます PCI-4172FM, PCI-4172FMU, CPZ-4172FM, PEX FM, PCI-4171FM, CSI FM, CSI FM, CSI FM, LPC FM, PCI FM, PCI FM 96

97 ufcs uaddressmode uaddress FCS 生成多項式の種類を選択します 識別子 値 内容 HDLC_FCS_16 0 ITU-T( 旧 CCITT)16bit X 16 +X 12 +X 5 +1 HDLC_FCS_32 1 ITU-T( 旧 CCITT)32bit X 32 +X 26 +X 23 +X 22 +X 16 +X 12 +X 11 +X 10 +X 8 +X 7 +X 5 +X 4 +X 2 +X 1 +1) HDLC_FCS_ANSI16 2 ANSI 16bit X 16 +X 15 +X 2 +1 HDLC_FCS_16, HDLC_FCS_32 の CRC 演算器初期値はオール "1" です HDLC_FCS_ANSI16 の CRC 演算器初期値はオール "0" です HDLC_FCS_ANSI16 は PCI-4116, PCI/CTP-4158, PCI/CTP-4159 では使用できません アドレスの扱いを選択します 識別子 値 内容 HDLC_ADDRESS_NONE 0 アドレス検出は行わない ( 全てのフレームを受信する ) HDLC_ADDRESS_AUTO1 1 受信フレームの先頭のデータをアドレスとして処理する HDLC_ADDRESS_AUTO2 2 受信フレームの 2 バイト目をアドレスとして処理する HDLC_ADDRESS_AUTO3 3 受信フレームの先頭から 2 バイトをアドレスとして処理する HDLC_ADDRESS_AUTO2 は PCI-4116, PCI/CTP-4158, PCI/CTP-4159 のみ有効 検出するアドレスを指定します uladdress[0] に使用するアドレスの個数を代入し uladdress[1]~ にアドレスを代入してください uaddressmode が 0 の時は無効です 97

98 ulinemode 以下の3つの設定を行います 全二重/ 半二重の選択を行います 識別子 値 内容 HDLC_LINE_FULL 0 全二重 HDLC_LINE_HALF HDLC_LINE_HALF2 1 2 半二重モード RS 信号 (C 信号 ) は送信と同期させません 半二重モード RS 信号 (C 信号 ) と送信を同期させます RS-232C RS 信号を送信データと同期させます フレーム送信前に RS 信号を ON にし フレ ーム送信後 RS 信号を OFF にします RS-485 C 信号を送信データと同期させます フレーム送信前に C 信号を ON にし フレ ーム送信後 C 信号を OFF にします PCI-4171(RS-232C 使用時 ) ではリビジョン ID が 3 以上 PCI CPZ ではリビジョン ID が 2 以上の製品で HDLC_LINE_HALF2 を指定 して RS 信号の自動制御ができます リビジョン ID がこれら未満の製品では HDLC_LINE_HALF2 を指定しても RS 信号は自動的に制御されません RS 信号を制御する必要がある場合には HDLC_LINE_HALF に設定し HdlcSetControlLine 関数にて制御してください リビジョン ID は HdlcCommonGetPciDeviceInfo 関数で取得できます フラグ送信/ マーク送信の選択を行います 識別子 値 内容 HDLC_TFIL_FLAG 0 送信フレーム間のギャップ期間中 ( 終結フラグと次のフレームの先頭フラグの間 ) にフラグが挿入されます HDLC_TFIL_MARK 10000h 送信フレーム間のギャップ期間中 ( 終結フラグと次のフレームの先頭フラグの間 ) にマークが挿入されます エラーフレームを受信するかどうか選択します PCI-4116, PCI/CTP-4158, PCI/CTP-4159 は本パラメータは無効です 識別子 値 内容 HDLC_REJECT_ERRORFRAME 0 エラーフレームを破棄します HDLC_ACCEPT_ERRORFRAME h エラーフレームを受信します 98

99 utxc urxc usourceclock ubaudrate uinterface 送信クロックの種類を選択します (uformat が HDLC_FORMAT_NRZI HDLC_FORMAT_NRZ のみ有効 ) 識別子 値 内容 HDLC_SCLK_PTC 1 内部クロック HDLC_SCLK_ST 2 外部クロック (ST から入力したクロック ) HDLC_SCLK_RT 4 外部クロック (RT から入力したクロック ) 符号化フォーマットを FM0,FM1 に設定した際は 自動で内部クロックに設定 されます 受信クロックの種類を選択します (uformat が HDLC_FORMAT_NRZI HDLC_FORMAT_NRZ のみ有効 ) 識別子 値 内容 HDLC_RCLK_RT 1 外部クロック (RT から入力したクロック ) HDLC_RCLK_DPLL 2 DPLL 符号化フォーマットを FM0,FM1 に設定した際は 自動で外部クロック (RT から 入力したクロック ) に設定されます ビットレート生成用クロックの種類を選択します 識別子 値 内容 HDLC_CLOCK_ MHz HDLC_CLOCK_ MHz HDLC_CLOCK_ MHz HDLC_CLOCK_ MHz HDLC_CLOCK_ MHz HDLC_CLOCK_ MHz HDLC_CLOCK_ MHz HDLC_CLOCK_ MHz インタフェースモジュールにより サポートされているクロックが異なります ハードウェアマニュアルの ハードウェア仕様 基準クロック をご確認 下さい 通信速度を設定します RS-232C 128bps~ bps(1Mbps) RS bps~ bps(4Mbps) 符号化フォーマットを FM0,FM1 に設定する場合 内部クロック使 用する場合 128bps~ bps(2Mbps) です インタフェースモジュールにより 設定可能範囲が異なります 送信クロック 受信クロックとも外部クロックに設定された場合この設定値 は無視されます 物理インタフェースの種類を選択します 識別子 値 内容 HDLC_INTERFACE_232C 0 RS-232C HDLC_INTERFACE_485 1 RS

100 utxcmode usendtiming 送信クロック出力モードを指定します (RS-485 時のみ有効 ) 識別子 値 内容 HDLC_STOUT_NONE 0 常に出力しない HDLC_STOUT_ALWAYS 1 常に出力する HDLC_STOUT_SYNC 2 送信に同期させる ( 全二重時無効 ) 送信前切り替え時間を指定します (ulinemode が HDLC_LINE_HALF HDLC_LINE_HALF2 のみ有効 ) 製品型式 設定範囲 説明 PCI-4116, PCI/CTP-4158, PCI/CTP ~ ms 単位で設定が可能です (0~655350ms) それ以外 0~199 10ms 単位で設定が可能です (0~1990ms) 設定できる最大時間は通信速度によって 以下のように変化します 設定できる最大時間 [s] = 255/ 通信速度 [bps] 設定したい時間が 1ms 未満の場合は 識別子 HDLC_TIME_MICRO_SEC をつかって 1μs 単位で設定することもできます 設定時間の例説明 30 30ms に設定 HDLC_TIME_MICRO_SEC μs に設定 時間の最小単位は 1/ 通信速度 [bps] になります 時間は最小単位で切り上げられます 設定時間に設定できる最大時間を超えた時間を設定すると 設定できる最大時間に変更されます 1μs 単位に設定した際の設定範囲は 0~999μs です ucsignal uclosetiming hwindowshandle uwindowsmessage lpcallbackproc RS 信号 (C 信号 ) の初期化時の状態を指定します 識別子 値 内容 HDLC_CSIG_OFF 0 OFF にします HDLC_CSIG_ON 1 ON にします 送信後切り替え時間を指定します (ulinemode が HDLC_LINE_HALF HDLC_LINE_HALF2 のみ有効 ) 設定可能範囲は usendtiming と同じです イベント発生時メッセージを送るウィンドウハンドルを指定します メッセージを使用しないときは NULL または 0 を指定します イベント発生時に送られるメッセージを指定します メッセージを使用しないときは 0 を指定します イベント発生時に呼び出されるコールバックルーチンへのポインタを指定します コールバックルーチンを使用しないときは NULL または 0 を指定します 100

101 2. HDLCNPORTSTATUS 構造体送受信の現在の状況を示す構造体です typedef struct { ULONG usendframe; ULONG usendfreeblock; ULONG ureceiveframe; ULONG ureceivefreeblock; } HDLCNPORTSTATUS, *PHDLCNPORTSTATUS; Type HDLCNPORTSTATUS usendframe usendfreeblock ureceiveframe ureceivefreeblock End Type As Long As Long As Long As Long type HDLCNPORTSTATUS = record usendframe: Integer; usendfreeblock: Integer; ureceiveframe: Integer; ureceivefreeblock: Integer; end; メンバ 説明 usendframe 送信待ちのフレーム数 (0~128 の値 ) usendfreeblock 空き送信ブロック数 (0~128 の値 ) ureceiveframe 受信しているフレーム数 (0~128 の値 ) ureceivefreeblock 空き受信ブロック (0~128 の値 ) 備考 HDLC インタフェースモジュールは最大 バイトまでのフレームを受信することができますが 受信フレームのサイズに応じて使用されるブロック数が変化します 8 バイト以下のフレームは受信バッファを消費しません ( ドライバの内部では保持していますが インタフェースモジュール上の受信バッファは使用しません ) それ以上のフレームは 9 バイト目からが受信バッファに格納されます 101

102 受信バッファの容量は バイトですが 内部で各 4096 バイトのブロックで管理されています ひとつのブロックは 4096 バイトなので 4096 バイト以下のフレームを受信しても 4096 バイトのブロックをひとつ消費します また 10K バイトのフレームを受信した場合は 4096 バイト バイト バイト =10240 バイトとなり 3 ブロックを消費します 4096 バイト以下のフレームだけを連続で受信した場合 128 フレームを蓄えることができます 例 ) 順番に 4096 バイト バイト 7168 バイト 4096 バイトのフレームを受信したとき 受信バッファ内では以下のように格納されています 4096 バイト ( ) バイト (7168-8) バイト (4096-8) バイト (2048-8) バイト この場合 使用されている受信バッファは 7 ブロック ( = バイト ) 残りは 121 ブロック ( = バイト ) となります HdlcGetFrameCount で得られるフレーム数は 4 となり HdlcGetFrameLength で得られる先頭フレームのサイズは 2048 となります 102

103 4.4 戻り値一覧 エラー識別子値意味対処方法 FBIHDLC_ERROR_SUCCESS 0 正常終了 FBIHDLC_ERROR_NOT_DEVICE C h ドライバが呼び出せま せん FBIHDLC_ERROR_INVALID_HANDLE C h デバイスハンドルが正 しくありません FBIHDLC_ERROR_IO_PENDING C h 非同期 I/O 操作が進行 中です FBIHDLC_ERROR_NOT_SUPPORTED C h サポートしていない機能です FBIHDLC_ERROR_PARAMETER C h 引数パラメータの値が不正です FBIHDLC_ERROR_NULL_POINTER C h 引数に NULL ポインタが指定されています FBIHDLC_ERROR_USB_TIMEOUT C h USB デバイスとの通信がタイムアウトしました FBIHDLC_ERROR_USBIO_FAILED C h USB デバイスの実行に失 敗しました FBIHDLC_ERROR_FRAME_SIZE C h 送 受信のサイズが異常です FBIHDLC_ERROR_BUFFER_FULL C h 送信バッファに空きが ありません FBIHDLC_ERROR_NO_RESPONSE C h 通信コントローラから の応答がありません FBIHDLC_ERROR_FCSERRORFRAME C h FCS エラーフレームを受信しました FBIHDLC_ERROR_SHORTFRAME C h SHORT フレームを受信し ました 指定されたデバイスが見つかりませんでした 指定しているデバイス名が存在するかどうかを確認してください 不正なデバイスハンドルで呼び出しを行おうとしました HdlcOpen 関数で返されたデバイスハンドルを使用してください Win32API の WaitForSingleObject() 等でイベントの完了を待つことができます API 関数に指定する値が不正もしくは範囲外です 再起動を行なうか DPC-0401 の IfUsbDevicePowerCtl 関数を使用し USB デバイスの電源を OFF ON して下さい IfUsbDevicePowerCtl 関数の使用方法は DPC-0401 の Help を参照してください 再起動を行なうか DPC-0401 の IfUsbDevicePowerCtl 関数を使用し USB デバイスの電源を OFF ON して下さい IfUsbDevicePowerCtl 関数の使用方法は DPC-0401 の Help を参照してください API 関数に指定する値が不正もしくは範囲外です 現在送信中のフレームの送信がおわり バッファに空きが出るまで待ってください HdlcClearBuffer 関数でバッファをクリアしてください インタフェースモジュールの故障が考えられます 弊社技術支援課までお問い合わせください 103

104 FBIHDLC_ERROR_LONGFRAME C h LONG フレームを受信しました FBIHDLC_ERROR_ABORTFRAME C h ABORT フレームを受信しました FBIHDLC_ERROR_NOADDRESSFRAME C h 指定したアドレスが検出できないフレームを受信しました FBIHDLC_ERROR_TERMINAL C h 端子台に異常があります 端子台の電源電圧に異常があるか 端子台が接続されていません または正しくない組み合わせの端子台が接続されています 正しい組み合わせの端子台を接続してください 104

105 第 5 章リファレンス ( 汎用 DIO 部 ) 5.1 関数一覧 No 関数名 機能 1 SdioOpen HDLC モジュールのデジタル入出力デバイスのオープンを行い 以後のアクセスを行えるようにします 2 SdioClose HDLC モジュールのデジタル入出力デバイスのクローズを行い アクセスのために使用されていた各種リソースの解放を行い 以後のアクセスを禁止します 3 SdioInputPoint 任意の点数の入力接点の状態を読み込みます 4 SdioOutputPoint 任意の点数の出力接点の出力を制御します 5 SdioInputByte 指定した 8 点の入力接点の状態を読み込みます (BYTE アクセス ) 6 SdioInputWord 指定した 16 点の入力接点の状態を読み込みます (WORD アクセス ) 7 SdioInputDword 指定した 32 点の入力接点の状態を読み込みます (DWORD アクセス ) 8 SdioOutputByte 指定した 8 点の出力接点の出力を制御します (BYTE アクセス ) 9 SdioOutputWord 指定した 16 点の出力接点の出力を制御します (WORD アクセス ) 10 SdioOutputDword 指定した 32 点の出力接点の出力を制御します (DWORD アクセス ) 11 SdioSetLatchLogic 入力信号をラッチする STB 信号の論理を指定します 12 SdioGetLatchLogic 入力信号をラッチする STB 信号の論理を取得します 13 SdioInputLatchPoint 任意の点数のラッチされた入力接点の状態を読み込みます 14 SdioInputLatchByte ラッチされた 8 点の入力接点の状態を読み込みます (BYTE アクセス ) 15 SdioInputLatchWord ラッチされた 16 点の入力接点の状態を読み込みます (WORD アクセス ) 16 SdioInputLatchDword ラッチされた 32 点の入力接点の状態を読み込みます (DWORD アクセス ) 17 SdioSetEvent STB 信号の変化による割り込みが発生したときに実行するイベントを指定します 18 SdioSetEventLogic STB 信号の割り込み発生論理を設定します 19 SdioGetEventLogic STB 信号の割り込み発生論理の設定を取得します 20 SdioGetTmoduleStatus HDLC モジュールの接続状態を取得します 21 SdioSetTmodulePower HDLC モジュールの電源を制御します 22 SdioCommonGetDeviceInfo デバイスのリソース情報を取得します 23 CallBackProc STB 信号の割り込み発生によってコールされるコールバック関 数のプレースホルダです 105

106 5.2 関数個別説明 1. SdioOpen 機能 HDLC モジュールのデジタル入出力デバイスのオープンを行い 以後のデバイスへのアクセスを行えるようにします Windows NT 以外の OS では デバイスマネージャ に IfSDio が追加され認識された弊社 HDLC モジュールのデジタル入出力デバイスが一覧表示されます 一覧の製品型式の横にインタフェースモジュール上の RSW1 の値とデバイス名が表示されます DI 入力ユーティリティ DO 出力ユーティリティでも確認できます デバイス名は使用するボード枚数やスロット位置の変更等でシステム構成が変化すると割り当てられる名前が変化する場合があります システム構成が変化する環境でご使用になる場合は デバイス名の指定が変更できるようにアプリケーションを作成ください 書式 HANDLE SdioOpen ( LPCTSTR ); lpszname Declare Function SdioOpen Lib "IfSdio.DLL"( ByVal lpszname As String )As Long function SdioOpen( lpszname: String ):THandle; stdcall; external 'IfSdio.DLL'; パラメータ lpszname オープンするデバイス名を指定します 戻り値 関数が正常に終了した場合には 有効なハンドルが返されます 他の関数は 本関数により取得したハンドルを使用してデバイスの制御を行います オープンに失敗した場合には INVALID_HANDLE_VALUE(-1) が返されます 106

107 使用例 HANDLE hdevicehandle; hdevicehandle = SdioOpen("IFSDIO1"); if(hdevicehandle == INVALID_HANDLE_VALUE){ /* オープンに失敗 */ printf("fail to open the port\n"); } Dim hdevicehandle As Long hdevicehandle = SdioOpen("IFSDIO1") If hdevicehandle = -1 Then ' オープンに失敗 MsgBox("Fail to open the port") End If var hdevicehandle: THandle; begin // ポート初期化 hdevicehandle := SdioOpen('IFSDIO1'); if hdevicehandle = INVALID_HANDLE_VALUE then begin // オープンに失敗 MessageDlg('Fail to open the port', mtinformation, [mbok], 0); end; end; デバイス名 "IFSDIO1" の HDLC モジュールのデジタル入出力デバイスをオープンし 変数 hdevicehandle にデバイスハンドルを返します 107

108 2. SdioClose 機能 HDLC モジュールのデジタル入出力デバイスのクローズを行い HDLC モジュールのデジタル入出力デバイスへアクセスのために使用されていた各種リソースの解放を行い 以後の HDLC モジュールのデジタル入出力デバイスへのアクセスを禁止します 書式 INT SdioClose( HANDLE ); hdevicehandle Declare Function SdioClose Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long ) As Long function SdioClose( hdevicehandle: Thandle ) : DWORD; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください 戻り値 SdioClose 関数は処理が正常終了した場合は IFSDIO_ERROR_SUCCESS が返されます 正常に処理が終了しなかった場合 IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 備考 再度 HDLC モジュールのデジタル入出力デバイスへのアクセスを行う場合にはオープン処理 (SdioOpen 関数 ) を呼び出してください 108

109 使用例 nret = SdioClose( hdevicehandle ); nret = SdioClose( hdevicehandle ) nret := SdioClose( hdevicehandle ); デバイスハンドル hdevicehandle の HDLC モジュールのデジタル入出力デバイスのクローズ処理を行います 109

110 3. SdioInputPoint 機能 任意の点数の入力接点の状態を読み込みます 指定した開始接点番号から 1 接点ずつ変数に格納されます 書式 LONG SdioInputPoint ( HANDLE PBYTE DWORD DWORD ); hdevicehandle, PbBuffer, DwStartNum, dwninputnum Declare Function SdioInputPoint Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByRef PbBuffer As Byte, ByVal DwStartNum As Long, ByVal dwninputnum As Long ) As Long function SdioInputPoint( HDeviceHandle: THandle; PbBuffer: pointer; DwStartNum: Integer; DwnInputNum: Integer ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください pbuffer デバイスから読み取ったデータを受け取るバッファを指すポインタです dwstartnum 入力開始接点番号 1~24 を指定してください 入力接点の指定と 信号は下記のように対応しています 接点番号 入力信号 IN1 IN2 IN3 IN23 IN24 1: Low レベル 0:High レベル 110

111 dwinputnum 入力接点数を指定してください 戻り値 SdioInputPoint 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 使用例 HANDLE hdevicehandle; LONG nret; BYTE bbuffer[8]; nret = SdioInputPoint( hdevicehandle, &bbuffer[0], 16, 8 ); Dim hdevicehandle As Long Dim nret As Long Dim bbuffer(8) As Byte nret = SdioInputPoint( hdevicehandle, bbuffer(0), 16, 8 ) Var hdevicehandle: THandle; nret: Integer; bbuffer: Array[0..7] of Byte; begin nret := SdioInputPoint( 16, 8 ); end; デバイスハンドル hdevicehandle が示すデバイスの IN16~IN23 の状態を bbuffer[0...7] に入力します 111

112 4. SdioOutputPoint 機能 任意の点数の出力接点の出力を制御します 指定した開始接点番号から 1 接点づつ変数に格納されたデータで接点を制御します 書式 LONG SdioOutputPoint( HANDLE PBYTE DWORD DWORD ); hdevicehandle, pbbuffer, dwstartnum, dwoutputnum Declare Function SdioOutputPoint Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByRef pbbuffer As Byte, ByVal dwstartnum As Long, ByVal dwoutputnum As Long ) As Long function SdioOutputPoint ( hdevicehandle Thandle; pbbuffer pointer; dwstartnum DWORD; dwoutputnum DWORD ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください pbbuffer デバイスから出力させるデータを収めている変数へのポインタです dwstartnum 出力開始接点番号 1~24 を指定してください 出力接点の指定と 信号は下記のように対応しています 接点番号 出力信号 OUT1 OUT2 OUT3 OUT23 OUT24 1: Low レベル 0:High レベル 112

113 dwoutputnum 出力接点数を指定してください 戻り値 SdioOutputPoint 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 使用例 HANDLE hdevicehandle; LONG hret; BYTE bbuffer[8]; bbuffer[0] = 1; bbuffer[1] = 0; bbuffer[2] = 0; bbuffer[3] = 1; bbuffer[4] = 0; bbuffer[5] = 1; bbuffer[6] = 1; bbuffer[7] = 0; nret = SdioOutputPoint( hdevicehandle, &bbuffer[0], 16, 8 ); Dim hdevicehandle As Long Dim nret As Long Dim bbuffer(8) As Byte bbuffer(0) = 1 bbuffer(1) = 0 bbuffer(2) = 0 bbuffer(3) = 1 bbuffer(4) = 0 bbuffer(5) = 1 bbuffer(6) = 1 bbuffer(7) = 0 nret = SdioOutputPoint( hdevicehandle, bbuffer(0), 16, 8 ) 113

114 Var hdevicehandle: THandle; nret: Integer; bbuffer: array[0..7] of Byte begin bbuffer[0] := 1; bbuffer[1] := 0; bbuffer[2] := 0; bbuffer[3] := 1; bbuffer[4] := 0; bbuffer[5] := 1; bbuffer[6] := 1; bbuffer[7] := 0; nret := SdioOutputPoint( 16, 8 ); end; デバイスハンドル hdevicehandle が示すデバイスの OUT16~OUT23 に bbuffer[0...7] の値を出力します 114

115 5. SdioInputByte 機能 接点 8 点分のデータを読み込み 1 バイト (8 ビット ) の変数に格納します 書式 LONG SdioInputByte ( HANDLE DWORD PBYTE ); hdevicehandle, dwinputno, pbvalue Declare Function SdioInputByte Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByVal dwinputno As Long, ByRef pbvalue As Byte ) As Long function SdioInputByte( hdevicehandle: Thandle; dwinputno: DWORD; var pbvalue: Byte ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください dwinputno 読み込む接点を下記の識別子で指定します 定数 意味 IFSDIO_IN1_8 IN1~IN8 の 8 点分のデータを読み込みます IFSDIO_IN9_16 IN9~IN16 の 8 点分のデータを読み込みます IFSDIO_IN17_24 IN17~IN24 の 8 点分のデータを読み込みます pbvalue 読み込まれたデータを格納する変数へのポインタを指定してください 戻り値 SdioInputByte 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 115

116 備考 取得したデータは下記のようにビット毎に接点と対応しています ビット Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 IFSDIO_IN1_8 IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1 IFSDIO_IN9_16 IN16 IN15 IN14 IN13 IN12 IN11 IN10 IN9 IFSDIO_IN17_24 IN24 IN23 IN22 IN21 IN20 IN19 IN18 IN17 1:Low レベル 0:High レベル 使用例 HANDLE hdevicehandle; LONG nret; BYTE bvalue; nret = SdioInputByte( hdevicehandle, IFSDIO_IN1_8, &bvalue ); Dim hdevicehandle As Long Dim nret As Long Dim bvalue As Byte nret = SdioInputByte( hdevicehandle, IFSDIO_IN1_8, bvalue ) var hdevicehandle: THandle; nret: Integer; bvalue: Byte; begin nret := SdioInputByte( hdevicehandle, IFSDIO_IN1_8, bvalue ); end; デバイスハンドル hdevicehandle が示すデバイスの IN1~IN8 の状態を bvalue に入力します 116

117 6. SdioInputWord 機能 接点 16 点分のデータを読み込み 1 ワード (16 ビット ) の変数に格納します 書式 LONG SdioInputWord ( HANDLE DWORD PWORD ); hdevicehandle, dwinputno, pwvalue Declare Function SdioInputWord Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByVal dwinputno As Long, ByRef pwvalue As Integer ) As Long function SdioInputWord ( hdevicehandle: Thandle; dwinputno: DWORD; var pwvalue: Word ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください dwinputno 読み込む接点を下記の識別子で指定します 定数意味 IFSDIO_IN1_16 IN1~IN16 の 16 点分のデータを読み込みます IFSDIO_IN17_32 IN17~IN32 の 16 点分のデータを読み込みます 24 点入力の端子台では IN25~IN32 のデータは取得できません またここのデータは全て 0 になります pwvalue 読み込まれたデータを格納する変数へのポインタを指定してください 戻り値 SdioInputWord 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 117

118 備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット Bit15 Bit14 Bit13 Bit2 Bit1 Bit0 IFSDIO_IN1_16 IN16 IN15 IN14 IN3 IN2 IN1 IFSDIO_IN17_32 IN32 IN31 IN30 IN19 IN18 IN17 1:Low レベル 0:High レベル 使用例 HANDLE hdevicehandle; LONG nret; WORD wvalue; nret = SdioInputWord( hdevicehandle, IFSDIO_IN1_16, &wvalue ); Dim hdevicehandle As Long Dim nret As Long Dim wvalue As Integer nret = SdioInputWord( hdevicehandle, IFSDIO_IN1_16, wvalue ) Var hdevicehandle: THandle; nret: Integer; wvalue: Word; Begin nret := SdioInputWord( hdevicehandle, IFSDIO_IN1_16, wvalue ); end; デバイスハンドル hdevicehandle が示すデバイスの IN1~IN16 の状態を wvalue に入力します 118

119 7. SdioInputDword 機能 接点 32 点分のデータを読み込み 1 ダブルワード (32 ビット ) の変数に格納します 書式 LONG SdioInputDword ( HANDLE DWORD PDWORD ); hdevicehandle, dwinputno, pdwvalue Declare Function SdioInputDword Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByVal dwinputno As Long, ByRef pdwvalue As Long ) As Long function SdioInputDword ( hdevicehandle: Thandle; dwinputno: DWORD; var pdwvalue: DWORD ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください dwinputno 読み込む接点を下記の識別子で指定します 定数意味 IFSDIO_IN1_32 IN1~IN32 の 32 点分のデータを読み込みます 24 点入力の端子台では IN25~IN32 のデータは取得できません またここのデータは全て 0 になります pdwvalue 読み込まれたデータを格納する変数へのポインタを指定してください 戻り値 SdioInputDword 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 119

120 備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット Bit31 Bit30 Bit29 Bit2 Bit1 Bit0 IFSDIO_IN1_32 IN32 IN31 IN30 IN3 IN2 IN1 1:Low レベル 0:High レベル 使用例 HANDLE hdevicehandle; LONG nret; DWORD dwvalue; nret = SdioInputDword( hdevicehandle, IFSDIO_IN1_32, &dwvalue ); Dim hdevicehandle As Long Dim nret As Long Dim dwvalue As Long nret = SdioInputDword( hdevicehandle, IFSDIO_IN1_32, dwvalue ) Var hdevicehandle: THandle; nret: Integer; dwvalue: DWord; Begin nret := SdioInputDword( hdevicehandle, IFSDIO_IN1_32, dwvalue ); end; デバイスハンドル hdevicehandle が示すデバイスの IN1~IN32 の状態を dwvalue に入力します 120

121 8. SdioOutputByte 機能 接点 8 点分の出力を制御します 書式 LONG SdioOutputByte ( HANDLE DWORD BYTE ); hdevicehandle, dwoutputno, bvalue Declare Function SdioOutputByte Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByVal dwoutputno As Long, ByVal bvalue As Byte ) As Long function SdioOutputByte ( hdevicehandle: Thandle; dwoutputno: DWORD; bvalue: Byte ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください dwoutputno データを出力する接点を下記の識別子で指定します 定数 意味 IFSDIO_OUT1_8 OUT1~OUT8 の 8 点分のデータを出力します IFSDIO_OUT9_16 OUT9~OUT16 の 8 点分のデータを出力します IFSDIO_OUT17_24 OUT17~OUT24 の 8 点分のデータを出力します bvalue 指定した接点へ出力するデータを指定してください 戻り値 SdioOutputByte 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 121

122 備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 IFSDIO_OUT1_8 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 IFSDIO_OUT9_16 OUT16 OUT15 OUT14 OUT13 OUT12 OUT11 OUT10 OUT9 IFSDIO_OUT17_24 OUT24 OUT23 OUT22 OUT21 OUT20 OUT19 OUT18 OUT17 1:Low レベル 0:High レベル 使用例 HANDLE hdevicehandle; LONG nret; nret = SdioOutputByte( hdevicehandle, IFSDIO_OUT1_8, 0x12); Dim hdevicehandle As Long Dim nret As Long nret = SdioOutputByte( hdevicehandle, IFSDIO_OUT1_8, &h12 ) var ndevicehandle: THandle; hret: Integer; begin hret := SdioOutputByte( ndevicehandle, IFSDIO_OUT1_8, $12 ); end; デバイスハンドル hdevicehandle が示すデバイスの OUT1~OUT8 へ 12h を出力します 122

123 9. SdioOutputWord 機能 接点 16 点分の出力を制御します 書式 LONG SdioOutputWord ( HANDLE DWORD WORD ); hdevicehandle, dwoutputno, pwvalue Declare Function SdioOutputWord Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByVal dwoutputno As Long, ByVal pwvalue As Integer ) As Long function SdioOutputWord ( hdevicehandle: Thandle; dwoutputno: DWORD; pwvalue: Word ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください dwinputno データを出力する接点を下記の識別子で指定します 定数意味 IFSDIO_OUT1_16 OUT1~OUT16 の 16 点分のデータを出力します IFSDIO_OUT17_32 OUT17~OUT32 の 16 点分のデータを出力します 24 点出力の端子台では OUT25~OUT32 から出力できません pwvalue 指定した接点へ出力するデータを指定してください 戻り値 SdioOutputWord 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 123

124 備考 取得したデータは下記のようにビット毎に接点と対応しています ビット Bit15 Bit14 Bit13 Bit2 Bit1 Bit0 IFSDIO_OUT1_16 OUT16 OUT15 OUT14 OUT3 OUT2 OUT1 IFSDIO_OUT17_32 OUT32 OUT31 OUT30 OUT19 OUT18 OUT17 1:Low レベル 0:High レベル 使用例 HANDLE hdevicehandle; LONG nret; nret = SdioOutputWord( hdevicehandle, IFSDIO_OUT1_16, 0x1234 ); Dim hdevicehandle As Long Dim nret As Long nret = SdioOutputWord( hdevicehandle, IFSDIO_OUT1_16, &h1234 ) Var hdevicehandle: THandle; nret: Integer; Begin nret := SdioOutputWord( hdevicehandle, IFSDIO_OUT1_16, $1234 ); end; デバイスハンドル hdevicehandle が示すデバイスの OUT1~OUT16 へ 1234h を出力します 124

125 10. SdioOutputDword 機能 接点 32 点分の出力を制御します 書式 LONG SdioOutputDword ( HANDLE DWORD DWORD ); hdevicehandle, dwoutputno, dwvalue Declare Function SdioOutputDword Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByVal dwoutputno As Long, ByVal dwvalue As Long ) As Long function SdioOutputDword ( hdevicehandle: Thandle; dwoutputno: DWORD; dwvalue: DWORD ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください dwoutputno データを出力する接点を下記の識別子で指定します 定数意味 IFSDIO_OUT1_32 OUT1~OUT32 の 32 点分のデータを出力します 24 点出力の端子台では OUT25~OUT32 から出力できません dwvalue 指定した接点へ出力するデータを指定してください 戻り値 SdioOutputDword 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 125

126 備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット Bit31 Bit30 Bit29 Bit2 Bit1 Bit0 IFSDIO_OUT1_32 OUT32 OUT31 OUT30 OUT3 OUT2 OUT1 1:Low レベル 0:High レベル 使用例 HANDLE hdevicehandle; LONG nret; nret = SdioOutputDword( hdevicehandle, IFSDIO_OUT1_32, 0x123456); Dim hdevicehandle As Long Dim nret As Long nret = SdioOutputDword( hdevicehandle, IFSDIO_OUT1_32, &h ) Var hdevicehandle: THandle; nret: Integer; Begin nret := SdioOutputDword( hdevicehandle, IFSDIO_OUT1_32, $ ); end; デバイスハンドル hdevicehandle が示すデバイスの OUT1~OUT32 へ h を出力します 126

127 11. SdioSetLatchLogic 機能 入力信号をラッチする STB 信号の論理を指定します 書式 LONG SdioSetLatchLogic ( HANDLE hdevicehandle, BYTE blatchlogic ); Declare Function SdioSetLatchLogic Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByVal blatchlogic As Byte ) As Long function SdioSetLatchLogic ( hdevicehandle: Thandle; blatchlogic: Byte ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください blatchlogic 入力信号をラッチする STB 信号の論理を以下の識別子で指定します 定数意味 IFSDIO_RISE_EDGE STB 信号の立ち上がりでラッチします IFSDIO_FALL_EDGE STB 信号の立ち下がりでラッチします 戻り値 SdioSetLatchLogic 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 備考 ラッチするエッジは立ち上がりと立ち下がりを両方同時に指定することもできます STB 信号の変化により割り込みを発生させることができますが この割り込みの設定とラッチの設定は独立して指定できます 127

128 使用例 HANDLE hdevicehandle; LONG nret; nret = SdioSetLatchLogic( hdevicehandle, IFSDIO_RISE_EDGE ); Dim hdevicehandle As Long Dim nret As Long nret = SdioSetLatchLogic( hdevicehandle, IFSDIO_RISE_EDGE ) Var hdevicehandle: THandle; nret: Integer; begin nret := SdioSetLatchLogic( hdevicehandle, IFSDIO_RISE_EDGE ); end; STB 信号の立ち上がりで入力信号をラッチするように設定します 128

129 12. SdioGetLatchLogic 機能 入力信号をラッチする STB 信号の論理を取得します 書式 LONG SdioGetLatchLogic ( HANDLE hdevicehandle, PBYTE pblatchlogic ); Declare Function SdioGetLatchLogic Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByRef pblatchlogic As Byte ) As Long function SdioGetLatchLogic ( hdevicehandle: Thandle; var pblatchlogic: Byte ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください pblatchlogic STB 信号の論理を格納する変数へのポインタを指定してください STB 信号の論理を以下の識別子で格納されます 定数意味 IFSDIO_RISE_EDGE STB 信号の立ち上がりでラッチします IFSDIO_FALL_EDGE STB 信号の立ち下がりでラッチします 戻り値 SdioGetLatchLogic 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 129

130 使用例 HANDLE hdevicehandle; BYTE blatchlogic; LONG nret; nret = SdioGetLatchLogic( hdevicehandle, &blatchlogic ); Dim hdevicehandle As Long Dim blatchlogic As Byte Dim nret As Long nret = SdioGetLatchLogic (hdevicehandle,blatchlogic) Var hdevicehandle: THandle; blatchlogic: byte; nret: Integer; begin nret := SdioGetLatchLogic (hdevicehandle, blatchlogic); end; STB 信号をラッチする論理を取得します 130

131 13. SdioInputLatchPoint 機能 任意の点数のラッチされた入力接点の状態を読み込みます 指定した開始接点番号から 1 接点ずつ変数に格納されます 書式 LONG SdioInputLatchPoint ( HANDLE hdevicehandle, PBYTE pbbuffer, DWORD dwstartnum, DWORD dwinputnum ); Declare Function SdioInputLatchPoint Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByRef pbbuffer As Byte, ByVal dwstartnum As Long, ByVal dwinputnum As Long ) As Long function SdioInputLatchPoint ( hdevicehandle: Thandle; pbbuffer: pointer; dwstartnum: Integer; dwinputnum: Integer ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください pbbuffer デバイスから読み取ったデータを受け取るバッファを指すポインタです dwstartnum 入力開始接点番号 1~24 を指定してください ピン IN/OUT1 が 1 に対応します dwinputnum 入力接点数を指定してください 入力接点の指定と 信号は下記のように対応しています 接点番号 入力信号 IN1 IN2 IN3 IN23 IN24 1: Low レベル 0:High レベル 131

132 戻り値 SdioInputLatchPoint 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 使用例 HANDLE hdevicehandle; LONG nret; BYTE bbuffer[8]; nret = SdioInputLatchPoint( hdevicehandle, &bbuffer[0], 16, 8 ); Dim hdevicehandle As Long Dim nret As Long Dim bbuffer(8) As Byte nret = SdioInputLatchPoint( hdevicehandle, bbuffer(0), 16, 8 ) Var hdevicehandle: THandle; nret: Integer; bbuffer: Array[0..7] of Byte; begin nret := SdioInputLatchPoint( 16, 8 ); end; デバイスハンドル hdevicehandle が示すデバイスの IN16~IN23 の入力接点状態を bbuffer[0...7] へ返します 132

133 14. SdioInputLatchByte 機能 ラッチされた接点 8 点分のデータを読み込み 1 バイト (8 ビット ) の変数に格納します 書式 LONG SdioInputLatchByte ( HANDLE hdevicehandle, DWORD dwinputno, PBYTE pbvalue ); Declare Function SdioInputLatchByte Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByVal dwinputno As Long, ByRef pbvalue As Byte ) As Long function SdioInputLatchByte ( hdevicehandle: Thandle; dwinputno: DWORD; var pbvalue: Byte ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください dwinputno 読み込む接点を下記の識別子で指定します 定数 意味 IFSDIO_IN1_8 IN1~IN8 の 8 点分のデータを読み込みます IFSDIO_IN9_16 IN9~IN16 の 8 点分のデータを読み込みます IFSDIO_IN17_24 IN17~IN24 の 8 点分のデータを読み込みます pbvalue 入力した接点状態を返す変数へのポインタ 戻り値 SdioInputLatchByte 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 133

134 備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 IFSDIO_IN1_8 IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1 IFSDIO_IN9_16 IN 6 IN15 IN14 IN13 IN12 IN11 IN10 IN9 IFSDIO_IN17_24 IN24 IN23 IN22 IN21 IN20 IN19 IN18 IN17 1:Low レベル 0:High レベル 使用例 HANDLE hdevicehandle; LONG nret; BYTE bvalue; nret = SdioInputLatchByte( hdevicehandle, IFSDIO_IN1_8, &bvalue ); Dim hdevicehandle As Long Dim nret As Long Dim bvalue As Byte nret = SdioInputLatchByte( hdevicehandle, IFSDIO_IN1_8, bvalue ) Var hdevicehandle: Thandle; nret: Integer; bvalue: Byte; begin nret := SdioInputLatchByte( hdevicehandle, IFSDIO_IN1_8, bvalue ); end; デバイスハンドル hdevicehandle が示すデバイスで STB 信号によってラッチされた IN1~IN8 の状態を bvalue に入力します 134

135 15. SdioInputLatchWord 機能 ラッチされた接点 16 点分のデータを読み込み 1 ワード (16 ビット ) の変数に格納します 書式 LONG SdioInputLatchWord ( HANDLE hdevicehandle, DWORD dwinputno, PWORD pwvalue ); Declare Function SdioInputLatchWord Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByVal dwinputno As Long, ByRef pwvalue As Integer ) As Long function SdioInputLatchWord ( hdevicehandle: Thandle; dwinputno: DWORD; var pwvalue: Word ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください dwinputno 読み込む接点を下記の識別子で指定します 定数意味 IFSDIO_IN1_16 IN1~IN16 の 16 点分のデータを読み込みます IFSDIO_IN17_32 IN17~IN32 の 16 点分のデータを読み込みます 24 点入力の端子台では IN25~IN32 のデータは取得できません またここのデータは全て 0 になります pwvalue 読み込まれたデータを格納する変数へのポインタを指定してください 戻り値 SdioInputLatchWord 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合に 135

136 ついては 戻り値一覧 を参照してください 備考 取得したデータは下記のようにビット毎に接点と対応しています ビット Bit15 Bit14 Bit13 Bit2 Bit1 Bit0 IFSDIO_IN1_16 IN16 IN15 IN14 IN3 IN2 IN1 IFSDIO_IN17_32 IN32 IN31 IN30 IN19 IN18 IN17 1:Low レベル 0:High レベル 使用例 HANDLE hdevicehandle; LONG nret; WORD wvalue; nret = SdioInputLatchWord( hdevicehandle, IFSDIO_IN1_16, &wvalue ); Dim hdevicehandle As Long Dim nret As Long Dim wvalue As Integer nret = SdioInputLatchWord( hdevicehandle, IFSDIO_IN1_16, wvalue ) Var hdevicehandle: THandle; nret: Integer; wvalue: Word; begin nret := SdioInputLatchWord( hdevicehandle, IFSDIO_IN1_16, wvalue ); end; デバイスハンドル hdevicehandle が示すデバイスで STB 信号によってラッチされた IN1~IN16 の状態を wvalue に入力します 136

137 16. SdioInputLatchDword 機能 ラッチされた接点 32 点分のデータを読み込み 1 ダブルワード (32 ビット ) の変数に格納します 書式 LONG SdioInputLatchDword ( HANDLE hdevicehandle, DWORD dwinputno, PDWORD pdwvalue ); Declare Function SdioInputLatchDword Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByVal dwinputno As Long, ByRef pdwvalue As Long ) As Long function SdioInputLatchDword ( hdevicehandle: Thandle; dwinputno: DWORD; var pdwvalue: DWORD ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください dwinputno 読み込む接点を下記の識別子で指定します 定数意味 IFSDIO_IN1_32 IN1~IN32 の 32 点分のデータを読み込みます 24 点入力の端子台では IN25~IN32 のデータは取得できません またここのデータは全て 0 になります pdwvalue 読み込まれたデータを格納する変数へのポインタを指定してください 戻り値 SdioInputLatchDword 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 137

138 備考 取得したデータは下記のようにビット毎に接点と対応しています ビット Bit31 Bit30 Bit29 Bit2 Bit1 Bit0 IFSDIO_IN1_32 IN32 IN31 IN30 IN3 IN2 IN1 1:Low レベル 0:High レベル 使用例 HANDLE hdevicehandle; LONG nret; DWORD dwvalue; nret = SdioInputLatchDword( hdevicehandle, IFSDIO_IN1_32, &dwvalue ); Dim hdevicehandle As Long Dim nret As Long Dim dwvalue As Long nret = SdioInputLatchDword( hdevicehandle, IFSDIO_IN1_32, dwvalue ) Var hdevicehandle: Thandle; nret: Integer; dwvalue: DWORD; begin nret := SdioInputLatchDword( hdevicehandle, IFSDIO_IN1_32, dwvalue ); end; デバイスハンドル hdevicehandle が示すデバイスで STB 信号によってラッチされた IN1~IN32 の状態を dwvalue に入力します 138

139 17. SdioSetEvent 機能 STB 信号の変化による割り込みが発生したときに実行するイベントを指定します 書式 (x86) LONG SdioSetEvent ( HANDLE HANDLE ULONG HANDLE LPSDIOCALLBACK DWORD ); (x64) LONG SdioSetEvent ( HANDLE HANDLE ULONG HANDLE LPSDIOCALLBACK PVOID ); hdevicehandle, hwindowhandle, ulwindowsmessage, heventhandle, pcallbackproc, dwuserdata hdevicehandle, hwindowhandle, ulwindowsmessage, heventhandle, pcallbackproc, dwuserdata Declare Function SdioSetEvent Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByVal hwindowhandle As Long, ByVal ulwindowsmessage As Long, ByVal heventhandle As Long, ByVal pcallbackproc As Long, ByVal dwuserdata As Long ) As Long function SdioSetEvent ( hdevicehandle: Thandle; hwindowhandle: THandle; ulwindowsmessage: Integer; heventhandle: THandle; pcallbackproc: Pointer; dwuserdata: Integer ):Integer; stdcall; external 'IfSdio.DLL'; 139

140 パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください hwindowhandle 割り込み発生時にメッセージを送るウィンドウハンドルを指定します ulwindowsmessage 割り込み発生時に送られるメッセージを指定します heventhandle 割り込み発生時にシグナル状態になるイベントハンドルを指定します pcallbackproc 割り込み発生時に呼び出されるコールバック関数へのポインタを指定します dwuserdata コールバック関数およびメッセージハンドラへ引き渡すユーザ データを指定してください 戻り値 SdioSetEvent 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 使用例 (x86) HANDLE hdevicehandle; HANDLE heventhandle; LONG nret; heventhandle = CreateEvent(NULL, FALSE, FALSE, NULL); nret = SdioSetEvent(hDeviceHandle, NULL, 0, heventhandle, NULL, 0); (x64) HANDLE hdevicehandle; HANDLE heventhandle; LONG nret; heventhandle = CreateEvent(NULL, FALSE, FALSE, NULL); nret = SdioSetEvent(hDeviceHandle, NULL, 0, heventhandle, NULL, NULL); Dim hdevicehandle As Long Dim heventhandle As Long Dim nret As Long heventhandle = CreateEvent(0, False, False, 0) nret = SdioSetEvent(hDeviceHandle, 0, 0, heventhandle, 0, 0) 140

141 var hdevicehandle: THandle; heventhandle: Thandle; nret: Integer; begin heventhandle = CreateEvent(nil, False, False, nil); nret := SdioSetEvent(hDeviceHandle, nil, 0, heventhandle, nil, 0); end; STB 割り込み発生時にシグナル状態にするイベントのハンドルを登録します 141

142 18. SdioSetEventLogic 機能 STB 信号の割り込み発生論理と HDLC モジュールの異常発生割り込みを設定します 書式 LONG SdioSetEventLogic ( HANDLE hdevicehandle, BYTE beventlogic ); Declare Function SdioSetEventLogic Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByVal beventlogic As Byte ) As Long function SdioSetEventLogic ( hdevicehandle: Thandle; beventlogic: Byte ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください beventlogic STB 信号の割り込み論理 HDLC モジュール異常の割り込み発生条件を指定します 割り込み論理 条件は以下の定数で指定します 定数 意味 IFSDIO_RISE_EDGE STB 信号の立ち上がりで割り込みが発生します IFSDIO_FALL_EDGE STB 信号の立ち下がりで割り込みが発生します IFSDIO_CONNECT_EVENT HDLC モジュールとの切断で割り込みが発生します IFSDIO_POWER_EVENT HDLC モジュールの電源電圧異常で割り込みが発生します 戻り値 SdioSetEventLogic 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 備考 割り込みを発生する論理は立ち上がりと立ち下がりを両方同時に指定することもできます STB 信号の変化により入力信号の状態をラッチできますが このラッチの設定と割り込みの設定は独立して指定できます 142

143 使用例 HANDLE hdevicehandle; LONG nret; nret = SdioSetEventLogic(hDeviceHandle, IFSDIO_FALL_EDGE); Dim hdevicehandle As Long Dim nret As Long nret = SdioSetEventLogic(hDeviceHandle, IFSDIO_FALL_EDGE) Var hdevicehandle: THandle; nret: Integer; begin nret := SdioSetEventLogic(hDeviceHandle, IFSDIO_FALL_EDGE); end; STB 信号の割り込み発生論理を立ち下がりに設定します 143

144 19. SdioGetEventLogic 機能 STB 信号の割り込み発生論理の設定を取得します 書式 LONG SdioGetEventLogic ( HANDLE hdevicehandle, PBYTE pbeventlogic ); Declare Function SdioGetEventLogic Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByRef pbeventlogic As Byte ) As Long function SdioGetEventLogic ( hdevicehandle: Thandle; var pbeventlogic: Byte ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle SdioOpen 関数で取得したデバイスハンドルを指定してください pbeventlogic STB 信号の割り込み論理 HDLC モジュール異常の割り込み発生条件を格納する変数への参照渡しを指定します 割り込み論理 条件は以下の定数で格納されます 定数意味 IFSDIO_RISE_EDGE STB 信号の立ち上がりで割り込みが発生します IFSDIO_FALL_EDGE STB 信号の立ち下がりで割り込みが発生します IFSDIO_CONNECT_EVENT HDLC モジュールとの切断で割り込みが発生します IFSDIO_POWER_EVENT HDLC モジュールの電源電圧異常で割り込みが発生します 戻り値 SdioGetEventLogic 関数は正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 144

145 使用例 HANDLE hdevicehandle; LONG nret; BYTE beventlogic; nret = SdioGetEventLogic(hDeviceHandle, &beventlogic); Dim hdevicehandle As Long Dim nret As Long Dim beventlogic As Byte nret = SdioGetEventLogic(hDeviceHandle, beventlogic) var hdevicehandle: THandle; nret: Integer; beventlogic : BYTE; begin nret := SdioGetEventLogic (hdevicehandle, beventlogic); end; STB 信号の割り込み発生論理を取得します 145

146 20. SdioGetTmoduleStatus 機能 HDLC モジュールの接続状態を取得します 書式 LONG SdioGetTmoduleStatus( HANDLE hdevicehandle, PBYTE pbtmodulestatus ); Declare Function SdioGetTmoduleStatus Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByRef pbtmodulestatus As Byte ) As Long function SdioGetTmoduleStatus ( hdevicehandle: THandle; var pbtmodulestatus: byte ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle HDLC モジュールの接続状態を取得するデバイスハンドルを指定します pbtmodulestatus HDLC モジュールの接続状態を格納する変数へのポインタを指定します (C 言語 ) HDLC モジュールの接続状態を格納する変数を指定します (Visual Basic Delphi) bit7 bit6 Bit5 bit4 bit3 bit2 bit1 bit0 予約 予約 PWRNG SAFNG 予約 予約 PWROK SAFOK SAFOK 1 現在 HDLC モジュールと接続されています 0 現在 HDLC モジュールと接続されていません PWROK 1 現在 HDLC モジュールの電源電圧は正常です 0 現在 HDLC モジュールの電源電圧が異常です SAFNG 1 前回の本関数実行時から 今回の実行までに HDLC モジュールとの切断がありました 0 前回の本関数実行時から 今回の実行までに HDLC モジュールとの切断はありませんでした PWRNG 1 前回の本関数実行時から 今回の実行までに HDLC モジュールの電源電圧の異常がありました 0 前回の本関数実行時から 今回の実行までに HDLC モジュールの電 源電圧の異常はありませんでした 146

147 戻り値 正常終了した場合は IFSDIO_ERROR_SUCCESS が返されます IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 使用例 HANDLE hdevicehandle; BYTE btmodulestatus; LONG nret; nret = SdioGetTmoduleStatus(hDeviceHandle, &btmodulestatus); Dim hdevicehandle As Long Dim btmodulestatus As Byte Dim nret As Long nret = SdioGetTmoduleStatus(hDeviceHandle, btmodulestatus) Var hdevicehandle: THandle; btmodulestatus: byte; nret: Integer; nret := SdioGetTmoduleStatus(hDeviceHandle, btmodulestatus); HDLC モジュールの接続状態を取得します 147

148 21. SdioSetTmodulePower 機能 HDLC モジュールの電源を制御します 書式 LONG SdioSetTmodulePower( HANDLE hdevicehandle, BYTE bsetpower ); Declare Function SdioSetTmodulePower Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByVal bsetpower As Byte ) As Long function SdioSetTmodulePower ( hdevicehandle: Thandle; bsetpower: Byte ):Integer; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle HDLC モジュールの電源制御を行うデバイスハンドルを指定します bsetpower 電源状態を指定します 識別子 値 内容 IFSDIO_POWER_ON 1 HDLC モジュールの電源を ON にします IFSDIO_POWER_OFF 0 HDLC モジュールの電源を OFF にします 戻り値 正常終了した場合は IFSDIO_ERROR_SUCCESS が返されます IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 をご参照ください 148

149 使用例 HANDLE hdevicehandle; LONG nret; nret = SdioSetTmodulePower(hDeviceHandle, HDLC_POWER_OFF); Dim hdevicehandle As Long Dim nret As Long nret = SdioSetTmodulePower (hdevicehandle, HDLC_POWER_OFF) Var hdevicehandle: Thandle; nret: Integer; nret := SdioSetTmodulePower (hdevicehandle, HDLC_POWER_OFF); HDLC モジュールの電源を OFF にします 149

150 22. SdioCommonGetDeviceInfo 機能 デバイスのリソース情報を取得します SdioCommonGetDeviceInfo 関数で得られる情報は 以下のとおりです デバイス ID ベンダ ID リビジョン ID サブシステム ID サブシステムベンダ ID ボード ID (RSW1 設定値 ) 端子台番号 書式 LONG SdioCommonGetDeviceInfo ( HANDLE hdevicehandle, PDWORD pdwdeviceid, PDWORD pdwvendorid, PDWORD pdwrevisionid, PDWORD pdwsubsystemid, PDWORD pdwsubsystemvendorid, PDWORD pdwboardid, PDWORD pdwterminalno ); Declare Function SdioCommonGetDeviceInfo Lib "IfSdio.DLL" ( ByVal hdevicehandle As Long, ByRef pdwdeviceid As Long, ByRef pdwvendorid As Long, ByRef pdwrevisionid As Long, ByRef pdwsubsystemid As Long, ByRef pdwsubsystemvendorid As Long, ByRef pdwboardid As Long, ByRef pdwterminalno As Long ) As Long 150

151 function SdioCommonGetDeviceInfo ( hdevicehandle: Thandle; var pdwdeviceid: DWORD; var pdwvendorid: DWORD; var pdwrevisionid: DWORD; var pdwsubsystemid: DWORD; var pdwsubsystemvendorid: DWORD; var pdwboardid: DWORD; var pdwterminalno: DWORD ): DWORD; stdcall; external 'IfSdio.DLL'; パラメータ hdevicehandle リソース情報を取得したいデバイスの SdioOpen 関数によって得られたハンドル pdwdeviceid デバイス ID を返す変数へのポインタ pdwvendorid ベンダ ID を返す変数へのポインタ 弊社のベンダ ID は 1147h です pdwrevisionid リビジョン ID を返す変数へのポインタ pdwsubsystemid サブシステム ID を返す変数へのポインタ pdwsubsystemvendorid サブシステムベンダ ID を返す変数へのポインタ pdwboardid ボード ID (RSW1 設定値 ) を返す変数へのポインタ pdwterminalno 端子台番号を返す変数へのポインタ 戻り値 処理が正常に終了すると IFSDIO_ERROR_SUCCESS を返します それ以外の場合は IFSDIO_ERROR_SUCCESS 以外の値を返します IFSDIO_ERROR_SUCCESS 以外の値が返された場合については 戻り値一覧 を参照してください 151

152 使用例 HANDLE hdevicehandle; DWORD dwdeviceid; DWORD dwvendorid; DWORD dwrevisionid; DWORD dwsubsystemid; DWORD dwsubsystemvendorid; DWORD dwboardid; DWORD dwterminalno; LONG nret; nret = SdioCommonGetDeviceInfo(hDeviceHandle, &dwdeviceid, &dwvendorid, &dwrevisionid, &dwsubsystemid,&dwsubsystemvendorid,&dwboardid,&dwterminalno ); Dim hdevicehandle As Long Dim dwdeviceid As Long Dim dwvendorid As Long Dim dwrevisionid As Long Dim dwsubsystemid As Long Dim dwsubsystemvendorid As Long Dim dwboardid As Long Dim dwterminalno As Long Dim nret As Long nret = SdioCommonGetDeviceInfo(hDeviceHandle, dwdeviceid, dwvendorid, RevisionID, dwsubsystemid, dwsubsystemvendorid, dwboardid, dwterminalno ) var hdevicehandle: THandle; dwdeviceid: DWord; dwvendorid: DWord; dwrevisionid: DWord; dwsubsystemid: DWord; dwsubsystemvendorid: DWord; dwboardid: DWord; dwterminalno: DWord; nret: DWord; begin nret := SdioCommonGetDeviceInfo(hDeviceHandle, dwdeviceid, dwvendorid, dwrevisionid, dwsubsystemid, dwsubsystemvendorid, dwboardid, dwterminalno ); end; hdevicehandle が示しているデバイスのリソース情報を取得します 152

153 23. CallBackProc 機能 STB 信号の割り込み発生 HDLC モジュール異常時の割り込み発生によってコールされるコールバック関数のプレースホルダです 呼び出される関数は SdioSetEvent 関数に渡した関数となります 書式 (x86) void CallBackProc ( DWORD dweventlogic, DWORD dwuserdata ); (x64) void CallBackProc ( DWORD dweventlogic, PVOID dwuserdata ); Declare Sub CallBackProc ( ByVal dweventlogic As Long, ByVal dwuserdata As Long ) procedure CallBackProc( DwEventLogic: Integer; DwUserData: Integer ): stdcall; パラメータ dweventlogic コールバック関数を呼び出した割り込み発生論理です 割り込み論理は以下の定数で格納されます 定数意味 IFSDIO_RISE_EDGE STB 信号の立ち上がりで割り込みが発生しました IFSDIO_FALL_EDGE STB 信号の立ち下がりで割り込みが発生しました IFSDIO_CONNECT_EVENT HDLC モジュールとの切断で割り込みが発生しました IFSDIO_POWER_EVENT HDLC モジュールの電源電圧異常で割り込みが発生しました dwuserdata SdioSetEvent 関数で指定したユーザデータです 戻り値 なし 153

154 5.3 戻り値一覧 エラー識別子値意味対処方法 IFSDIO_ERROR_SUCCESS 0 正常終了 IFSDIO_ERROR_INVALID_PARAMETER 0xC 引数パラメータの値が 不正です IFSDIO_ERROR_TERMINAL 0xC 端子台に異常がありま す IFSDIO_ERROR_INVALID_HANDLE 0xC デバイスハンドルが正 しくありません API 関数に指定する値が不正もしくは範囲外です または 引数に NULL ポインタが指定されています 端子台の電源電圧に異常があるか 端子台が接続されていません または正しくない組み合わせの端子台が接続されています 正しい組み合わせの端子台を接続してください 不正なデバイスハンドルで呼び出しを行おうとしました オープン関数で返されたデバイスハンドルを使用してください 154

155 第 6 章サンプルプログラム 以下 各サンプルプログラムの概要を説明します 6.1 Send 概要 データ送信を行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル Send.mak を開き ビルドしてください の場合 Visual Basic を起動し プロジェクトファイル Send.vbp を開き ビルドしてください の場合 Delphi を起動し プロジェクトファイル Send.dpr を開き ビルドしてください 作成後 Send を起動してください 6.2 Receive 概要 データ受信を行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル Receive.mak を開き ビルドしてください の場合 Visual Basic を起動し プロジェクトファイル Receive.vbp を開き ビルドしてください の場合 Delphi を起動し プロジェクトファイル Receive.dpr を開き ビルドしてください 作成後 Receive を起動してください 155

156 6.3 Event 概要 受信イベントを発生させ処理するサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル Event.mak を開き ビルドしてください の場合 Visual Basic を起動し プロジェクトファイル Event.vbp を開き ビルドしてください の場合 Delphi を起動し プロジェクトファイル Event.dpr を開き ビルドしてください 作成後 Event を起動してください 6.4 SendMessage 概要 データ送信を行うコンソールアプリケーションのサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル SendMessage.mak を開き ビルドしてください の場合 Visual Basic を起動し プロジェクトファイル SendMessage.vbp を開き ビルドしてください の場合 Delphi を起動し プロジェクトファイル SendMessage.dpr を開き ビルドしてください 作成後 SendMessage を起動してください 156

157 6.5 ReceiveMessage 概要 データ受信を行うコンソールアプリケーションのサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル ReceiveMessage.mak を開き ビルドしてください の場合 Visual Basic を起動し プロジェクトファイル ReceiveMessage.vbp を開き ビルドしてください の場合 Delphi を起動し プロジェクトファイル ReceiveMessage.dpr を開き ビルドしてください 作成後 ReceiveMessage を起動してください 6.6 InPoint 概要 汎用 DIO 入力を行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル InPoint.mak を開き ビルドしてください の場合 Visual Basic を起動し プロジェクトファイル InPoint.vbp を開き ビルドしてください の場合 Delphi を起動し プロジェクトファイル InPoint.dpr を開き ビルドしてください 作成後 InPoint を起動してください 157

158 6.7 OutPoint 概要 汎用 DIO 出力を行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル OutPoint.mak を開き ビルドしてください の場合 Visual Basic を起動し プロジェクトファイル OutPoint.vbp を開き ビルドしてください の場合 Delphi を起動し プロジェクトファイル OutPoint.dpr を開き ビルドしてください 作成後 OutPoint を起動してください 158

159 第 7 章ユーティリティ 以下 各ユーティリティの概要を説明します 7.1 通信ユーティリティプログラム HDLC フレームの送受信を行うユーティリティプログラムです PCI-4172FMU では複数プロセスでの使用 (2 つ同時に起動 ) は出来ません 起動方法 1. スタート メニュー - Interface GPC HDLC ユーティリティプログラム を選択してユーティリティプログラムを起動させます 2. ファイル - 開く で 使用可能なポートが表示されますので通信設定を行ったあと 使用するポートを選択してください 3. 受信したフレームを画面が表示されます 4. 編集 - 送信 で 送信ダイアログが表示されます データを入力し Ok ボタンをクリックすると フレームを送信します 7.2 自己診断プログラム本製品には 動作不具合時の原因がハードウェア的なものか ソフトウェア的なものかを容易に判断するための自己診断機能を搭載しています 診断プログラムを用いて動作確認を行ってください 自己診断プログラムにより 以下のことを確認できます PCI-4172FMU では使用することが出来ません I/O ポートアクセス メモリアクセス 割り込み データ送受信 制御信号診断 159

160 必要な機材 HDLC インタフェースモジュール 診断プログラム ループバックコネクタ ( ピン接続の組み合わせ (1)RS-232C:SD-RD RS-CS (2)RS-485:T-R C-I) 起動方法 1. 診断を行うインタフェースモジュールのチャンネル 1 チャンネル 2 にループバックコネクタを差し込んでください 2. スタート メニュー - Interface GPC DiagHdlc を選択して自己診断プログラムを起動させます 3. 起動画面のメニューの ファイル - ボードの選択 で 使用可能インタフェースモジュール一覧が表示されますので診断を行うインタフェースモジュールを選択してください 選択したインタフェースモジュールのリソースが表示されます 4. メニューの 診断 - 診断開始 より診断を開始します 診断が終了すると診断結果が表示されます メニューの ファイル - 結果の保存 でその診断結果をファイル形式で保存できます 診断 - 診断結果クリア で診断結果をクリアします 160

161 7.3 RS-485 終端設定ユーティリティプログラム CardBus 製品の RS-485 終端設定用のユーティリティプログラムです 本ユーティリティで設定された終端設定は 電源を切っても消えることはありません 一度設定するだけで 電源再投入後再設定を行う必要はありません RS-485 終端設定する方法は 本ユーティリティおよび HdlcSetCableTermination 関数によって行えます 本ユーティリティで終端設定を行えるカードは以下の製品です 型式 Revision 番号 CBI-4171A 2 以上 CBI-4171B 2 以上 CBI WA 1 以上 CBI WB 1 以上 起動方法 1. スタート メニュー - Interface GPC RS-485 終端抵抗設定ユーティリティ を選択してユーティリティプログラムを起動させます 2. 起動画面のメニューの ファイル - ボードの選択 で 設定可能なカードの一覧が表示されますので設定を行うカードを選択してください 3. 終端抵抗を挿入する端子にチェックを入れ 設定 ボタンをクリックします 4. ファイル - 終了 で プログラムを終了します 161

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

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

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

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-2000

GPC-2000 DIO(PCI/C-PCI) GPC-2000 デジタル入出力インタフェースモジュール用 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

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

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

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

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

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

GPG-4101

GPG-4101 SIO(PCI/C-PCI)Linux/RT GPG-4101 無手順通信インタフェースモジュール用 Linux/RT ドライバ Help for Linux www.interface.co.jp 目次 第 1 章はじめに 3 1.1 概要... 3 1.2 特長... 3 第 2 章製品仕様 4 2.1 動作環境... 4 2.2 対象製品... 4 2.3 基本仕様... 5 第 3 章実行手順

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

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

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

プロセス間通信

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

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

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

型名 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

システム監視ライブラリ

システム監視ライブラリ 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

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

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

<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

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

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

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

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

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

目次 目次... 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

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

NFCライブラリマニュアル

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

More information

AquesTalk プログラミングガイド

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

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

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

CANチュートリアル

CANチュートリアル TUT-0054 Ver. 1.1 www.interface.co.jp Ver 1.0 2004 7 1.1 2005 6 CPZ BPC-08xx BPC-0820 2-4 (, ), Web site () / ( ) ...1...1...1...2 1. CAN...3 2. CAN...4 2.1. CAN...4 2.2. CAN...4 2.3....5 2.3.1....6 2.3.2.

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 for WinCE プログラミングガイド

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

More information

AquesTalk Win Manual

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

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

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

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

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

CommCheckerManual_Ver.1.0_.doc

CommCheckerManual_Ver.1.0_.doc 通信チェックツール (CommChecker) 取扱説明書 (Ver.1.0) 2009 ESPEC Corp. 目次 1. 使用条件 4 2. ダウンロード & インストール 5 3. 環境設定 6 3-1.RS-485 通信 6 3-2.RS-232C 通信 7 3-3.GPIB 通信 8 4. ソフトウェアの使用方法 9 4-1. 起動 9 4-2. 通信設定 10 (1)RS485 通信 10

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

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

CoIDE 用 STM32F4_UART2 の説明 V /03/30 STM32F4 Discovery の非同期シリアル通信ポート UART2 の送受信を行うプログラムです Free の開発ツール CoIDE で作成したプロジェクトサンプルです プログラムの開始番地は 0x08000

CoIDE 用 STM32F4_UART2 の説明 V /03/30 STM32F4 Discovery の非同期シリアル通信ポート UART2 の送受信を行うプログラムです Free の開発ツール CoIDE で作成したプロジェクトサンプルです プログラムの開始番地は 0x08000 CoIDE 用 STM32F4_UART2 の説明 V002 2014/03/30 STM32F4 Discovery の非同期シリアル通信ポート UART2 の送受信を行うプログラムです Free の開発ツール CoIDE で作成したプロジェクトサンプルです プログラムの開始番地は 0x08000000 です デバッグが可能です 提供する PC のアプリケーションの Access_SerialPort

More information

FSUx-SDK2

FSUx-SDK2 2008 年 11 月 - 目次 - 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. 指紋情報構造体について 17 3-5. 通知メッセージ一覧 18

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

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

内容 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> 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

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

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

- i - org.t_engine.tenet.core.coreerrormessageexception org.t_engine.tenet.core Class CoreErrorMessageException java.lang.object +-java.lang.throwable +-java.lang.exception +-org.t_engine.tenet.core.coreexception

More information

Android Layout SDK プログラミング マニュアル

Android Layout SDK プログラミング マニュアル プログラミングマニュアル Version 1.3.0 用 更新履歴 年月日 バージョン 履歴 2014.09.08 1.2.0.0 新規 (Layout Utilities ユーザーズ ガイド ) 2016.08.16 1.3.0.0 モバイル端末用レイアウトで直線部品と矩形部品に対応 モバイル端末用レイアウトファイルを CLFX から XML へ変更 Layout Print Engine から

More information

1. 入力画面

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

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

PowerPoint プレゼンテーション

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

More information

Microsoft Word _VBAProg1.docx

Microsoft Word _VBAProg1.docx 1. VBA とマクロ 1.1 VBA とは VBA(Visual Basic for Applications) は 1997 年に Microsoft 社がマクロを作成するために開発された言語である Windows 対応のアプリケーションを開発するためのプログラミング言語 Visual Basic をもとにしているため 次のような特徴がある 1 VBA は Excel Word, Access,

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

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft PowerPoint - CproNt02.ppt [互換モード] 第 2 章 C プログラムの書き方 CPro:02-01 概要 C プログラムの構成要素は関数 ( プログラム = 関数の集まり ) 関数は, ヘッダと本体からなる 使用する関数は, プログラムの先頭 ( 厳密には, 使用場所より前 ) で型宣言 ( プロトタイプ宣言 ) する 関数は仮引数を用いることができる ( なくてもよい ) 関数には戻り値がある ( なくてもよい void 型 ) コメント

More information

81 /******************************************************************************/ 82 /* スレーブアドレスの設定 */ 83 /*****************************************

81 /******************************************************************************/ 82 /* スレーブアドレスの設定 */ 83 /***************************************** 1 /******************************************************************************/ 2 /* IIC(Inter IC Bus) の制御 */ 3 /******************************************************************************/ 4 /*

More information

Prog1_12th

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

More information

2015/04/01 改定 オムロン DeviceNet ユニット CJ1W-DRM21 に関するコンフィグレーション作業について 1. 概要 DeviceNet ユニット CJ1W-DRM21 を装着したオムロン製 CJ2 シリーズと WAGO-I/0-SYSTEM DeviceNet 対応バスカ

2015/04/01 改定 オムロン DeviceNet ユニット CJ1W-DRM21 に関するコンフィグレーション作業について 1. 概要 DeviceNet ユニット CJ1W-DRM21 を装着したオムロン製 CJ2 シリーズと WAGO-I/0-SYSTEM DeviceNet 対応バスカ オムロン DeviceNet ユニット CJ1W-DRM21 に関するコンフィグレーション作業について 1. 概要 DeviceNet ユニット CJ1W-DRM21 を装着したオムロン製 CJ2 シリーズと WAGO-I/0-SYSTEM DeviceNet 対応バスカプラ 750-306 を使ったリモート I/O システムとの接続に関するコンフィグレーション方法について説明いたします 2. システム構成本書で用いるシステム構成例の内容を以下の表に示します

More information

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~ .NET プログラマー早期育成ドリル VB 編 付録文法早見表 本資料は UUM01W:.NET プログラマー早期育成ドリル VB 編コードリーディング もしくは UUM02W:.NET プログラマー早期育成ドリル VB 編コードライティング を ご購入頂いた方にのみ提供される資料です 資料内容の転載はご遠慮下さい VB プログラミング文法早見表 < 基本文法 > 名前空間の定義 Namespace

More information

Prog1_10th

Prog1_10th 2012 年 6 月 20 日 ( 木 ) 実施ポインタ変数と文字列前回は, ポインタ演算が用いられる典型的な例として, ポインタ変数が 1 次元配列を指す場合を挙げたが, 特に,char 型の配列に格納された文字列に対し, ポインタ変数に配列の 0 番の要素の先頭アドレスを代入して文字列を指すことで, 配列そのものを操作するよりも便利な利用法が存在する なお, 文字列リテラルは, その文字列が格納されている領域の先頭アドレスを表すので,

More information

スライド 1

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

More information

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用 RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用体型のローカル変数を文字列操作関数で操作する場合の注意事項 (RXC#013) 配列型構造体または共用体の配列型メンバから読み出した値を動的初期化に用いる場合の注意事項

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

本書は 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

プログラミングI第10回

プログラミングI第10回 プログラミング 1 第 10 回 構造体 (3) 応用 リスト操作 この資料にあるサンプルプログラムは /home/course/prog1/public_html/2007/hw/lec/sources/ 下に置いてありますから 各自自分のディレクトリにコピーして コンパイル 実行してみてください Prog1 2007 Lec 101 Programming1 Group 19992007 データ構造

More information

プログラミング実習I

プログラミング実習I プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 m.imura@kwansei.ac.jp 関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが,

More information

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

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

More information

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

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

More information

USB_IR_Remote_Controller_Advance_Library 取扱説明書 2016/06/23 R03 Assembly Desk USB_IR_Remote_Controller_Advance_Library を使用すると 弊社製 USB IR Remote controll

USB_IR_Remote_Controller_Advance_Library 取扱説明書 2016/06/23 R03 Assembly Desk USB_IR_Remote_Controller_Advance_Library を使用すると 弊社製 USB IR Remote controll USB_IR_Remote_Controller_Advance_Library 取扱説明書 2016/06/23 R03 Assembly Desk USB_IR_Remote_Controller_Advance_Library を使用すると 弊社製 USB IR Remote controller Advance から赤外線コードを送信する Windows アプリケーション (x86 版 )

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 講座準備 講座資料は次の URL から DL 可能 https://goo.gl/jnrfth 1 ポインタ講座 2017/01/06,09 fumi 2 はじめに ポインタはC 言語において理解が難しいとされる そのポインタを理解することを目的とする 講座は1 日で行うので 詳しいことは調べること 3 はじめに みなさん復習はしましたか? 4 & 演算子 & 演算子を使うと 変数のアドレスが得られる

More information

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版   Copyright 2018 NTT DATA INTRAMART CORPORATION 1 Top 目次 1. 改訂情報 2. はじめに 2.1. 本書の目的 2.2. 対象読者 2.3. サンプルコードについて 2.4. 本書の構成 3. 辞書項目 API 3.1. 最新バージョン 3.1.1. 最新バージョンの辞書を取得する 3.2. 辞書項目 3.2.1. 辞書項目を取得する 3.2.2.

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

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

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

More information

A. InstallScript プロジェクト InstallScript インストールは InstallScript エンジンによって制御され 決められた順序で一連のイベントが生成されます これらのイベントは インストールを実行するソフトウェアハンドラーをトリガーします たとえば インストールがロ

A. InstallScript プロジェクト InstallScript インストールは InstallScript エンジンによって制御され 決められた順序で一連のイベントが生成されます これらのイベントは インストールを実行するソフトウェアハンドラーをトリガーします たとえば インストールがロ InstallScript サンプル 注 ) このドキュメントは InstallShield 2015 Premier Edition を基に作成しています InstallShield 2015 以外のバージョンでは設定名などが異なる場合もあります 概要 InstallShield では InstallShield 独自のプログラム言語 InstallScript を利用して 動作をカスタマイズすることができます

More information

Microsoft Word - CAN Monitor の使い方.doc

Microsoft Word - CAN Monitor の使い方.doc CAN Monitor の使い方 1. 仕様項目内容ポート数 1ch 対応速度 125kbps,250kbps,500kbps,1Mbps ログ記録 CSV フォーマットで時系列に記録時間は msec 単位 H/W mailbox 受信 :16ch 送信 :8ch 受信フィルタチャネル毎にデータ ID および MASK 機能設定可能 Bit Timing 調整可能 サンプリングポイントを約 30%~

More information

1 VB 開発向け OCX プログラミング はじめに 本書は STARFAX Server SDK を利用したユーザープログラムの作成方法をご説明しています なお 本書は Visual Basic 6.0 を開発ツールとして STARFAX Server SDK OCX コントロールを使用してプログラムを作成する方を対象としています そして STARFAX Sercer SDK とユーザープログラムとのインターフェイスは

More information

2006年10月5日(木)実施

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

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション レッスン (1) あるワークシート中のあるセルを指定する Worksheets(" ワークシート名 ").Range(" セル ").Value ( 例 ) Worksheets(" データ収集 ").Range("A2").Value あるワークシートのセルから 別のワークシートのセルへ転記する Worksheets(" シート A").Range(" セル ").Value = Worksheets("

More information

Android プログラム ガイド

Android プログラム ガイド モバイルプリンター Android モジュールプログラムガイド ESC/POS, CPCL Ver. 1.00 更新履歴 日付 バージョン 対象 SDK 履歴 2012/11/29 0.08 新規 2014/03/18 1.00 1.064 USB インターフェース対応 1 1. 目次 Android モジュールプログラムガイド... 0 更新履歴... 1 1. 目次... 2 2. はじめに...

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

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

ユーティリティ 管理番号 内容 対象バージョン 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

AquesTalk Mac マニュアル

AquesTalk Mac マニュアル AquesTalk Mac マニュアル 2010/1/6 ( 株 ) アクエスト http://www.a-quest.com/ 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk Mac( 以下 AquesTalk ) をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk Mac は Win 版の AquesTalk

More information

御使用の前に必ず本取扱説明書をよく読んで理解して 安全の為の指示に従って下さい もし 不明点が有れば販売店か弊社におたずね下さい 目次 1. はじめに 対応 ios デバイス ダウンロードおよびライセンス認証 ダウンロード ライセ

御使用の前に必ず本取扱説明書をよく読んで理解して 安全の為の指示に従って下さい もし 不明点が有れば販売店か弊社におたずね下さい 目次 1. はじめに 対応 ios デバイス ダウンロードおよびライセンス認証 ダウンロード ライセ 低遅延デコーダ HD-SDI 出力タイプ LD-610 ipad 版デコーダ 取扱説明書 Ver. 0.1 御使用の前に必ず本取扱説明書をよく読んで理解して 安全の為の指示に従って下さい もし 不明点が有れば販売店か弊社におたずね下さい 目次 1. はじめに... 2 1.1 対応 ios デバイス... 2 2. ダウンロードおよびライセンス認証... 3 2.1 ダウンロード... 3 2.2

More information

セットアップガイド

セットアップガイド セットアップガイド ~ ドライバ編 ~ 2017 年 5 月 10 日版 JIP テクノサイエンス株式会社 < 目次 > 1. はじめに... 1 2. セットアップ作業を始める前に... 1 3. 運用環境... 1 3.1 ネットワーク運用... 1 3.2 スタンドアロン運用... 1 4. ドライバ... 2 4.1 Windows 7/8 HASP ドライバ... 2 4.1.1 インストール...

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 配列とコレクション 配列の使い方 固定配列 動的配列 コレクションの使い方 今日の目的 固定配列の宣言例 プロシージャレベル Dim arybuf(0 To 5) As Long モジュールレベル Private arybuf(0 To 5) As Long Public arybuf(0 To 5) As Long 固定配列の宣言例 プロシージャレベル Dim arybuf(0 To 5) As

More information

sinfI2005_VBA.doc

sinfI2005_VBA.doc sinfi2005_vba.doc MS-ExcelVBA 基礎 (Visual Basic for Application). 主な仕様一覧 () データ型 主なもの 型 型名 型宣言文字 長さ 内容 整数型 Integer % 2 バイト -32,768 32,767 長整数型 Long & 4 バイト -2,47,483,648 2,47,483,647 単精度浮動小数点数 Single 型!

More information

アナログ・接点変換器

アナログ・接点変換器 LoRa/ 通信変換器 HLR-RS485 通信仕様書 (Modbus) インターフェース 2019 年 02 月 19 日 改訂履歴 日付改訂者改訂内容 2018/09/14 野村初版 2019/02/19 山下 改訂 1 P12 説明文修正 レジスタ割付修正 P13 キャリアセンス異常エラー追加 承認確認作成 ( 3 ) 目次 1 概要... 4 2 基本仕様... 4 3 通信モードについて...

More information

GOT機能サンプル バックアップ/リストア機能説明書

GOT機能サンプル バックアップ/リストア機能説明書 GOT 機能サンプルバックアップ / リストア機能説明書 三菱電機株式会社 1 2 1. バックアップ / リストア機能機能の特長 対象データ プログラム パラメータ デバイスコメント デバイス初期値データ ファイルレジスタ 対象機種 MELSEC-Q シリーズ (Q12PRH/Q25PRHCPU は除く ) モーションコントローラ Q シリーズ (SV13/SV22 のみ ) CNC C70 使用可能な接続形態

More information

仕様書用テンプレート

仕様書用テンプレート 管理番号 CSI2008-JY054 代理認証システムマニュアル ( 機関向け ) 東北大学 サイバーサイエンスセンター CSI 研究室 版作成年月日 承認 査閲 作成 備考 ( 改版理由他 ) 1.0 2008/12/03 大和 1 目次 第 1 章 はじめに...3 1.1 用語の説明...3 第 2 章 使用方法...4 2.1 アクセス手順...4 2.2 操作一覧...4 第 3 章 アカウント管理...5

More information

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

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

More information

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y  小幡智裕 Java Script プログラミング入門 3-6~3-7 茨城大学工学部情報工学科 08T4018Y 小幡智裕 3-6 組み込み関数 組み込み関数とは JavaScript の内部にあらかじめ用意されている関数のこと ユーザ定義の関数と同様に 関数名のみで呼び出すことができる 3-6-1 文字列を式として評価する関数 eval() 関数 引数 : string 式として評価する文字列 戻り値 :

More information

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード] 情報工学実験 II 実験 2 アルゴリズム ( リスト構造とハッシュ ) 実験を始める前に... C 言語を復習しよう 0. プログラム書ける? 1. アドレスとポインタ 2. 構造体 3. 構造体とポインタ 0. プログラム書ける? 講義を聴いているだけで OK? 言語の要素技術を覚えれば OK? 目的のプログラム? 要素技術 データ型 配列 文字列 関数 オブジェクト クラス ポインタ 2 0.

More information

Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装

Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装 LIM Corp. Nios II - PIO を使用した I 2 C-Bus (2 ワイヤ ) マスタの実装 ver.1.0 2010 年 6 月 ELSEN,Inc. 目次 1. はじめに... 3 2. 適用条件... 3 3. システムの構成... 3 3-1. SOPC Builder の設定... 3 3-2. PIO の設定... 4 3-2-1. シリアル クロック ライン用 PIO

More information

目次 1. 概要 動作環境

目次 1. 概要 動作環境 Asaka Data Entry for RS-232C (ADE-RS) Personal Edition ユーザーズガイド (Ver 1.1) 株式会社アサカ理研 目次 1. 概要 -------------------------------------------------------------------- 2 2. 動作環境 ------------------------------------------------------------------

More information

おことわり 本書の内容の一部又は全部を無断転載することは禁止されています 本機の外観及び仕様は改良のため 将来予告無しに変更することがあります 本書の内容について万一不審な点や誤りなどのお気付きの点がありましたらご連絡ください 本書に記載されている会社名 商品名などは 一般に各社の商標又は登録商標で

おことわり 本書の内容の一部又は全部を無断転載することは禁止されています 本機の外観及び仕様は改良のため 将来予告無しに変更することがあります 本書の内容について万一不審な点や誤りなどのお気付きの点がありましたらご連絡ください 本書に記載されている会社名 商品名などは 一般に各社の商標又は登録商標で USB ドライバ CDM Drivers インストールガイド グラフテック株式会社 おことわり 本書の内容の一部又は全部を無断転載することは禁止されています 本機の外観及び仕様は改良のため 将来予告無しに変更することがあります 本書の内容について万一不審な点や誤りなどのお気付きの点がありましたらご連絡ください 本書に記載されている会社名 商品名などは 一般に各社の商標又は登録商標です 本文中には (R)

More information