VBAでUSB_IOを行う


エクセルファイル(swtch_sumple.xls)


●エクセルの場合(32ビット/64ビット機)
※64ビット機の場合は「libusb-win32」をインストール する必要がある。
Windows10の64ビット機でoffice2013の際にエラーが出ています。(現在調査中です)

(1)VBAが扱えるよう、リボンに「開発」リボンを追加する。

(2)「開発」タグから「デザイン」ボタンを押し、デザインモードにする。

(3)「開発」タグから「挿入」ボタンを押し、ActiveXコントロールの中のボタンを貼る。

(4)「CommandButton1」ボタンをクリックし、VisualBasicの画面を出す。

(5)標準モジュールを追加する

「hidmon.dll」を f ドライブに置いた場合

Option Explicit
Public Declare Function UsbInit Lib "f:\hidmon.dll" (ByVal device As String) As Integer
Public Declare Function UsbExit Lib "f:\hidmon.dll" () As Integer
Public Declare Function UsbPeek Lib "f:\hidmon.dll" (ByVal address As Integer, ByVal arena As Integer) As Integer
Public Declare Function UsbPoke Lib "f:\hidmon.dll" (ByVal address As Integer, ByVal arena As Integer, ByVal data As Integer, ByVal mask As Integer) As Integer
Public Declare Function PortAddress Lib "f\:\hidmon.dll" (ByVal portname As String) As Integer
Public h As Integer

(6)ボタンに命令を追加する
自作HIDaspxを使って、B7〜B3ピンを入力ピンにするとき

UsbInit ("*") '自作HIDaspxのとき UsbInit ("#"):商用版のとき(ヒダピオ学習回路)のとき
h = UsbPoke(PortAddress("ddrb"), 0, 7, 0)
Do
   h = UsbPeek(PortAddress("pinb"), 0)
   For i = 1 To 5
      If h > 2 ^ (8 - i) Then
         h = h - 2 ^ (8 - i)
         Cells(1, i).Interior.Color = vbBlack
      Else
         Cells(1, i).Interior.Color = vbRed
      End If
   Next i
   DoEvents
Loop
h = UsbExit()

●複数台のHIDaspxを使った例


エクセルファイル(swtch_sumple2.xls)