Windows 11に対応したチュートリアルを公開しています。
ハードウェア / ソフトウェアのセットアップから外部機器との配線。そして、標準添付の高機能版デジタル入出力ドライバソフトウェア[ API-DIO(WDM) ]を使用したプログラミング(Visual Basic 2005)の作成まで。デジタル入出力デバイスの準備からプログラム開発までの一連の流れを解説します。
インストールと初期設定 [API-DIO(WDM) ドライバの場合]
ドライバソフトウェアのインストール

デバイスを実装する前に、添付CD-ROM[API-PAC(W32)]からデジタル入出力用ドライバ[API-DIO(WDM)]をインストールします。
デバイスの実装

いったんパソコンをシャットダウン(電源OFF)してから、デバイス(PCIボードやPCカード)をパソコンに実装します。PCIボードやPCI Expressボードを複数枚使用する場合は、同一型式のデバイスを区別するボードID(ロータリースイッチ)がユニークになるように設定を変更してください。
デバイスのインストール

パソコンを電源ON、Windowsが起動したら『新しいハードウェアの検出ウィザード』が立ち上がりますので、CD-ROM[API-PAC(W32)]からセットアップ情報(INF)ファイルのあるフォルダを指定してください。
初期設定と診断プログラム

デバイスマネージャを起動[共通設定]タブをクリックしてデバイス名などの初期設定を行います。「診断」ボタンをクリックするとデバイスの動作を簡単に確認することができます。診断した結果のレポートも出力可能です。
外部機器との接続とプログラミング(Visual Basic 2005)
外部機器との接続
デジタル入出力デバイスのインターフェイスコネクタと外部機器(外部回路)とをケーブルまたは端子台を利用して接続します。ここで必要となる情報は、コネクタの信号配置とI/Oポートマップです。両者の関係は、デバイスの解説書に詳しく書かれていますので、簡単に外部機器との接続を行うことができます。ここでは、PIO-16/16L(PCI)Hと外部機器との接続を例に解説します。
PIO-16/16L(PCI)H コネクタの信号配置図

PIO-16/16L(PCI)Hのポート・ビットとコネクタ信号ピンの関係を表した図

入力+0ポート D0ビット(論理ビット I00)に接続したスイッチのON/OFFを読み取る

例えば『入力の+0ポートのD0ビット』すなわち、信号名『I-00』とスイッチとの関連付けを行う場合はこのように配線します。
現在のスイッチの状態を調べる場合には、『入力の+0ポートのD0ビット』を調べて”1”が入力されていたら”ON”、“0”が入力されていたら”OFF”と判断することができます。
Visual Basic 2005でのプログラム例(簡略)
- 初期化処理
-
DeviceName = "DIO000" 'デバイス名を変数に格納
Ret = DioInit(DeviceName, Id) '初期化処理関数を実行
- 入力処理
-
BitNo = 0 '入力ビット指定用変数に[0]を設定
Ret = DioInpBit(Id, BitNo, Data) '入力0ビットのデータを変数に格納
- 終了処理
-
Ret = DioExit(Id) '終了処理関数実行(デバイスハンドル開放)
出力+0ポート D0ビット(論理ビット O00)に接続したLEDを点灯/消灯させる

同様に『出力の+0ポートのD0ビット』すなわち、信号名『O-20』とLED(ランプ)を関連付ける場合は以下のように配線します。
このLEDを点灯/消灯させる場合は、『出力の+0ポートのD0ビット』に”1”を出力すれば点灯、“0”を出力すれば消灯します。
Visual Basic 2005でのプログラム例(簡略)
- 初期化処理
-
DeviceName = "DIO000" 'デバイス名を変数に格納
Ret = DioInit(DeviceName, Id) '初期化処理関数を実行
- 入力処理
-
BitNo = 0 '出力ビット指定用変数に[0]を設定
Ret = DioOutBit(Id, BitNo, 1) '出力0ビットに[1]をセット
- 終了処理
-
Ret = DioExit(Id) '終了処理関数実行(デバイスハンドル開放)
高機能版デジタル入出力ドライバソフトウェア API-DIO(WDM)
提供されるAPI関数一覧
デジタル入出力ドライバソフトウェア API-DIO(WDM) は、当社製デジタル入出力ボード/カードを簡単に制御できる、さまざまな関数を用意しています。それぞれの関数は、処理ごとに分かりやすく分類されており、また処理の内容が一目で分かるような名称となっています。これらの関数を使用すれば、さらに高度な処理も可能です。
共通関数(初期化・終了処理、デジタルフィルタなど)
DioInit |
初期化処理 |
DioExit |
終了処理 |
DioResetDevice |
デバイスとドライバの初期化 |
DioGetErrorString |
エラー内容の取得 |
DioQueryDeviceName |
使用可能なデバイスの一覧を取得 |
DioGetMaxPorts |
使用可能入出力ポート数を取得 |
DioGetDeviceInfo |
デバイスの情報を取得 |
8255搭載ボード/カード(双方向入出力)専用関数
DioSet8255Mode |
8255モード設定をチップ単位で設定 |
DioGet8255Mode |
8255モード設定をチップ単位で取得 |
入出力切り替え関数
DioSetIoDirection |
I/Oポートの入出力方向を設定 |
DioGetIoDirection |
I/Oポートの入出力方向を取得 |
簡易入出力関数
DioInpByte |
指定ポートのデジタル入力処理 |
DioOutByte |
指定ポートのデジタル出力処理 |
DioEchoBackByte |
指定ポートのリードバックデータ入力処理 |
DioInpBit |
指定ビットのデジタル入力処理 |
DioOutBit |
指定ビットのデジタル出力処理 |
DioEchoBackBit |
指定ビットのリードバックデータ入力処理 |
複数バイト(ビット)入出力関数
DioInpMultiByte |
指定ポートのデジタル入力処理(複数バイト) |
DioOutMultiByte |
指定ポートのデジタル出力処理(複数バイト) |
DioEchoBackMultiByte |
指定ポートのリードバックデータ入力処理(複数バイト) |
DioInpMultiBit |
指定ビットのデジタル入力処理(複数ビット) |
DioOutMultiBit |
指定ビットのデジタル出力処理(複数ビット) |
DioEchoBackMultiBit |
指定ビットのリードバックデータ入力処理(複数ビット) |
トリガ関数
DioNotifyTrg |
指定した論理ビットのトリガ監視を開始 |
DioStopNotifyTrg |
指定した論理ビットのトリガ監視を停止 |
DioSetTrgCallBackProc |
DioNotifyTrg関数用コールバック関数の登録 |
割り込み機能関数
DioNotifyInterrupt |
割り込みイベント要因の設定 |
DioSetInterruptCallBackProc |
DioNotifyInterrupt関数用コールバック関数の登録 |
デジタルフィルタ機能関数
DioSetDigitalFilter |
デジタルフィルタを設定 |
DioGetDigitalFilter |
デジタルフィルタ設定値を取得 |
PIO-32DM(PCI)専用関数 - モード設定関数
DioDmSetDirection |
指定したデバイスの入出力方向を設定 |
DioDmGetDirection |
指定したデバイスの入出力方向を取得 |
DioDmSetStandAlone |
指定したデバイスをスタンドアロンに設定 |
DioDmSetMaster |
指定したデバイスをマスタに設定 |
DioDmSetSlave |
指定したデバイスをスレーブに設定 |
PIO-32DM(PCI)専用関数 - サンプリング/ジェネレーティング条件設定関数
DioDmSetStartTrigger |
サンプリング、ジェネレーティングのスタート条件を設定 |
DioDmSetStartPattern |
スタート条件のパターン一致条件を設定 |
DioDmSetClockTrigger |
サンプリング/ジェネレーティングのクロック条件を設定 |
DioDmSetInternalClock |
内部クロック使用時のクロック値の設定 |
DioDmSetStopTrigger |
サンプリング/ジェネレーティングのストップ条件を設定 |
DioDmSetStopNumber |
ストップ条件として、停止個数を設定 |
DioDmSetTransferStartWait |
ジェネレーティング買い指示のウェイトを設定 |
PIO-32DM(PCI)専用関数 - リセット関数
PIO-32DM(PCI)専用関数 - バッファ設定関数
DioDmSetBuffer |
サンプリング/ジェネレーティングに使用するデータバッファの設定 |
PIO-32DM(PCI)専用関数 - スタート/ストップ関数
DioDmTransferStart |
サンプリング/ジェネレーティングを開始 |
DioDmTransferStop |
サンプリング/ジェネレーティングを停止 |
PIO-32DM(PCI)専用関数 - ステータス関数
DioDmGetStatus |
転送ステータスの取得 |
DioDmGetCount |
転送カウント数を取得 |
DioDmGetWritePointer |
データバッファ上の転送位置を取得 |
PIO-32DM(PCI)専用関数 - メッセージ通知関数
DioDmSetStopEvent |
転送完了のメッセージを通知するように設定 |
DioDmSetStopCallBackProc |
DioDmSetStopEvent関数で設定した転送完了のイベントが発生した場合に呼び出されるコールバック関数を登録 |
DioDmSetCountEvent |
指定個数転送完了のメッセージを通知するように設定 |
DioDmSetCountCallBackProc |
DioDmSetCountEvent関数で設定した指定個数転送完了のイベントが発生した場合に呼び出されるコールバック関数を登録 |
親切で分りやすいオンラインヘルプファイルを提供
サンプルプログラム
単純入出力、複数ポート/ビットの入出力、トリガ監視、割り込み(コールバック)など豊富な種類のサンプルプログラムを添付。Visual Basic 版の他にも Visual C++ 版 や Visual C# 版も用意されています。
わかりやすいオンラインヘルプ
わかりやすい関数リファレンスなどを収録した、オンラインヘルプファイルが付属しています。お客様のプログラム開発を強力に支援します。
関数リファレンスのイメージ (Visual Basic 部分のみ抜粋)
ポート単位のデジタル入力関数 『DioInpByte』 リファレンス
- 機能
- 指定した1ポート(8ビット)からデジタルデータの入力を行い、そのデータを変数に格納します。
- 書式
-
Visual Basic 2005 の場合
Dim Id As Short
Dim PortNo As Short
Dim Data As Byte
Dim Ret As Integer
Ret = DioInpByte(Id, PortNo, Data)
- 引数
-
- Id:デバイスハンドルを指定します。このデバイスハンドルはDioInitで取得したものです。
- PorNot:入力論理ポート番号を指定します。入力論理ポート番号は、デバイスの入力ポートの先頭を0として最後の入力ポートまで、連続で付けられた番号です。デジタル入力を行う論理ポート番号を指定します。
- Data:デジタル入力データを格納する変数を指定します。
- Ret:終了情報(戻り値)→正常終了:0、エラー: 0以外
デジタル入出力の使い方をさらに詳しく知りたい
プログラミングの実体験と基礎知識を学習できる! 基礎から学べる実習セミナー
基礎から学ぼう! 計測制御・通信デバイス テクニカルセミナー デジタル入出力実習コース
コンテックでは、お客様の計測制御システム構築を支援する技術セミナーを定期的に開催しています。実習コースでは、1人1台のノートパソコンと計測制御機器を使った実践プログラミングを体験いただきます。コースそれぞれに計測制御を基礎から学べるセッションを設けておりますので、初心者の方でも安心です。