DPC-0244

Similar documents
DPC-0401

GPC-6105

EWF管理ソフトウェア

FBWFMemoryWatcher

BPC-0821 Help for Windows

GPC-2000

DPC-0403

<4D F736F F D20B6BCB5D7B2CCDED7D8CFC6ADB1D9315F43532E444F43>

システム監視ライブラリ

Microsoft Word - 7_rusb.doc

GPC-4851

GPG-2000

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

Microsoft Word - DT-5100Lib_Manual_DotNet.doc

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

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

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

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

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

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

Visual BasicによるDIO入門書

AquesTalk プログラミングガイド


GPC-8826

ご注意 1) 本書の内容 およびプログラムの一部 または全部を当社に無断で転載 複製することは禁止されております 2) 本書 およびプログラムに関して将来予告なしに変更することがあります 3) プログラムの機能向上のため 本書の内容と実際の画面 操作が異なってしまう可能性があります この場合には 実

NetworkVantage 9

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

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

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

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

AquesTalk Win Manual

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

バーコードハンディターミナル BT-1000 シリーズセットアップガイド ( 第 1 版 ) CE ***

AquesTalk for WinCE プログラミングガイド

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

プロセス間通信

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

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

GPC-4161

24th Embarcadero Developer Camp

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

AN1526 RX開発環境の使用方法(CS+、Renesas Flash Programmer)

ユーザーズマニュアル

Microsoft Visual Studio .NET移行ガイド

NFCライブラリマニュアル

OTRS10 他社システムOTRS呼出利用手順書

商標類 Microsoft は, 米国およびその他の国における米国 Microsoft Corp. の登録商標です Microsoft Office は, 米国 Microsoft Corp. の商品名称です Microsoft Excel は, 米国 Microsoft Corp. の商品名称です

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

法人税の達人from減価償却の達人 運用ガイド

資産ファイルのエクスポート(会計王19シリーズ) 運用ガイド

CLUSTERPRO MC StorageSaver for BootDisk 2.1 (for Windows) インストールガイド 2016(Mar) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール


第 7.0 版 利用履歴管理 ETCPRO5 セットアップマニュアル (Ver5.002) カードリーダモデル変更 ( 表示付き 表示なし ) に伴い 改訂 Windows10 対応に伴い 改訂 参考ホームページサイト :

CLUSTERPRO MC StorageSaver for BootDisk 1.2 (for Windows) インストールガイド 2014(Mar) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール

インテル(R) Visual Fortran コンパイラ 10.0

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

Microsoft Word - Writing Windows Installer's DLL.doc

CLUSTERPRO MC RootDiskMonitor 1.0 for Windows インストールガイド 2013(Mar) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール

WindowsからLinuxへの引越ガイド(ダイジェスト版)

所得税の達人from大蔵大臣NX 運用ガイド

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

JavaプログラミングⅠ

WindowsXPインストール

Microsoft Word - DTX7LM.doc

Windows インタフェースモジュール (ver1.451) の更新方法 2017 年 12 月 21 日 株式会社ハイバーテック 本メール添付インストーラを使用して,Windows インタフェースモジュールを更新 ( インストール ) する方法を記載します. 本メール添付ファイル (ver145

画面について メイン画面 メイン画面 Logitec EXtorage Link を起動すると メイン画面が表示されます メイン画面の構成は 次のとおりです 1 メニュー 2 端末から外部ストレージへ 3 外部ストレージから端末へ 4 端末 5 外部ストレージ 6 カメラ機能 スマホやタブレットで使

AN424 Modbus/TCP クイックスタートガイド CIE-H14

VBコンバータ利用方法

GPC-4116

ファイル操作-インターネットキャッシュ

FSUx-SDK2

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

Microsoft Word - SREX_SDK2_R31.doc

ウィンドウ操作 応用

CLUSTERPRO MC RootDiskMonitor 2.3 for Windows インストールガイド 2018(Jun) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール 本製品のアップデートインストール

MAC アドレス変更ツール MAC アドレスチェンジャー ユーザーズマニュアル User's Manual エレコム株式会社

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

<4D F736F F D C A8DED8F9C8EE88F878F E C5816A2E646F63>

Microsoft Word - DWR-S01D_Updater_取扱説明書_120514A.doc

Flash Loader

AP-RZA-1A シリアルFlashROMの書き込み方法

VFD256 サンプルプログラム

DWR-S01D Updater 取扱説明書 発行日 :2011/2/28

Microsoft Word - USB2-PCI…V…−†[…Y_04†iWinNt40_PDFŠp†j.doc

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

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

MS104-SH2 USBドライバ(仮想COMポートドライバ)の不具合について

MEDIAPOINT HD ファームウェアリリースノート

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

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

CLUSTERPRO MC RootDiskMonitor 2.1 for Windows パトロールシーク機能 インストールガイド 2016(Mar) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール

チュートリアル LinuxとWindowsのOffice比較

<< 目次 >> 1 PDF コンバータのインストール ライセンスコードの入力 PDF にフォントを埋め込みたい場合の設定 PDF オートコンバータ EX で使用しない場合 PDF コンバータ単体で使用する場合の説明 PDF コンバータのアン

Microsoft Word - PCET10-CL_02a†iWinNT40_PDFŠp†j.doc

1

目次 第 1 章はじめに 電子入札システムを使用するまでの流れ 1 第 2 章 Java ポリシーを設定する前に 前提条件の確認 2 第 3 章 Java のバージョンについて Java バージョン確認方法 Java のアンインストール ( ケース2の

PCL6115-EV 取扱説明書

NetSHAKER Version5.0検疫システムセットアップマニュアル

取り付けの準備 確認 この章では パソコンへの本製品取り付けに際しての準備や 確認について説明します ネットワークへの接続 3 ヘ ーシ 本製品をネットワークに接続します 2

NM30操作DLL(SSK.DLL)

Transcription:

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 3.3 関数個別説明...11 3.4 戻り値一覧...62 第 4 章サンプルプログラム 64 4.1 実行手順...64 4.2 サンプルプログラム一覧...64 第 5 章重要な情報 65 2

第 1 章はじめに 1.1 概要 DPC-0224 は 弊社汎用入出力の I/O 付き Classembly Devices を制御する為のライブラリ製品です 弊社システム監視ライブラリ (DPC-02xx) シリーズでサポートしている汎用入出力機能を GPC-2000( デジタル入出力インタフェースモジュール用 Windows 用ドライバ ) の API 関数で制御する事ができます 3

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

.NET において専用のクラスライブラリを用意しています まず下のように参照の設定を行います ( クラスライブラリのソースファイルも用意しています DLL 関数の呼び出しをカスタマイズしたい場合は クラスライブラリのソースを参照してください ) IFCDIO クラスは x86 専用の定義です 以前のバージョンとの互換性のために残されています 新たにアプリケーションを作成される場合には IFCDIO_ANY クラス (x86 x64 共用 ) の定義をご使用下さい 1. クラスライブラリの作成方法.NET において DLL 関数を呼び出すには まずクラスライブラリを用意する必要があります Visual C#.NET の場合 Visual Studio を起動し 以下のプロジェクトファイルを開きます < インストール先 >\interface\dpc0224\samples\cs_net\ifcdio\ifcdio.csproj このプロジェクトをビルドすると bin フォルダにクラスライブラリ IFCDIO.dll が作成されます Visual Basic.NET の場合 Visual Studio を起動し 以下のプロジェクトファイルを開きます < インストール先 >\interface\dpc0224\samples\vb_net\ifcdio\ifcdio.vbproj このプロジェクトをビルドすると bin フォルダにクラスライブラリ IFCDIO.dll が作成されます 2. クラスライブラリの参照 Visual C#.NET, Visual Basic.NET の場合 Visual Studio のメニューの プロジェクト の 参照の追加 を選択してください 参照 ボタンをクリックして参照したいクラスライブラリ DLL を指定します 例 ) < インストール先 >\interface\dpc0224\samples\cs_net\ifcdio\bin\release\ifcdio.dll < インストール先 >\interface\dpc0224\samples\vb_net\ifcdio\bin\relaase\ifcdio.dll 選択されたコンポーネント に指定した DLL が表示されます OK ボタンをクリックすると設定は完了です 5

次にソースのヘッダで各言語毎に下記のように InterfaceCorpDllWrap の名前空間を追加すれば DLL 関数を次章の 使用例 の方法で呼び出すことができるようになります Visual C#.NET の場合 using InterfaceCorpDllWrap; Visual Basic.NET の場合 Imports InterfaceCorpDllWrap 2.2.2 GPC-2000 について GPC-2000 のユーティリティは 本ライブラリではご使用できません 6

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

2. 出力 DioOutputByte 関数, DioOutputWord 関数を使用して汎用入出力デバイスの指定した接点の出力を 8 点 16 点単位で制御します DioOutputByte( DeviceHandle, FBIDIO_IN1_8, 0x12 DioOutputWord( DeviceHandle, FBIDIO_IN1_16, 0x1234 DioOutputPoint 関数では任意の接点から任意の点数の接点を INT 型配列で設定したデータで制御を行うことが可能です DioOutputPoint( DeviceHandle, &Buffer[0], 16, 8 3. 入力 DioInputByte 関数, DioInputWord 関数を使用して汎用入出力デバイスの指定した接点のデータを 8 点 16 点単位で取り出します DioInputByte( DeviceHandle, FBIDIO_IN1_8, &ByteValue DioInputWord( DeviceHandle, FBIDIO_IN1_16, &WordValue DioInputPoint 関数では任意の接点から任意の点数のデータを INT 型配列に格納することができます DioInputPoint( DeviceHandle, &Buffer[0], 16, 8 4. 終了処理 DioClose 関数で汎用入出力デバイスの終了処理を行います DioClose( DeviceHandle 8

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

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

3.3 関数個別説明 1. DioOpen 機能 汎用入出力デバイスのオープンを行い 以後の汎用入出力デバイスへのアクセスを行えるようにします 書式 C 言語 (x86 専用 ) HANDLE DioOpen( LPCTSTR Name, DWORD Flag C 言語 (x64 専用 ) HANDLE DioOpen( LPCSTR Name, DWORD Flag Visual Basic Declare Function DioOpen Lib "dpc0224.dll"( _ ByVal Name As String, _ ByVal Flag As Long _ )As Long Visual C#.NET(x86 x64 共用 ) [DllImport("dpc0224.dll")] public static extern IntPtr DioOpen( string lpszname, uint fdwflags Visual C#.NET(x86 専用 ) [DllImport("dpc0224.dll")] public static extern uint DioOpen( string lpszname, uint fdwflags 11

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

使用例 C 言語 (32bit 用コンパイラ ) HANDLE DeviceHandle; DeviceHandle = DioOpen( FBIDIO512, FBIDIO_FLAG_SHARE C 言語 (32bit 用コンパイラで UNICODE を定義している場合 ) HANDLE DeviceHandle; DeviceHandle = DioOpen((LPCTSTR) FBIDIO512, FBIDIO_FLAG_SHARE HANDLE DeviceHandle; char* lpszname = FBIDIO512 ; DeviceHandle = DioOpen((LPCTSTR)lpszName, FBIDIO_FLAG_SHARE HANDLE DeviceHandle; LPCWSTR UnicodeName = L"FBIDIO512"; char DeviceName[256]; int len; len = WideCharToMultiByte(CP_ACP, 0, UnicodeName, -1, NULL, 0, NULL, NULL WideCharToMultiByte(CP_ACP, 0, UnicodeName, -1, DeviceName, len, NULL, NULL DeviceHandle = DioOpen((LPCTSTR)DeviceName, FBIDIO_FLAG_SHARE C 言語 (64bit 用コンパイラ ) HANDLE DeviceHandle; DeviceHandle = DioOpen( FBIDIO512, FBIDIO_FLAG_SHARE 13

Visual Basic Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO512" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_SHARE) Visual C#.NET(x86 x64 共用 ) IntPtr hdevicehandle; string lpszname; lpszname = "FBIDIO512"; hdevicehandle = IFCDIO_ANY.DioOpen(lpszName, IFCDIO_ANY.FBIDIO_FLAG_SHARE Visual Basic.NET(x86 x64 共用 ) Dim hdevicehandle As IntPtr Dim lpszname As String lpszname = "FBIDIO512" & Chr(0) hdevicehandle = IFCDIO_ANY.DioOpen(lpszName, IFCDIO_ANY.FBIDIO_FLAG_SHARE ) デバイス名 FBIDIO512 のデバイスを重複オープン許可でオープンします 14

2. DioClose 機能 汎用入出力デバイスをクローズします 汎用入出力デバイスアクセスのために使用されていた各種リソースの解放を行い 以後の汎用入出力デバイスへのアクセスを禁止します 書式 C 言語 INT DioClose( HANDLE DeviceHandle Visual Basic Declare Function DioClose Lib "dpc0224.dll"( _ ByVal DeviceHandle As Long _ )As Long Visual C#.NET(x86 x64 共用 ) [DllImport("dpc0224.dll")] public static extern uint DioClose( IntPtr hdevicehandle Visual C#.NET(x86 専用 ) [DllImport("dpc0224.dll")] public static extern uint DioClose( uint hdevicehandle Visual Basic.NET(x86 x64 共用 ) Declare Function DioClose Lib "dpc0224.dll"( ByVal hdevicehandle As IntPtr Visual Basic.NET(x86 専用 ) Declare Function DioClose Lib "dpc0224.dll"( ByVal hdevicehandle As Integer 15

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

Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO512" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioClose(DeviceHandle) Visual C#.NET(x86 x64 共用 ) uint nret; IntPtr hdevicehandle; string lpszname; lpszname = FBIDIO512 ; hdevicehandle = IFCDIO_ANY.DioOpenAny(lpszName, IFCDIO_ANY.DIO_FLAG_SHARE nret = IFCDIO_ANY.DioClose(hDeviceHandle Visual Basic.NET(x86 x64 共用 ) Dim nret As Integer Dim lpszname As String Dim hdevicehandle As IntPtr lpszname = "FBIDIO512" hdevicehandle = IFCDIO_ANY.DioOpenAny(lpszName, IFCDIO_ANY.DIO_FLAG_SHARE ) nret = IFCDIO_ANY.DioClose(hDeviceHandle) デバイス名 FBIDIO512 のデバイスのクローズ処理を行います 17

3. DioInputPoint 機能 任意の点数の入力接点の状態を読み込みます 指定した開始接点番号から 1 接点ずつ INT 型の変数にデータが格納されます 書式 C 言語 INT DioInputPoint ( HANDLE DeviceHandle, PINT Buffer, DWORD StartNum, DWORD Num Visual Basic Declare Function DioInputPoint Lib "dpc0224.dll"( _ ByVal DeviceHandle As Long, _ ByRef Buffer As Long, _ ByVal StartNum As Long, _ ByVal Num As Long _ )As Long Visual C#.NET(x86 x64 共用 ) [DllImport("dpc0224.dll")] public static extern uint DioInputPoint( IntPtr hdevicehandle, out int pbuffer, uint dwstartnum, uint dwnum [DllImport("dpc0224.dll")] public static extern uint DioInputPoint( IntPtr hdevicehandle, int[] pbuffer, uint dwstartnum, uint dwnum 18

Visual C#.NET(x86 専用 ) [DllImport("dpc0224.dll")] public static extern uint DioInputPoint( uint hdevicehandle, out int pbuffer, uint dwstartnum, uint dwnum [DllImport("dpc0224.dll")] public static extern uint DioInputPoint( uint hdevicehandle, int[] pbuffer, uint dwstartnum, uint dwnum Visual Basic.NET(x86 x64 共用 ) Declare Function DioInputPoint Lib "dpc0224.dll"( ByVal hdevicehandle As IntPtr, ByRef pbuffer As Integer, ByVal dwstartnum As Integer, ByVal dwnum As Integer Declare Function DioInputPoint Lib "dpc0224.dll"( ByVal hdevicehandle As IntPtr, ByVal pbuffer() As Integer, ByVal dwstartnum As Integer, ByVal dwnum As Integer 19

Visual Basic.NET(x86 専用 ) Declare Function DioInputPoint Lib "dpc0224.dll"( ByVal hdevicehandle As Integer, ByRef pbuffer As Integer, ByVal dwstartnum As Integer, ByVal dwnum As Integer Declare Function DioInputPoint Lib "dpc0224.dll"( ByVal hdevicehandle As Integer, ByVal pbuffer() As Integer, ByVal dwstartnum As Integer, ByVal dwnum As Integer パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Buffer デバイスから読み取ったデータを受け取るバッファを指すポインタ ( 参照渡し ) です StartNum 入力開始接点番号 1~16( 汎用入出力デバイスがもつ接点数の最大値 ) を指定します DI デバイスの場合はピン IN1 が 1 に対応します DIO デバイス ( 双方向 ) の場合ピン I/O1 が 1 に対応します Num 入力接点数を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 3.4 戻り値一覧 をご参照ください 20

使用例 C 言語 INT Ret; HANDLE DeviceHandle; INT Buffer[8]; DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL Ret = DioInputPoint( DeviceHandle, &Buffer[0], 1, 8 Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Buffer(8) As Long Name = "FBIDIO512" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioInputPoint( DeviceHandle, Buffer(0), 1, 8 ) Visual C#.NET(x86 x64 共用 ) IntPtr hdevicehandle; int nbuffer; uint nret; nret = IFCDIO_ANY.DioInputPoint( hdevicehandle, out nbuffer, 1, 8 Visual Basic.NET(x86 x64 共用 ) Dim hdevicehandle As IntPtr Dim nbuffer As Integer Dim nret As Integer nret = IFCDIO_ANY.DioInputPoint( hdevicehandle, nbuffer, 1, 8) デバイスハンドル hdevicehandle の汎用入出力デバイスの接点 1 番から接点 8 番までの接点状態を読み込みます 21

4. DioInputByte 機能 汎用入出力デバイスの接点 8 点分のデータを読み込み 1 バイト (8 ビット ) の変数に格納します 書式 C 言語 INT DioInputByte ( HANDLE DeviceHandle, INT No, PBYTE Value Visual Basic Declare Function DioInputByte Lib "dpc0224.dll"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByRef Value As Byte _ )As Long Visual C#.NET(x86 x64 共用 ) [DllImport("dpc0224.dll")] public static extern uint DioInputByte( IntPtr hdevicehandle, int nno, out byte pbvalue Visual C#.NET(x86 専用 ) [DllImport("dpc0224.dll")] public static extern uint DioInputByte( uint hdevicehandle, int nno, out byte pbvalue 22

Visual Basic.NET(x86 x64 共用 ) Declare Function DioInputByte Lib "dpc0224.dll ( ByVal hdevicehandle As IntPtr, ByVal nno As Integer, ByRef pbvalue As Byte Visual Basic.NET(x86 専用 ) Declare Function DioInputByte Lib "dpc0224.dll ( ByVal hdevicehandle As Integer, ByVal nno As Integer, ByRef pbvalue As Byte パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No 読み込む接点を下記の識別子で指定します FBIDIO_IN1_8 IN1~IN8 の 8 点分のデータを読み込みます FBIDIO_IN9_16 IN9~IN16 の 8 点分のデータを読み込みます Value 読み込まれたデータを格納する変数へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 3.4 戻り値一覧 をご参照ください 23

備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_IN1_8 IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1 FBIDIO_IN9_16 IN16 IN15 IN14 IN13 IN12 IN11 IN10 IN9 使用例 C 言語 INT Ret; HANDLE DeviceHandle; BYTE Value; DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL Ret = DioInputByte( DeviceHandle, FBIDIO_IN1_8, &Value Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Value As Byte Name = "FBIDIO512" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioInputByte( DeviceHandle, FBIDIO_IN1_8, Value ) Visual C#.NET(x86 x64 共用 ) IntPtr hdevicehandle; byte nbuffer; uint nret; nret = IFCDIO_ANY.DioInputByte( hdevicehandle, IFCDIO_ANY.FBIDIO_IN1_8, out nbuffer 24

Visual Basic.NET(x86 x64 共用 ) Dim hdevicehandle As IntPtr Dim nbuffer As Byte Dim nret As Integer nret = IFCDIO_ANY.DioInputByte( hdevicehandle, IFCDIO_ANY.FBIDIO_IN1_8, nbuffer) デバイス名 FBIDIO512 のデバイスの IN1~IN8 の 1 バイトデータを変数 Value に取得します 25

5. DioInputWord 機能 汎用入出力デバイスの接点 16 点分のデータを読み込み 1 ワード (16 ビット ) の変数に格納します 書式 C 言語 INT DioInputWord ( HANDLE DeviceHandle, INT No, PWORD Value Visual Basic Declare Function DioInputWord Lib "dpc0224.dll"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByRef Value As Integer _ )As Long Visual C#.NET(x86 x64 共用 ) [DllImport("dpc0224.dll")] public static extern uint DioInputWord( IntPtr hdevicehandle, int nno, out ushort pwvalue Visual C#.NET(x86 専用 ) [DllImport("dpc0224.dll")] public static extern uint DioInputWord( int hdevicehandle, int nno, out ushort pwvalue 26

Visual Basic.NET(x86 x64 共用 ) Declare Function DioInputWord Lib "dpc0224.dll ( ByVal hdevicehandle As IntPtr, ByVal nno As Integer, ByRef pwvalue As Short Visual Basic.NET(x86 専用 ) Declare Function DioInputWord Lib "dpc0224.dll ( ByVal hdevicehandle As Integer, ByVal nno As Integer, ByRef pwvalue As Short パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No 読み込む接点を下記の識別子で指定します FBIDIO_IN1_16 IN1~IN16 の 16 点分のデータを読み込みます Value 読み込まれたデータを格納する変数へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 3.4 戻り値一覧 をご参照ください 備考 データフォーマット 取得したデータは下記のようにビット毎に接点と対応しています ビット bit15 bit14 bit13 bit2 bit1 bit0 FBIDIO_IN1_16 IN16 IN15 IN14 IN3 IN2 IN1 27

使用例 C 言語 INT Ret; HANDLE DeviceHandle; WORD Value; DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL Ret = DioInputWord( DeviceHandle, FBIDIO_IN1_16, &Value Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Value As Integer Name = "FBIDIO512" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioInputWord( DeviceHandle, FBIDIO_IN1_16, Value ) Visual C#.NET(x86 x64 共用 ) IntPtr hdevicehandle; ushort nbuffer; uint nret; nret = IFCDIO_ANY.DioInputWord( hdevicehandle, IFCDIO_ANY.FBIDIO_IN1_16, out nbuffer Visual Basic.NET(x86 x64 共用 ) Dim hdevicehandle As IntPtr Dim nbuffer As Short Dim nret As Integer nret = IFCDIO_ANY.DioInputWord(hDeviceHandle, IFCDIO_ANY.FBIDIO_IN1_16, nbuffer) デバイス名 FBIDIO512 のデバイスの IN1~IN16 の 1 ワードデータを変数 Value に取得します 28

6. DioOutputPoint 機能 任意の点数の出力接点の出力を制御します 指定した開始接点番号から 1 接点づつ INT 型の変数に格納されたデータで接点を制御します 書式 C 言語 INT DioOutputPoint ( HANDLE DeviceHandle, PINT Buffer, DWORD StartNum, DWORD Num Visual Basic Declare Function DioOutputPoint Lib "dpc0224.dll"( _ ByVal DeviceHandle As Long, _ ByRef Buffer As Long, _ ByVal StartNum As Long, _ ByVal Num As Long _ )As Long Visual C#.NET(x86 x64 共用 ) [DllImport("dpc0224.dll")] public static extern uint DioOutputPoint( IntPtr hdevicehandle, ref int pbuffer, uint dwstartnum, uint dwnum [DllImport("dpc0224.dll")] public static extern uint DioOutputPoint( IntPtr hdevicehandle, int[] pbuffer, uint dwstartnum, uint dwnum 29

Visual C#.NET(x86 専用 ) [DllImport("dpc0224.dll")] public static extern uint DioOutputPoint( uint hdevicehandle, ref int pbuffer, uint dwstartnum, uint dwnum [DllImport("dpc0224.dll")] public static extern uint DioOutputPoint( uint hdevicehandle, int[] pbuffer, uint dwstartnum, uint dwnum Visual Basic.NET(x86 x64 共用 ) Declare Function DioOutputPoint Lib "dpc0224.dll"( ByVal hdevicehandle As IntPtr, ByRef pbuffer As Integer, ByVal dwstartnum As Integer, ByVal dwnum As Integer Declare Function DioOutputPoint Lib "dpc0224.dll"( ByVal hdevicehandle As IntPtr, ByVal pbuffer() As Integer, ByVal dwstartnum As Integer, ByVal dwnum As Integer 30

Visual Basic.NET(x86 専用 ) Declare Function DioOutputPoint Lib "dpc0224.dll"( ByVal hdevicehandle As Integer, ByRef pbuffer As Integer, ByVal dwstartnum As Integer, ByVal dwnum As Integer Declare Function DioOutputPoint Lib "dpc0224.dll"( ByVal hdevicehandle As Integer, ByVal pbuffer() As Integer, ByVal dwstartnum As Integer, ByVal dwnum As Integer パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します Buffer デバイスへ出力するデータのバッファを指すポインタ ( 参照渡し ) です StartNum 出力開始接点番号 1~16( 汎用入出力デバイスがもつ接点数の最大値 ) を指定します DO デバイスの場合はピン OUT1 が 1 に対応します DIO デバイス ( 双方向 ) の場合ピン I/O1 が 1 に対応します Num 出力接点数を指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 3.4 戻り値一覧 をご参照ください 31

使用例 C 言語 INT Ret; HANDLE DeviceHandle; INT Buffer[8]; DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL Buffer[0] = 1; Buffer[1] = 0; Buffer[2] = 0; Buffer[3] = 1; Buffer[4] = 0; Buffer[5] = 1; Buffer[6] = 1; Buffer[7] = 0; Ret = DioOutputPoint( DeviceHandle, &Buffer[0], 1, 8 Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim Buffer(8) As Long Name = "FBIDIO512" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Buffer(0) = 1 Buffer(1) = 0 Buffer(2) = 0 Buffer(3) = 1 Buffer(4) = 0 Buffer(5) = 1 Buffer(6) = 1 Buffer(7) = 0 Ret = DioOutputPoint( DeviceHandle, Buffer(0), 1, 8 ) 32

Visual C#.NET(x86 x64 共用 ) IntPtr hdevicehandle; uint nret; int [] nbuffer = new int[8]; nbuffer[0] = 1; nbuffer[1] = 0; nbuffer[2] = 0; nbuffer[3] = 1; nbuffer[4] = 0; nbuffer[5] = 1; nbuffer[6] = 1; nbuffer[7] = 0; nret = IFCDIO_ANY.DioOutputPoint( hdevicehandle, nbuffer, 1, 8 Visual Basic.NET(x86 x64 共用 ) Dim hdevicehandle As IntPtr Dim nret As Integer Dim nbuffer(8) As Integer nbuffer(0) = 1 nbuffer(1) = 0 nbuffer(2) = 0 nbuffer(3) = 1 nbuffer(4) = 0 nbuffer(5) = 1 nbuffer(6) = 1 nbuffer(7) = 0 nret = IFCDIO_ANY.DioOutputPoint( hdevicehandle, nbuffer, 1, 8 ) デバイス名 FBIDIO1 のデバイスの接点 1 番に 1 接点 2 番に 0 接点 3 番に 0 接点 4 番に 1 接点 5 番に 0 接点 6 番に 1 接点 7 番に 1 接点 8 番に 0 を出力します 33

7. DioOutputByte 機能 汎用入出力デバイスの接点 8 点分を制御します 書式 C 言語 INT DioOutputByte ( HANDLE DeviceHandle, INT No, BYTE Value Visual Basic Declare Function DioOutputByte Lib "dpc0224.dll"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByVal Value As Byte _ )As Long Visual C#.NET(x86 x64 共用 ) [DllImport("fbidio.dll")] public static extern uint DioOutputByte( IntPtr hdevicehandle, int nno, byte bvalue Visual C#.NET(x86 専用 ) [DllImport("dpc0224.dll")] public static extern uint DioOutputByte( uint hdevicehandle, int nno, byte bvalue 34

Visual Basic.NET(x86 x64 共用 ) Declare Function DioOutputByte Lib "dpc0224.dll ( ByVal hdevicehandle As IntPtr, ByVal nno As Integer, ByVal bvalue As Byte Visual Basic.NET(x86 専用 ) Declare Function DioOutputByte Lib "dpc0224.dll ( ByVal hdevicehandle As Integer, ByVal nno As Integer, ByVal bvalue As Byte パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No データを出力する接点を下記の識別子で指定します FBIDIO_OUT1_8 OUT1~OUT8 の 8 点分のデータを出力します FBIDIO_OUT9_16 OUT9~OUT16 の 8 点分のデータを出力します Value 指定した接点へ出力するデータを指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 3.4 戻り値一覧 をご参照ください 35

備考 データフォーマット 指定したデータは下記のようにビット毎に接点と対応しています ビット bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 FBIDIO_OUT1_8 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 FBIDIO_OUT9_16 OUT16 OUT15 OUT14 OUT13 OUT12 OUT11 OUT10 OUT9 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL Ret = DioOutputByte( DeviceHandle, FBIDIO_OUT1_8, 0x12 Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO512" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioOutputByte( DeviceHandle, FBIDIO_OUT1_8, &H12 ) Visual C#.NET(x86 x64 共用 ) IntPtr hdevicehandle; uint nret; nret = IFCDIO_ANY.DioOutputByte( hdevicehandle, IFCDIO_ANY.FBIDIO_OUT1_8, 0x12 Visual Basic.NET(x86 x64 共用 ) Dim hdevicehandle As IntPtr Dim nret As Integer nret = IFCDIO_ANY.DioOutputByte( hdevicehandle, IFCDIO_ANY.FBIDIO_OUT1_8, &H12) デバイス名 FBIDIO512 のデバイスの OUT2 と OUT5 を ON それ以外は OFF にします 36

8. DioOutputWord 機能 汎用入出力デバイスの接点 16 点分を制御します 書式 C 言語 INT DioOutputWord ( HANDLE DeviceHandle, INT No, WORD Value Visual Basic Declare Function DioOutputWord Lib "dpc0224.dll"( _ ByVal DeviceHandle As Long, _ ByVal No As Long, _ ByVal Value As Integer _ )As Long Visual C#.NET(x86 x64 共用 ) [DllImport("dpc0224.dll")] public static extern uint DioOutputWord( IntPtr hdevicehandle, int nno, ushort wvalue Visual C#.NET(x86 専用 ) [DllImport("dpc0224.dll")] public static extern uint DioOutputWord( uint hdevicehandle, int nno, ushort wvalue 37

Visual Basic.NET(x86 x64 共用 ) Declare Function DioOutputWord Lib "dpc0224.dll"( ByVal hdevicehandle As IntPtr, ByVal nno As Integer, ByVal wvalue As Short Visual Basic.NET(x86 専用 ) Declare Function DioOutputWord Lib "dpc0224.dll"( ByVal hdevicehandle As Integer, ByVal nno As Integer, ByVal wvalue As Short パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します No データを出力する接点を下記の識別子で指定します FBIDIO_OUT1_16 OUT1~OUT16 の 16 点分のデータを出力します Value 指定した接点へ出力するデータを指定します 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 3.4 戻り値一覧 をご参照ください 38

備考 データフォーマット 指定したデータは下記のようにビット毎に接点と対応しています ビット bit15 bit14 bit13 bit2 bit1 bit0 FBIDIO_OUT1_16 OUT16 OUT15 OUT14 OUT3 OUT2 OUT1 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL Ret = DioOutputWord( DeviceHandle, FBIDIO_OUT1_16, 0x1234 Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO512" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioOutputWord( DeviceHandle, FBIDIO_OUT1_16, &H1234 ) Visual C#.NET(x86 x64 共用 ) IntPtr hdevicehandle; uint nret; nret = IFCDIO_ANY.DioOutputDword( hdevicehandle, IFCDIO_ANY.FBIDIO_OUT1_16, 0x1234 Visual Basic.NET(x86 x64 共用 ) Dim hdevicehandle As IntPtr Dim nret As Integer nret = IFCDIO_ANY.DioOutputDword( hdevicehandle, _ IFCDIO_ANY.FBIDIO_OUT1_16, &H1234) デバイス名 FBIDIO512 のデバイスの OUT3 OUT5 OUT6 OUT10 OUT13 を ON それ以外を OFF にします 39

9. DioEintSetIrqMask 機能 エッジ検出割り込みマスク状態を設定します 書式 C 言語 INT DioEintSetIrqMask ( HANDLE DeviceHandle, DWORD IrqMask Visual Basic Declare Function DioEintSetIrqMask Lib "dpc0224.dll"( _ ByVal DeviceHandle As Long, _ ByVal IrqMask As Long _ Visual C#.NET(x86 x64 共用 ) [DllImport("dpc0224.dll")] public static extern uint DioEintSetIrqMask ( IntPtr hdevicehandle, uint dwsetirqmask, Visual C#.NET(x86 専用 ) [DllImport("dpc0224.dll")] public static extern uint DioEintSetIrqMask ( uint hdevicehandle, uint dwsetirqmask, Visual Basic.NET(x86 x64 共用 ) Declare Function DioEintSetIrqMask Lib "dpc0224.dll" ( ByVal hdevicehandle As IntPtr, ByVal dwsetirqmask As Integer Visual Basic.NET(x86 専用 ) Declare Function DioEintSetIrqMask Lib "dpc0224.dll" ( ByVal hdevicehandle As Integer, ByVal dwsetirqmask As Integer 40

パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します IrqMask IR1~IR8 のエッジ検出割り込みのマスク / アンマスクを設定するデータを指定します bit31 bit8 bit7 bit0 予約 IR8 IR1 電源投入時はすべてマスク状態 (0) です 0 マスク 1 アンマスク 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 3.4 戻り値一覧 をご参照ください 備考 DioEintSetEdgeConfig 関数実行後は 本関数を必ず実行してください 41

使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL Ret = DioEintSetIrqMask( DeviceHandle, 0x0000000f Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO512" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintSetIrqMask( DeviceHandle, &HF ) Visual C#.NET(x86 x64 共用 ) IntPtr hdevicehandle; uint nret; nret = IFCDIO_ANY.DioEintSetIrqMask( hdevicehandle, 0x0000000f Visual Basic.NET(x86 x64 共用 ) Dim hdevicehandle As IntPtr Dim nret As Integer nret = IFCDIO_ANY.DioEintSetIrqMask( hdevicehandle, &H0000000f ) デバイス名 FBIDIO512 のデバイスの IN1~IN4 に対するエッジ検出割り込みを有効にします 42

10. DioEintGetIrqMask 機能 エッジ検出割り込みマスク状態を取得します 書式 C 言語 INT DioEintGetIrqMask ( HANDLE DeviceHandle, PDWORD IrqMask Visual Basic Declare Function DioEintGetIrqMask Lib "dpc0224.dll"( _ ByVal DeviceHandle As Long, _ ByRef IrqMask As Long _ Visual C#.NET(x86 x64 共用 ) [DllImport("dpc0224.dll")] public static extern uint DioEintGetIrqMask ( IntPtr hdevicehandle, out uint pdwsetirqmask Visual C#.NET(x86 専用 ) [DllImport("dpc0224.dll")] public static extern uint DioEintGetIrqMask ( uint hdevicehandle, out uint pdwsetirqmask Visual Basic.NET(x86 x64 共用 ) Declare Function DioEintGetIrqMask Lib "dpc0224.dll" ( ByVal hdevicehandle As Integer, ByRef pdwsetirqmask As Integer Visual Basic.NET(x86 専用 ) Declare Function DioEintGetIrqMask Lib "dpc0224.dll" ( ByVal hdevicehandle As IntPtr, ByRef pdwsetirqmask As Integer 43

パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します IrqMask IR1~IR8 のエッジ検出割り込みのマスク / アンマスクを取得する変数へのポインタ ( 参照渡し ) を指定します IrqMask の形式は 次のようになっています bit31 bit8 bit7 bit0 予約 IR8 IR1 0 マスク 1 アンマスク 戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 3.4 戻り値一覧 をご参照ください 44

使用例 C 言語 INT Ret; HANDLE DeviceHandle; DWORD IrqMask; DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL Ret = DioEintGetIrqMask( DeviceHandle, &IrqMask Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim IrqMask As Long Name = "FBIDIO512" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintGetIrqMask( DeviceHandle, IrqMask) Visual C#.NET(x86 x64 共用 ) uint dwgetirqmask; IntPtr hdevicehandle; uint nret; nret = IFCDIO_ANY.DioEintGetIrqMask( hdevicehandle, out dwgetirqmask Visual Basic.NET(x86 x64 共用 ) Dim dwgetirqmask As Integer Dim hdevicehandle As IntPtr Dim nret As Integer nret = IFCDIO_ANY.DioEintGetIrqMask( hdevicehandle, dwgetirqmask) デバイス名 FBIDIO512 のデバイスの割り込みマスク状態を IrqMask へ返します 45

11. DioEventRequestPendingEx 機能 汎用入出力デバイスの割り込みイベント要求を待ちます 書式 C 言語 INT DioEventRequestPendingEx ( HANDLE DeviceHandle, PDWORD EventEnableMask, PDWORD EventBuf, LPOVERLAPPED Overlapped, Visual Basic Declare Function DioEventRequestPendingEx Lib "dpc0224.dll"( _ ByVal DeviceHandle As Long, _ ByRef EventEnableMask As Long, _ ByRef EventBuf As Long, _ ByRef Overlapped As OVERLAPPED _ )As Long Visual C#.NET(x86 x64 共用 ) [DllImport("dpc0224.dll")] public static extern uint DioEventRequestPendingEx ( IntPtr hdevicehandle, uint[] pdweventenablemask, IntPtr peventbuf, IntPtr lpoverlapped Visual C#.NET(x86 専用 ) [DllImport("dpc0224.dll")] public static extern uint DioEventRequestPendingEx ( uint hdevicehandle, uint[] pdweventenablemask, IntPtr peventbuf, IntPtr lpoverlapped 46

Visual Basic.NET(x86 x64 共用 ) Declare Function DioEventRequestPendingEx Lib "dpc0224.dll"( ByVal hdevicehandle As IntPtr, ByVal dweventenablemask() As Integer, ByVal peventbuf As IntPtr, BaVal lpoverlapped As IntPtr Visual Basic.NET(x86 専用 ) Declare Function DioEventRequestPendingEx Lib "dpc0224.dll"( ByVal hdevicehandle As Integer, ByVal dweventenablemask() As Integer, ByVal peventbuf As IntPtr, ByVal lpoverlapped As IntPtr パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します 47

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

IR1~IR8 立下りエッジ検出イベント bit0 IR1 に立下りエッジが検出されたときのイベント bit7 IR8 に立下りエッジが検出されたときのイベント bit8 予約 bit31 予約 IR1~IR8 立上りエッジ検出イベント bit0 IR1 に立上りエッジが検出されたときのイベント bit7 IR8 に立上りエッジが検出されたときのイベント bit8 予約 bit31 予約 Overlapped イベント待ちに使用する Overlapped 構造体へのポインタ ( 参照渡し ) を指定します ( 非同期処理 ) また NULL(0) を指定すると イベントが発生するまで DioEventRequestPendingEx 関数は 処理を戻しません ( 同期処理 ) 戻り値 DioEventRequestPendingEx 関数は Overlapped に NULL(0) 以外が指定された場合 FBIDIO_ERROR_IO_PENDING を返します その後 Win32API の WaitForSingleObject 関数等を呼び出して イベント待ちを行ってください Overlapped に NULL(0) が指定された場合 DioEventRequestPendingEx 関数は イベント待ち状態になり イベントが発生したときに FBIDIO_ERROR_SUCCESS を返します いずれの場合も イベント発生後 EventBuf が指す位置へ 発生したイベントの情報が返されます FBIDIO_ERROR_IO_PENDING FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 3.4 戻り値一覧 をご参照ください 備考 DioEintSetIrqMask 関数で イベントを有効にしていなければイベントは発生しません イベント待ち処理を連続して実行する場合 Overlapped 構造体に指定するイベントハンドルは自動リセットを指定して生成して下さい 手動リセットで生成されたイベントハンドルを使用し イベント待ちの処理を抜けた後で ResetEvent を実行された場合 その間に発生したイベントを取りこぼす可能性があります 49

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

Visual Basic 非同期処理 Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim EventEnableMask(5) As Long Dim EventBuf(5) As Long Dim Overlapped As OVERLAPPED Name = "FBIDIO512" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) EventEnableMask(0) = 0; EventEnableMask(1) = &HF; EventEnableMask(2) = 0; EventEnableMask(3) = 0; EventEnableMask(4) = 0; Overlapped.Offset = 0 Overlapped.OffsetHigh = 0 Overlapped.hEvent = CreateEvent(0, False, False, 0) Ret = DioEventRequestPendingEx( DeviceHandle, EventEnableMask(0), EventBuf(0), _ Overlapped ) If Ret = FBIDIO_ERROR_IO_PENDING Then Ret = WaitForSingleObject(Overlapped.hEvent, INFINITE) End If 同期処理 Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim EventEnableMask(5) As Long Dim EventBuf(5) As Long Name = "FBIDIO512" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) EventEnableMask(0) = 0; EventEnableMask(1) = &HF; EventEnableMask(2) = 0; EventEnableMask(3) = 0; EventEnableMask(4) = 0; Ret = DioEventRequestPendingEx( DeviceHandle, EventEnableMask(0), EventBuf(0), 0) 51

Visual C#.NET(x86 x64 共用 ) 非同期処理 uint[] dweventenablemask = new uint[5]; uint[] dweventbuff = new uint[5]; IFCDIO_ANY.OVERLAPPED lpoverlapped = new IFCDIO_ANY.OVERLAPPED( IntPtr hdevicehandle; uint nret; GCHandle Pinnedovl; GCHandle PinnedEvent; Pinnedovl = GCHandle.Alloc(lpOverlapped, GCHandleType.Pinned PinnedEvent = GCHandle.Alloc(dwEventBuff, GCHandleType.Pinned dweventenablemask[0] = 0; dweventenablemask[1] = 0x0000000F; dweventenablemask[2] = 0; dweventenablemask[3] = 0; dweventenablemask[4] = 0; nret = IFCDIO_ANY.DioEventRequestPendingEx( hdevicehandle, EventEnableMask, PinnedEvent.AddrOfPinnedObject(), Pinnedovl.AddrOfPinnedObject() // 割り込み終了後 解放する Pinnedovl.Free( PinnedEvent.Free( 52

Visual C#.NET(x86 x64 共用 ) 同期処理 uint[] dweventenablemask = new uint[5]; uint[] dweventbuff = new uint[5]; IntPtr hdevicehandle; uint nret; GCHandle PinnedEvent; PinnedEvent = GCHandle.Alloc(dwEventBuff, GCHandleType.Pinned dweventenablemask[0] = 0; dweventenablemask[1] = 0x0000000F; dweventenablemask[2] = 0; dweventenablemask[3] = 0; dweventenablemask[4] = 0; nret = IFCDIO_ANY.DioEventRequestPendingEx( hdevicehandle, EventEnableMask, PinnedEvent.AddrOfPinnedObject(), IntPtr.Zero // 割り込み終了後 解放する PinnedEvent.Free( 53

Visual Basic.NET(x86 x64 共用 ) 非同期処理 Dim dweventenablemask(5) As Integer Dim dweventbuf(5) As Integer Dim lpoverlapped As IFCDIO_ANY.OVERLAPPED = New IFCDIO_ANY.OVERLAPPED Dim hdevicehandle As IntPtr Dim nret As Integer Dim Pinnedovl As GCHandle Dim PinnedEvent As GCHandle Pinnedovl = GCHandle.Alloc(lpOverlapped, GCHandleType.Pinned) PinnedEvent = GCHandle.Alloc(dwEventBuf, GCHandleType.Pinned) dweventenablemask(0) = 0 dweventenablemask(1) = &H0000000F dweventenablemask(2) = 0 dweventenablemask(3) = 0 dweventenablemask(4) = 0 nret = IFCDIO_ANY.DioEventRequestPendingEx( hdevicehandle, _ dweventenablemask, _ PinnedEvent.AddrOfPinnedObject() _, Pinnedovl.AddrOfPinnedObject()) ' 割り込み処理終了後 解放する Pinnedovl.Free() PinnedEvent.Free() 54

Visual Basic.NET(x86 x64 共用 ) 同期処理 Dim dweventenablemask(5) As Integer Dim dweventbuf(5) As Integer Dim hdevicehandle As IntPtr Dim nret As Integer Dim PinnedEvent As GCHandle PinnedEvent = GCHandle.Alloc(dwEventBuf, GCHandleType.Pinned) dweventenablemask(0) = 0 dweventenablemask(1) = &H0000000F dweventenablemask(2) = 0 dweventenablemask(3) = 0 dweventenablemask(4) = 0 nret = IFCDIO_ANY.DioEventRequestPendingEx( hdevicehandle, _ dweventenablemask, _ PinnedEvent.AddrOfPinnedObject() _, IntPtr.Zero) ' 割り込み処理終了後 解放する PinnedEvent.Free() デバイス名 FBIDIO512 のデバイスから IR1 から IR4 立ち下がりエッジ検出 のイベント要求を待ちます 55

12. DioEintSetEdgeConfig 機能 エッジ検出機能を設定します 書式 C 言語 INT DioEintSetEdgeConfig ( HANDLE DeviceHandle, DWORD FallEdgeConfig, DWORD RiseEdgeConfig Visual Basic Declare Function DioEintSetEdgeConfig Lib "dpc0224.dll"( _ ByVal DeviceHandle As Long, _ ByVal FallEdgeConfig As Long, _ ByVal RiseEdgeConfig As Long _ Visual C#.NET(x86 x64 共用 ) [DllImport("dpc0224.dll")] public static extern uint DioEintSetEdgeConfig ( IntPtr hdevicehandle, uint dwsetfalledgeconfig, uint dwsetriseedgeconfig, Visual C#.NET(x86 専用 ) [DllImport("dpc0224.dll")] public static extern uint DioEintSetEdgeConfig ( uint hdevicehandle, uint dwsetfalledgeconfig, uint dwsetriseedgeconfig, 56

Visual Basic.NET(x86 x64 共用 ) Declare Function DioEintSetEdgeConfig Lib "dpc0224.dll"( ByVal hdevicehandle As IntPtr, ByVal dwsetfalledgeconfig As Integer, ByVal dwsetriseedgeconfig As Integer Visual Basic.NET(x86 専用 ) Declare Function DioEintSetEdgeConfig Lib "dpc0224.dll"( ByVal hdevicehandle As Integer, ByVal dwsetfalledgeconfig As Integer, ByVal dwsetriseedgeconfig As Integer パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します FallEdgeConfig IR1~IR8 の立下りエッジ検出を有効にするか 無効にするかを指定します bit31 bit8 bit7 bit0 予約 IR8 IR1 電源投入時はすべて無効 (0) です 0 無効 1 有効 RiseEdgeConfig IR1~IR8 の立上りエッジ検出を有効にするか 無効にするかを指定します bit31 bit8 bit7 bit0 予約 IR8 IR1 電源投入時はすべて無効 (0) です 0 無効 1 有効 57

戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 3.4 戻り値一覧 をご参照ください 備考 本関数実行後は DioEintSetIrqMask 関数を必ず実行してください 本関数は同じ IRx に対して立下り / 立ち上がりの両エッジを指定することは出来ません 両エッジを指定した場合 立ち上がりエッジが優先されます 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL Ret = DioEintSetEdgeConfig( DeviceHandle, 0x0000000f, 0x000000f0 Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO512" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintSetEdgeConfig( DeviceHandle, &HF, &HF0 ) Visual C#.NET(x86 x64 共用 ) IntPtr hdevicehandle; uint nret; nret = IFCDIO_ANY.DioEintSetEdgeConfig( hdevicehandle, 0x0000000f, 0x000000f0 Visual Basic.NET(x86 x64 共用 ) Dim hdevicehandle As IntPtr Dim nret As Integer nret = IFCDIO_ANY.DioEintSetEdgeConfig( hdevicehandle, &H0000000f, &H000000f0 ) デバイス名 FBIDIO512 の IR1~IR4 に対する立下りエッジ検出と IR5~IR8 に対する立上りエッジ検出を有効にします 58

13. DioEintGetEdgeConfig 機能 現在のエッジ検出設定を取得します 書式 C 言語 INT DioEintGetEdgeConfig ( HANDLE DeviceHandle, PDWORD FallEdgeConfig, PDWORD RiseEdgeConfig Visual Basic Declare Function DioEintGetEdgeConfig Lib "dpc0224.dll"( _ ByVal DeviceHandle As Long, _ ByRef FallEdgeConfig As Long, _ ByRef RiseEdgeConfig As Long _ Visual C#.NET(x86 x64 共用 ) [DllImport("dpc0224.dll")] public static extern uint DioEintGetEdgeConfig ( IntPtr hdevicehandle, out uint pdwgetfalledgeconfig, out uint pdwgetriseedgeconfig Visual C#.NET(x86 専用 ) [DllImport("dpc0224.dll")] public static extern uint DioEintGetEdgeConfig ( uint hdevicehandle, out uint pdwgetfalledgeconfig, out uint pdwgetriseedgeconfig 59

Visual Basic.NET(x86 x64 共用 ) Declare Function DioEintGetEdgeConfig Lib "dpc0224.dll"( ByVal hdevicehandle As IntPtr, ByRef pdwsetfalledgeconfig As Integer, ByRef pdwsetriseedgeconfig As Integer Visual Basic.NET(x86 専用 ) Declare Function DioEintGetEdgeConfig Lib "dpc0224.dll"( ByVal hdevicehandle As Integer, ByRef pdwsetfalledgeconfig As Integer, ByRef pdwsetriseedgeconfig As Integer パラメータ DeviceHandle DioOpen 関数で取得したデバイスハンドルを指定します FallEdgeConfig IR1~IR8 の立下りエッジ検出設定状態を返す変数へのポインタ ( 参照渡し ) を指定します FallEdgeConfig には 次の形式で立下りエッジ検出設定が返されます bit31 bit8 bit7 bit0 予約 IR8 IR1 電源投入時はすべて無効 (0) です 0 無効 1 有効 RiseEdgeConfig IR1~IR8 の立上りエッジ検出設定状態を返す変数へのポインタ ( 参照渡し ) を指定します RiseEdgeConfig には 次の形式で立上りエッジ検出設定が返されます bit31 bit8 bit7 bit0 予約 IR8 IR1 電源投入時はすべて無効 (0) です 0 無効 1 有効 60

戻り値 正常終了した場合は FBIDIO_ERROR_SUCCESS が返されます FBIDIO_ERROR_SUCCESS 以外の値が返された場合については 3.4 戻り値一覧 をご参照ください 使用例 C 言語 INT Ret; HANDLE DeviceHandle; DWORD FallEdgeConfig, RiseEdgeConfig; DeviceHandle = DioOpen("FBIDIO512", FBIDIO_FLAG_NORMAL Ret = DioEintGetEdgeConfig( DeviceHandle, &FallEdgeConfig, &RiseEdgeConfig Visual Basic Dim Ret As Long Dim Name As String Dim DeviceHandle As Long Dim FallEdgeConfig As Long, RiseEdgeConfig As Long Name = "FBIDIO512" & Chr( 0 ) DeviceHandle = DioOpen(Name, FBIDIO_FLAG_NORMAL) Ret = DioEintGetEdgeConfig( DeviceHandle, FallEdgeConfig, RiseEdgeConfig) Visual C#.NET(x86 x64 共用 ) uint dwgetfalledgeconfig, dwgetriseedgeconfig; IntPtr hdevicehandle; uint nret; nret = IFCDIO_ANY.DioEintGetEdgeConfig( hdevicehandle, out dwgetfalledgeconfig, out dwgetriseedgeconfig Visual Basic.NET(x86 x64 共用 ) Dim dwgetfalledgeconfig As Long, dwgetriseedgeconfig As Long Dim hdevicehandle As IntPtr Dim nret As Integer nret = IFCDIO_ANY.DioEintGetEdgeConfig( hdevicehandle, dwgetfalledgeconfig, _ dwgetriseedgeconfig) デバイス名 FBIDIO512 の立下りエッジ検出設定状態を FallEdgeConfig に 立上りエッジ検出設定を RiseEddgeConfig へ返します 61

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

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

第 4 章サンプルプログラム 各言語用に用意したサンプルプログラムの概要を説明します 4.1 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル *.dsp を開き ビルドしてください Visual Basic の場合 Visual Basic を起動し プロジェクトファイル *.vbp を開き ビルドしてください Visual C++.NET の場合 Visual Studio を起動し ファイル メニューから 開く プロジェクト を選び プロジェクトファイル *.vcproj を開き ビルドしてください Visual C#.NET の場合 Visual Studio を起動し ファイル メニューから 開く プロジェクト を選び プロジェクトファイル *.csproj 1 を開き ビルドしてください Visual Basic.NET の場合 Visual Studio を起動し ファイル メニューから 開く プロジェクト を選び プロジェクトファイル *.vbproj 1 を開き ビルドしてください 1 クラスライブラリもビルドされます 4.2 サンプルプログラム一覧各サンプルプログラムの概要は 下記の様になります サンプルプログラム名 InputByte OutputByte Event 入力サンプリングプログラム出力サンプリングプログラム割り込みサンプルプログラム 概要 64

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