概要

Km2Net USB-IO2.0(AKI)付属サンプルプログラムはVisual BASIC 2008 Expressで記載されている。私はVisual C++で使用したいのでまず付属プログラムを解析してみた。付属プログラムはVectorにも有りますが配布・転載は可能ですが改変は行わないで下さいと記載があるため各関数の説明をするに留める。なおVisual Basicは殆ど使用していないので用語等がC++風になっているのは容赦されたい。

フォームのコントロール名

プログラムの動作

Form1_Load

プログラムが起動されるとまずこの関数が呼び出される
ボタン等の各コントロールが初期化される。

btnConnect_Click

接続ボタンがクリックされるとこの関数が呼び出される
openDevice関数でHIDデバイスを開きUSB-IOと通信を行いUSB-IOの入出力ピンが入力か出力かを取得する。
chgStInColor・chgIOColor関数によりピンの設定をフォームに表示する。実際にUSB-IOの入出力の状態を変更するには設定変更ボタンをクリックする必要があります。

btnStIn_Click

入力設定の各ビットがクリックされるとこの関数が呼び出される
コマンド0xF8でSendRecv関数を呼び出し各ピンの入出力設定およびプルアップの状況を取得する
5バイト目にJ-1の入出力設定(1:入力 0:出力)、6バイト目にJ-2が取得される。
2バイト目の0ビットが1の場合プルアップがされていることを示す。
chgStInColor・chgIOColor関数によりピンの設定をフォームに表示する。

btnSetting_Click

設定変更ボタンがクリックされるとこの関数が呼び出される
USB-IOと接続されているか確認し、確認されている場合は、変更されたbtnStInJ??ボタンに該当するビットを取得しピンの入出力を変更します。
F9コマンドで2バイト目の0ビットににプルアップの有無(1の場合プルアップ)、5バイト目にJ-1の入出力設定、6バイト目にJ-2の入出力設定を指定します。
USB-IOの設定の変更を有効にするためにはUSBコネクタを抜き差しする必要があります。抜き差し後、再度 接続ボタンをクリックする必要があります。

btnIO_Click

入出力状態の各ビットをクリックした場合にこの関数が呼び出される
変更されたビットを取得し、chgIOColor関数によりピンの設定をフォームに表示する

btnSendRecv_Click

送受信ボタンをクリックした場合にこの関数が呼び出される

tmrSendRecv_Tick

接続後 0.1秒間隔で呼び出される
20コマンドで各ピンの値を入力し出力(1バイト目がJ-1、2バイト目がJ-2)する。入力データは(1バイト目がJ-1、2バイト目がJ-2)である。chgIOColor関数によりピンの設定をフォームに表示する

btnStop_Click

0.1秒間隔で各ピンの値を取得する動作を停止する。

Form1_FormClosing

フォームを閉じるときに呼び出される
closeDevice関数に呼びHIDデバイスを閉じる

chgStInColor

各ピンが入力に設定されている出力に設定されているかをフォームに表示する。
入力の場合:緑、出力の場合:赤である

chgIoColor

各ピンの値を表示します。
入力の場合 1の時 緑、0の時 白
出力の場合 1の時 赤、0の時 白

openDevice

HIDデバイスを検索して開きUSB-IO2(AKI)のベンダーIDとプロダクトID一致したものをデバイスとして使用します。デバイスに必要なキューサイズ(65byte)を取得しキューを確保します。

closeDevice

デバイスを閉じます

SendRecv

USB-IO2(AKI)と通信を行います。