汎用USB-IO試用レポート

汎用USB-IOはモルフィーからは入手できなくなりましたが、Km2Netさん、テクノキットさんから入手できるようになりました。
そこで、両方の汎用USB-IOを取り寄せ、自分が作成したプログラムを対応させて動作確認をしてみました。

VB6のUSBLCD2のプログラムはベンダーIDとプロダクトIDの変更で動作します。

HSP用の汎用USB-IOプラグインをVBで使えるようにもしています。
Excel(VBA)やAB3.0でも使用するサンプルを作成してみました。


HSP用の汎用USB-IOプラグインを元にしてVBA用のDllを作成しました。
手始めにExcelで試してみました、VB,AB,VB.netでも試してみました。(2004/10/10)

VB2005はVB.Netと同様の使い方で動作確認できました(2007/05/18)

VBA用のDllをWindowsXPで使用した時に汎用USB-IOの状態を取り込む処理が上手く動かない症状に対応させました。(2004/11/19)

VBA用のDllを修正しました、(uio_findを繰り返すと,何重にもディバイスを開くのを修正)(2005/10/16)

Vista対応しました!!(2007/05/18)

USB2.0で入力時に不定期、または定期的に0になる不具合を対応しました。(2007/12/24)
最新の vbausbio.dll をダウンロード

KOZONOさんがC++Builder用のDLLパッケージを作成されています、ここでダウンロードできます。

Linuxでも汎用USB-IOが使えることが確認できました。
詳しくは最新Linux(FC5)で汎用USB-IOを参照してください。

汎用USB-IOを使用した記事が載っている本が発売されました。
ActiveBasicとここのHPで公開しているVBA用のDllを使用してUSB機器を作ろうという内容でお勧めの本です。
購入はここ↓からどうぞ
★ 目次 ★
2003/11/04 モルフィーの汎用USB-IO VendorID = 0x0BFE ProductID = 0x1003
2003/11/28 Km2Netの汎用USB-IO VendorID = 0x1352 ProductID = 0x0100
2003/11/04 テクノキットの汎用USB-IO VendorID = 0x12ED ProductID = 0x1003
2003/12/01 テクノキット[USB-IVB]もどき作成
 
2004/01/14 Excel(VBA)で汎用USB-IO(HSP用プラグイン使用)
2004/05/30 Excel(VBA)で汎用USB-IO(VBA用専用Dll使用)
 
2004/01/14 VBで汎用USB-IO(HSP用の汎用USB-IOプラグイン使用)
2004/11/21 VBで汎用USB-IO(VBA用の専用Dll使用)
 
2004/01/14 ABで汎用USB-IO(HSP用の汎用USB-IOプラグイン使用)
2004/05/31 ABで汎用USB-IO(VBA用の専用Dll使用)
   
2004/10/10 VB.netで汎用USB-IO(VBA用の専用Dll使用) VB2005も動作確認済み
 
2006/01/22 C++Builderで汎用USB-IO(CPP用の専用Dll使用)
 
2006/03/20 Linuxで汎用USB-IO(USB-IO driver for Linux )
2006/05/29 最新Linux(FC5、FC6)で汎用USB-IO(ドライバー不要)
2006/11/15 最新Linux(FC5、FC6)で汎用USB-IO(ビット操作サンプル)
 
お気に入りリンク集(汎用USB-IO)
お気に入りリンク集(Linux)
 
【試用レポート】
モルフィーの汎用USB-IO VendorID = 0x0BFE ProductID = 0x1003
モルフィーの汎用USB-IO モルフィーの汎用USB-IO動作確認OK
VisualBasic6.0(以下VB6とする)の環境がある方は次のサンプルで動作できます、サンプルではLCDをコントロールしています。
詳しくは「汎用USB-IOでLCD表示」を参照してください。

ソース&EXE usblcd2.lzh 26kb

VB6の環境が無い方はActiveBasic3.0(フリーソフト、以下AB3.0とする)をダウンロードして、次のサンプルで動作できます、サンプルではVB6同様LCDをコントロールしています。
また汎用USB-IOの簡単に使用できるようにhid3.dllを使用しています、ダウンロードしてAB3.0のソースと同じホルダーにコピーしてください。
デバッグでも動作させたいときはWindowsシステムフォルダーにもhid3.dllをコピーしてください。

【重要】 hid3.dllは汎用USB-IOからIOの状態を取得する処理が上手く動かないことがあるようです。
VBA用の専用Dll(vbausbio.dll)をABで使用するを参考にしてVBA用のDllの使用をおすすめします。
Km2Netの汎用USB-IO VendorID = 0x1352 ProductID = 0x0100
Km2Netの汎用USB-IO Km2Netの汎用USB-IO動作確認OK
Km2Netさんの汎用USB-IOは基板もファームも現在はモルフィーと全く同じものになっています。
なので、いままでのテスト基板、プログラム(ベンダーIDとプロダクトIDの対応のみ)ともにそのまま動作しています。

なお、写真には接続ピンがつけてありますがキットには含まれていません、部品のみの提供となるのでKm2NetさんのHPを見ながら作成しました。(部品点数が少ないので写真で充分ですね)

I/O ControlManagerという、簡単に入出力を行うソフトを開発中のようです、乞うご期待!。
動作確認ができるものがUPされたので、早速使ってみました。
自分の環境では、デバイスをロックしているUSB機器があるため正常に動作しませんでしたので、Km2Netさんとやり取りをして対応をしていただきました。
Km2Netさんから購入した汎用USB-IOの動作確認はこの試用レポートで使っているプログラムでも可能ですが、Km2Netさんからのソフトで動作確認をするのが確実だと思います。
ソフトの開発は少しずつ進んでいるようですね、楽しみです。(2003/11/28)

以下のサンプルはベンダーIDとプロダクトIDを対応させたものです。

VisualBasic6.0(以下VB6とする)の環境がある方は次のサンプルで動作できます、サンプルではLCDをコントロールしています。
詳しくは「汎用USB-IOでLCD表示」を参照してください。

ソース&EXE usblcd2.lzh 26kb

VB6の環境が無い方はActiveBasic3.0(フリーソフト、以下AB3.0とする)をダウンロードして、次のサンプルで動作できます、サンプルではVB6同様LCDをコントロールしています。
また汎用USB-IOの簡単に使用できるようにhid3.dllを使用しています、ダウンロードしてAB3.0のソースと同じホルダーにコピーしてください。
デバッグでも動作させたいときはWindowsシステムフォルダーにもhid3.dllをコピーしてください。

【重要】 hid3.dllは汎用USB-IOからIOの状態を取得する処理が上手く動かないことがあるようです。
VBA用の専用Dll(vbausbio.dll)をABで使用するを参考にしてVBA用のDllの使用をおすすめします。

テクノキットの汎用USB-IO VendorID = 0x12ED ProductID = 0x1003
テクノキットの汎用USB-IO テクノキットの汎用USB-IO動作確認OK
テクノキットさんの汎用USB-IOは基板は独自に設計されています。
接続コネクタは1列で配列されており配線等しやすくなっています、
また別のキットで接続コネクタ、汎用基板と8本のネジ(スペーサ付き)があるようです。
色々試すには便利なキットです。

汎用USB-IOキット以外にすぐ使える基板が用意されています。
各基板は接続コネクタを使用して配線不要で取り付けられます。
なかでも[USB-IVB]はなるほどの基板です、
汎用USB_IOから、安定した信号を取り出すためのインバーター回路と、インジケータLEDをつけたものです。
実際使うとわかるのですがそのままだとon/offが逆になりデータのビットを立てるとoffになります、インバータ回路があるのでデータビットを立てるとonになりプログラムがしやすくなります。
また、直接LEDを12個つけたことがあるのですが均一に明るさがでません、何らかの回路でドライブする必要がありますが、この基板で各ビット20mAまで安定して流せるようになります。

なお、写真には接続コネクタがありますがキットに含まれていません。(別キット)
ICソケットは含まれていなかったのでつけずに作成しています。
資料として回路図がついていましたが、作り方までは載っていなかったので、作成はテクノキットさんのHPをみて行いました。(部品点数が少ないので写真で充分ですね)

今回のテストではそのコネクタと汎用基板で、今までのテスト基板がそのまま取り付けられるように配線をしてみました。

ファームはそのまま(ベンダーIDとプロダクトIDのみ違う)のため今までのプログラムはベンダーIDとプロダクトIDの変更のみで動作します。
以下のサンプルはベンダーIDとプロダクトIDを対応させたものです。

VisualBasic6.0(以下VB6とする)の環境がある方は次のサンプルで動作できます、サンプルではLCDをコントロールしています。
詳しくは「汎用USB-IOでLCD表示」を参照してください。

ソース&EXE usblcd2.lzh 26kb

VB6の環境が無い方はActiveBasic3.0(フリーソフト、以下AB3.0とする)をダウンロードして、次のサンプルで動作できます、サンプルではVB6同様LCDをコントロールしています。
また汎用USB-IOの簡単に使用できるようにhid3.dllを使用しています、ダウンロードしてAB3.0のソースと同じホルダーにコピーしてください。
デバッグでも動作させたいときはWindowsシステムフォルダーにもhid3.dllをコピーしてください。

テクノキットさんのHPではHSPを使ったサンプルがあります、こちらもお試しください。
モルフィーとテクノキットさんの汎用USB-IOに対応しているようです。

【重要】 hid3.dllは汎用USB-IOからIOの状態を取得する処理が上手く動かないことがあるようです。
VBA用の専用Dll(vbausbio.dll)をABで使用するを参考にしてVBA用のDllの使用をおすすめします。

テクノキット[USB-IVB]もどき作成
テクノキットさんで販売されている基板で[USB-IVB]は良く考えてあり、ぜひ作成をしてみたいと思っていました。
そこで、テクノキットさんのHPに回路図が載っているので参考にして作成してみました。
今回は、DO(出力)のみでDI(入力)の回路はつけませんでした。
それでも、配線の数が多く、結構大変な作業になりました。
基板を購入した方がやっぱり楽ですね。

 
Excel(VBA)で汎用USB-IO(HSP用プラグイン使用)
「HSP用の汎用USB-IOプラグインをVBで使用する」で使用しているHSP用のUSB-IOプラグインはVBAでも使用できます。
uio_out(データ出力)でパルス出力有無の指定ありの場合−1ではなく1を指定します。
コメントの記述を修正しました。(2004/01/14)

Excelで汎用USB-IOを制御しているサンプルの説明をします。

サンプルシート hspusbioxl.xls 40kb
必要なDLL   HSP用USB-IOプラグイン

Excelで動作させるサンプルソースになっています。
VBAで動作しますので、VB、Access、Wordなどでも使用できます。
このExcel(VBA)を使用する場合は、HSP用のUSB-IOプラグインを下記のサイトから取り込んで
パスのかかっているフォルダー(c:\windowsなど)にコピーしておいてください。
http://www.chichibu.ne.jp/~kawahira/soft/forhsp.htm

以下、実際のVBAです。

'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'使用方法
' uio_findでUSB-IOを検索・初期化して,その後に
' uio_inp/outで読み書きしてください.
' uio_seldevで複数のUSB-IOを切り替えて使うことが出来ます.
' (uio_findを実行しなくても初めてuio_inp/outを実行するときには自動的に
'  uio_findが呼ばれます.ただし,最初だけなのでUSB-IOが一度外されて,
'  もう一度挿された場合などは無視されます.)
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'------------------------------------------------------------------------------
'USB-IOにPortを指定してデータを出力する
'p3に1を指定すると,ポート1のp1にパルスを送りポート0を書き換えます
'   Port    : Portを指定する(0,1)、パルス出力の場合はビット(0〜3)
'   OutDat  : データ(0〜255)
'   p3      : パルス出力有無(0:なし、1:あり)
'   p4      : ダミー(0を指定)
'   戻り値  : 0:正常、-1:異常
'------------------------------------------------------------------------------
Declare Function uio_out _
    Lib "hspusbio.dll" _
    Alias "_uio_out@16" _
    (ByVal Port As Long, ByVal OutDat As Long, ByVal p3 As Long, ByVal p4 As Long) _
As Long

'------------------------------------------------------------------------------
'USB-IOからPortを指定してデータを取得する
'p3に1を指定すると,ポート1のp1にパルスを送りポート0から読み込みます
'   InpDat  : 取得データ(取得したい変数を指定する)
'   Port    : Portを指定する(0,1)、パルス出力の場合はビット(0〜3)
'   p3      : パルス出力有無(0:なし、1:あり)
'   p4      : ダミー(0を指定)
'   戻り値  : 0:正常、-1:命令が書けなかった、-2:データを取得できなかった
'------------------------------------------------------------------------------
Declare Function uio_inp _
    Lib "hspusbio.dll" _
    Alias "_uio_inp@16" _
    (ByRef InpDat As Byte, ByVal Port As Long, ByVal p3 As Long, ByVal p4 As Long) _
As Long

'------------------------------------------------------------------------------
'USB-IOを検索・初期化する
'   p1      : ダミー(0を指定)
'   p2      : ダミー(0を指定)
'   p3      : ダミー(0を指定)
'   p4      : ダミー(0を指定)
'   戻り値  : 0:正常、-1:必要なドライバが無い、-2:USB-IOが繋がってない
'------------------------------------------------------------------------------
Declare Function uio_find _
    Lib "hspusbio.dll" _
    Alias "_uio_find@16" _
    (ByVal p1 As Long, ByVal p2 As Long, ByVal p3 As Long, ByVal p4 As Long) _
As Long

'------------------------------------------------------------------------------
'USB-IO用の資源を解放する
'   p1      : ダミー(0を指定)
'   p2      : ダミー(0を指定)
'   p3      : ダミー(0を指定)
'   p4      : ダミー(0を指定)
'   戻り値  : 0
'------------------------------------------------------------------------------
Declare Function uio_free _
    Lib "hspusbio.dll" _
    Alias "_uio_free@16" _
    (ByVal p1 As Long, ByVal p2 As Long, ByVal p3 As Long, ByVal p4 As Long) _
As Long

'------------------------------------------------------------------------------
'繋がれているUSB-IOの数が戻り値に帰ります
'   p1      : ダミー(0を指定)
'   p2      : ダミー(0を指定)
'   p3      : ダミー(0を指定)
'   p4      : ダミー(0を指定)
'   戻り値  : -(個数) 正負を反転する −2の場合は個数2となる
'------------------------------------------------------------------------------
Declare Function uio_getdevs _
    Lib "hspusbio.dll" _
    Alias "_uio_getdevs@16" _
    (ByVal p1 As Long, ByVal p2 As Long, ByVal p3 As Long, ByVal p4 As Long) _
As Long

'------------------------------------------------------------------------------
'USB-IOを番号で指定する
'   p1      : 番号(0〜uio_getdevsで得た個数-1) 指定は正の番号、ただし0から
'   p2      : ダミー(0を指定)
'   p3      : ダミー(0を指定)
'   p4      : ダミー(0を指定)
'   戻り値  : 0
'------------------------------------------------------------------------------
Declare Function uio_seldev _
    Lib "hspusbio.dll" _
    Alias "_uio_seldev@16" _
    (ByVal p1 As Long, ByVal p2 As Long, ByVal p3 As Long, ByVal p4 As Long) _
As Long

Declare Sub Sleep _
    Lib "kernel32" _
    (ByVal dwMilliseconds As Long)


'USB-IOへデータを出力するサンプル
Sub btnDatOut()

    Dim Ret As Long
    Dim Dat(1) As Long
    
    'セルからデータを取得する
    Dat(0) = Val("&h" + CStr(Cells(3, 2)))
    Dat(1) = Val("&h" + CStr(Cells(3, 3)))
    
    'USB-IOへデータを出力する
    Ret = uio_out(0, Dat(0), 0, 0)
    Ret = uio_out(1, Dat(1), 0, 0)
    
End Sub

'USB-IOからデータを取得するサンプル
Sub btnDatInp()

    Dim Ret As Long
    Dim Dat(1) As Byte
    
    'USB-IOからデータを取得する
    Ret = uio_inp(Dat(0), 0, 0, 0)
    Ret = uio_inp(Dat(1), 1, 0, 0)
    
    'セルへデータをセットする。
    Cells(7, 2) = Right$("0" + Hex$(Dat(0)), 2)
    Cells(7, 3) = Right$("0" + Hex$(Dat(1)), 2)
    
End Sub
      
Excel(VBA)で汎用USB-IO(VBA用専用Dll使用)
「HSP用の汎用USB-IOプラグインをVBで使用する」で使用しているHSP用のUSB-IOプラグインを元にしてVBA専用のDllを作成

Excelで汎用USB-IOを制御しているサンプルの説明をします。

サンプルシート vbausbioxl.xls 35kb
必要なDLL   VBA用専用Dll(vbausbio.dll)

Excelで動作させるサンプルソースになっています。 VBAで動作しますので、VB、Access、Wordなどでも使用できます。 このExcel(VBA)を使用する場合は、VBA用の専用Dllが必要です、ダウンロードして取得してください。 取得できたら、パスのかかっているフォルダー(c:\windowsなど)にコピーしておいてください。 以下、実際のVBAです。
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'使用方法
' uio_findでUSB-IOを検索・初期化して,その後に
' uio_inp/outで読み書きしてください.
' uio_seldevで複数のUSB-IOを切り替えて使うことが出来ます.
' (uio_findを実行しなくても初めてuio_inp/outを実行するときには自動的に
' uio_findが呼ばれます.ただし,最初だけなのでUSB-IOが一度外されて,
' もう一度挿された場合などは無視されます.)
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'------------------------------------------------------------------------------
'USB-IOにPortを指定してデータを出力する
'p3に1を指定すると,ポート1のp1にパルスを送りポート0を書き換えます
'   Port    : Portを指定する(0,1)、パルス出力の場合はビット(0〜3)
'   OutDat  : データ(0〜255)
'   p3      : パルス出力有無(0:なし、1:あり)
'   戻り値  : 0:正常、1:異常
'------------------------------------------------------------------------------
Declare Function uio_out Lib "vbausbio.dll" (ByVal Port As Long, _
     ByVal OutDat As Long, ByVal p3 As Long) As Long

'------------------------------------------------------------------------------
'USB-IOからPortを指定してデータを取得する
'p3に1を指定すると,ポート1のp1にパルスを送りポート0から読み込みます
'   InpDat  : 取得データ(取得したい変数を指定する)
'   Port    : Portを指定する(0,1)、パルス出力の場合はビット(0〜3)
'   p3      : パルス出力有無(0:なし、1:あり)
'   戻り値  : 0:正常、1:命令が書けなかった、2:データを取得できなかった
'------------------------------------------------------------------------------
Declare Function uio_inp Lib "vbausbio.dll" (ByRef InpDat As Byte, _
     ByVal Port As Long, ByVal p3 As Long) As Long

'------------------------------------------------------------------------------
'USB-IOを検索・初期化する
'   戻り値  : 0:正常、1:必要なドライバが無い、2:USB-IOが繋がってない
'------------------------------------------------------------------------------
Declare Function uio_find Lib "vbausbio.dll" () As Long

'------------------------------------------------------------------------------
'USB-IO用の資源を解放する
'   戻り値  : 0
'------------------------------------------------------------------------------
Declare Function uio_free Lib "vbausbio.dll" () As Long

'------------------------------------------------------------------------------
'繋がれているUSB-IOの数が戻り値に帰ります
'   戻り値  : 個数
'------------------------------------------------------------------------------
Declare Function uio_getdevs Lib "vbausbio.dll" () As Long

'------------------------------------------------------------------------------
'USB-IOを番号で指定する
'   p1      : 番号(0〜uio_getdevsで得た個数-1) ただし0から
'   戻り値  : 0
'------------------------------------------------------------------------------
Declare Function uio_seldev Lib "vbausbio.dll" (ByVal p1 As Long) As Long

'------------------------------------------------------------------------------
'CPU使用率ゼロのWAIT処理
'   dwMilliseconds      : WAITする時間をミリ秒で指定
'------------------------------------------------------------------------------
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

'以下、自由に修正してください。

'==========================================
'USB-IOへデータを出力するサンプル
'==========================================
Sub btnDatOut()

    Dim Ret As Long
    Dim Dat(1) As Long
    
    'セルからデータを取得する
    Dat(0) = Val("&h" + CStr(Cells(3, 2)))
    Dat(1) = Val("&h" + CStr(Cells(3, 3)))
    
    'USB-IOへデータを出力する
    Ret = uio_out(0, Dat(0), 0)
    Ret = uio_out(1, Dat(1), 0)
    
End Sub

'USB-IOからデータを取得するサンプル
Sub btnDatInp()

    Dim Ret As Long
    Dim Dat(1) As Byte
    
    'USB-IOからデータを取得する
    Ret = uio_inp(Dat(0), 0, 0)
    Ret = uio_inp(Dat(1), 1, 0)
    
    'セルへデータをセットする。
    Cells(7, 2) = Right$("0" + Hex$(Dat(0)), 2)
    Cells(7, 3) = Right$("0" + Hex$(Dat(1)), 2)
    
End Sub
      
VBで汎用USB-IO(HSP用の汎用USB-IOプラグイン使用)
DllをAB3.0への組みなおしの作業は、AB3.0側の問題で行き詰まっていますが、息抜きでテクノキットさんのサイトで紹介されているHSP用のサンプルを動かしてみました。
ここで使用されているプラグインのDllは機能が多くて、かつサイズが驚くほど小さいものでした。
VBなどで使用できないかソースをK-Kさんから頂き調べて、使用できましたのでVBのサンプルプログラムを公開します。
プラグインのDllはK-Kさんにお願いをしてKm2NetさんのUSB-IOに対応させていただきました。
ダウンロードしてVBのEXEもしくはソースと同じフォルダーに入れてご使用ください。
VBで使用できれば、VBA(EXCEL)やActiveBasicでも可能になります。
順次、動作確認をして行く予定です。(2003/12/09)
複数のUSB-IOでの動作確認をしてみました、これで汎用USB-IOプラグインの全部の機能を確認できました。(2003/12/10)
uio_out(データ出力)でパルス出力有無の指定ありの場合−1ではなく1を指定します。
コメントの記述を修正しました。(2004/01/14)


VBソース&EXE hspusbiovb.lzh 9kb

VBで汎用USB-IO(VBA用の専用Dll使用)
1つ上で紹介しているHSP用の汎用USB-IOプラグインを使用してVBをコントロールできるようにものですが、使用するための宣言が特殊で、また使用するときも不要なパラメータを指定する必要があったり、戻り値がマイナスで返ったりしています。
VBで簡単に使えるようにVBA用にDllを焼き直しをしました。
vbausbio.dll です。
VBで作られたEXEもしくはソースと同じフォルダーに入れてご使用ください。
複数のUSB-IOでの動作確認をしています、汎用USB-IOプラグインの全部の機能を確認できています。
そのためサンプルとしては少し難しいコーディングになっています。
簡単な使い方はExcelのサンプルも参考にされるといいかもしれません。

VBソース&EXE vbausbiovb.lzh 9kb

ABで汎用USB-IO(HSP用の汎用USB-IOプラグイン使用)
「HSP用の汎用USB-IOプラグインをVBで使用する」で使用しているHSP用のUSB-IOプラグインはAvtiveBasicでも使用できます。

汎用USB-IOでLCD表示」をActiveBasic3.0でHSP用のUSB-IOプラグインを使用して組みなおしてみました。
2004/01/13の0:00〜13:00の間、間違ってデバッグ途中のソースをUPしていました。
該当する時間にダウンロードされた方は、再度ダウンロードお願い致します。ご迷惑をおかけしすみません。
パルス出力の機能を使用して初版より少し早く表示できるように修正も行いました。(2004/01/14)


必要なDLL   HSP用USB-IOプラグイン
ABソース&EXE usblcd4.lzh 16kb

ABで汎用USB-IO(VBA用の専用DLL使用)
HSP用のUSB-IOプラグインをVBA用に焼き直しをしました、このDllはAvtiveBasicでも使用できます。

汎用USB-IOでLCD表示」をActiveBasic3.09でVBA用の専用DLLを使用して組みなおしてみました。

必要なDLL   VBA用専用Dll(vbausbio.dll)
ABソース&EXE usblcd5.lzh 16kb

VB.netで汎用USB-IO(VBA用の専用DLL使用)
HSP用のUSB-IOプラグインをVBA用に焼き直しをしました、このDllはVB.netでも使用できます。

簡単なサンプルプログラムを作成して各ポートへの書き込み、データ取得のテストを行いました。

必要なDLL   VBA用専用Dll(vbausbio.dll)
ソース&EXE usbtest.lzh 22kb (dllも入っています)

VB6.0のソースのままでは動かなかったので簡単に説明を入れておきます。
VB.netは自分も勉強中なので正しい記述方法であるかは自信はありませんが、とりあえず動いています。
参考になればと思います。

【説明】
Windowsアプリケーションの新しいプロジェクトを作成します。

VB6.0と同じ感覚でDllの定義部を作成します、クラスをUSBIO.vbのファイル名で追加してプログラムソース1の内容をコピー&ペーストしてください。
vbausbio.dllの関数を定義しています、VB6のLongはVB.netではIntegerになりますので対応させています。
今までのVBA用のままでは動作しません、ご注意ください。

先に定義したクラスをフォームで使用できるように宣言をします。
フォームのコードの一番最初に
Imports usbtest.USBIO
を追加します、usbtestは作成したプロジェクトの名称です、USBIOは追加したクラスの名称です。

実際のプログラムを記述します。
TextBoxを2つフォームに貼り付けプロパティを設定します、(name)をそれぞれ、txtP0、txtP1、とします、Textには00を設定しておきます。
USBIOのデータを設定したり表示するために使います。

ボタンを1つフォームに貼り付けプロパティを設定します、(name)をbtnOutputにします、Textには 出力 を設定します。
その貼り付けたボタンダブルクリッするとコードが表示されます。
Private Sub btnOutput_Clickが自動生成されていると思います、そこにソース2をコピー&ペーストしてください。
USBIOへデータ出力をするサンプルソースです。

ボタンをもう1つフォームに貼り付けプロパティを設定します、(name)をbtnInputにします、Textには 取得 を設定します。
その貼り付けたボタンダブルクリッするとコードが表示されます。
Private Sub btnInput_Clickが自動生成されていると思います、そこにソース3をコピー&ペーストしてください。
USBIOからデータを取得するサンプルソースです。

これでプログラムは完成です、ビルドしてみてください。エラーが出る場合は頑張って調べてみてください。
どうしても今回のサンプルが動かない場合は、サンプルプログラムをダウンロードして見比べてみてください。

実行させます。
デバッグをしながら実行させたい場合はvbausbio.dllをbinという名前でフォルダーが作られているのでそこにコピーしてください。

EXEで実行させたい時はソリューション構成をReleaseでビルドして、Releaseのフォルダーの中のEXEを任意の場所にコピーして実行させてください、このときにvbausbio.dllをEXEと同じフォルダーにコピーしておいてください。

テキストにセットされた値(16進)をUSBIOに出力したり、USBIOの値をテキストに表示できます。


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
ソース1

Public Class USBIO
    '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    'VBA用の専用DLL(vbausbio.dll)用定義部
    '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    '使用方法
    ' uio_findでUSB-IOを検索・初期化して,その後に
    ' uio_inp/outで読み書きしてください.
    ' uio_seldevで複数のUSB-IOを切り替えて使うことが出来ます.
    ' (uio_findを実行しなくても初めてuio_inp/outを実行するときには自動的に
    ' uio_findが呼ばれます.ただし,最初だけなのでUSB-IOが一度外されて,
    ' もう一度挿された場合などは無視されます.)
    '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    '------------------------------------------------------------------------------
    'USB-IOにPortを指定してデータを出力する
    'p3に1を指定すると,ポート1のp1にパルスを送りポート0を書き換えます
    '   Port    : Portを指定する(0,1)、パルス出力の場合はビット(0〜3)
    '   OutDat  : データ(0〜255)
    '   p3      : パルス出力有無(0:なし、1:あり)
    '   戻り値  : 0:正常、1:異常
    '------------------------------------------------------------------------------
    Declare Function uio_out Lib "vbausbio.dll" (ByVal Port As Integer, _
     ByVal OutDat As Integer, ByVal p3 As Integer) As Integer

    '------------------------------------------------------------------------------
    'USB-IOからPortを指定してデータを取得する
    'p3に1を指定すると,ポート1のp1にパルスを送りポート0から読み込みます
    '   InpDat  : 取得データ(取得したい変数を指定する)
    '   Port    : Portを指定する(0,1)、パルス出力の場合はビット(0〜3)
    '   p3      : パルス出力有無(0:なし、1:あり)
    '   戻り値  : 0:正常、1:命令が書けなかった、2:データを取得できなかった
    '------------------------------------------------------------------------------
    Declare Function uio_inp Lib "vbausbio.dll" (ByRef InpDat As Byte, _
     ByVal Port As Integer, ByVal p3 As Integer) As Integer

    '------------------------------------------------------------------------------
    'USB-IOを検索・初期化する
    '   戻り値  : 0:正常、1:必要なドライバが無い、2:USB-IOが繋がってない
    '------------------------------------------------------------------------------
    Declare Function uio_find Lib "vbausbio.dll" () As Integer

    '------------------------------------------------------------------------------
    'USB-IO用の資源を解放する
    '   戻り値  : 0
    '------------------------------------------------------------------------------
    Declare Function uio_free Lib "vbausbio.dll" () As Integer

    '------------------------------------------------------------------------------
    '繋がれているUSB-IOの数が戻り値に帰ります
    '   戻り値  : 個数
    '------------------------------------------------------------------------------
    Declare Function uio_getdevs Lib "vbausbio.dll" () As Integer

    '------------------------------------------------------------------------------
    'USB-IOを番号で指定する
    '   p1      : 番号(0〜uio_getdevsで得た個数-1) ただし0から
    '   戻り値  : 0
    '------------------------------------------------------------------------------
    Declare Function uio_seldev Lib "vbausbio.dll" (ByVal p1 As Integer) As Integer

End Class

ソース2

    Private Sub btnOutput_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles btnOutput.Click

        Dim intRet As Integer
        Dim intDat(1) As Integer

        'データを取得する
        intDat(0) = Val("&h" + Me.txtP0.Text)
        intDat(1) = Val("&h" + Me.txtP1.Text)

        'USB-IOへデータを出力する
        intRet = USBIO.uio_out(0, intDat(0), 0)
        intRet = USBIO.uio_out(1, intDat(1), 0)

    End Sub

ソース3

    Private Sub btnInput_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles btnInput.Click

        Dim intRet As Integer
        Dim intDat(1) As Integer

        'USB-IOからデータを取得する
        intRet = USBIO.uio_inp(intDat(0), 0, 0)
        intRet = USBIO.uio_inp(intDat(1), 1, 0)

        'セルへデータをセットする。
        Me.txtP0.Text = Hex$(intDat(0)).PadLeft(2, "0")
        Me.txtP1.Text = Hex$(intDat(1)).PadLeft(2, "0")

    End Sub

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
C++Builderで汎用USB-IO(CPP用の専用DLL使用)
KOZONOさんがC++Builder用のDLLパッケージを作成されています、ここでダウンロードできるようにしています。このDllはvbausbio.dllを元にカスタマイズされたものです。

サンプルプログラムは準備中です、cppusbio.dllに合わせてヘッダーファイル、Libファイルが同梱されてあります。

Dll&ヘッダーファイル&Libファイル cppusbio.zip 4.98kb

Linuxで汎用USB-IO(USB-IO driver for Linux)
Linuxで使うときはLinux(FC5)で汎用USB-IOも参照してみてください。

Linux初心者の私がFC4を自分のマシンにインストールして汎用USB-IOを動作させて見ました。

FC4なのでLinux用のドライバーが必要で「いとーひさしさん」が公開されているドライバーを使用しました。

ドライバーのインストールを安易に考えていたのですが、結構苦労しました。
FC4の最新のUPDATEをかけるとおそらくGCCの問題で上手く動きません、そのためFC4をインストールしてUPDATEをかけていない状態でしました。

手順としては次の通りです。

・FC4のインストールGCC(コンパイラー)が必要なので開発ツールもいっしょにインストールしました。
・カーネルのソースをWEBから取り込み展開
・カーネルの再構築
・ドライバーのMAKE

詳しくはドライバーと一緒に公開されてるREADMEを参照してください。

具体的な内容は現在、資料を整理しているところです、時間を見て公開したいと思っています。
できれば、サンプルプログラムも作成したいと思っていますが、Linuxを何も知らないので初歩的な内容から勉強中なのでだいぶ先になりそうです。

ここに関連するキーワードやリンクを検索表示