2020年04月02日

EXCEL VBAでGIPOを制御する方法4つ

計測器の自動制御をEXCEL VBAを使用して行う際、リレーの切り替えなどでGPIOを制御したくなることがあります。

そんなとき使える方法を4つ試してみました。
動作環境は Windows10 64Bit + Excel 2010 32bit です。

@.COMポートのRTS, DTR線を使う
シリアルポートにはRTS/CTS, DTR/DSR というフロー制御を行うラインがあり、
これを汎用のGPIOとして使うことができます。
他にも方法はあるかもしれませんが、activecell さんが作成された EasyComm を使用すると簡単です。
Comポートを開いたあと
ec.RTSCTS = True
ec.DTRDSR = True

等とすれば、RTS, DTR線をH/Lすることができます。

A.FTDI の FT232R(など)で Bit-Bang Mode を使う
FTDIの FT232Rなどのチップは、 Bit-Bang Mode というものがあり、信号線を独立して制御することができます。
サンプルプログラムは、西日本常盤商行の Bit-Bang Testサンプルにあります。
専用のGIPOピンがあるわけではなく、Bit7~0 がそれぞれ、 7:RI, 6:DCD, 5:CSR, 4:DTR, 3:CTS, 2:RTS, 1:RXD, 0:TXD に対応します。
秋月電子のAE-UM232R はもちろんOKで、Aliexpressで買った格安モジュールでも動作しました。

B.秋月電子で売っている USBIO-2.0 を使う
秋月電子で売っている USB接続デジタル入出力モジュール USB−IO2.0(AKI)もEXCEL VBAから扱うことが可能です。

バケさんの電子工作 で公開されている vbausbio.dll を C:\Windows\SysWOW64 コピーして、
uio_find で接続と初期化をした後、
Dim OutDat(7) As Byte
OutDat(0) = 1
OutDat(1) = 1
OutDat(2) = 2
OutDat(3) = 0
uio2_out(OutDat(0))

とやれば、GIPOに値を書き込むことができます。
入出力の設定は「USB-IO2.0制御サンプル」で先にしておくのが無難です。

C.SILICON LABS の CP2112 を使う
SILICON LABS の HID USB - SMBus/I2C ブリッジ CP2112 も Excel VBAから制御できます。
サンハヤトの Sample_MMCP2112_MMTXS03 からGPIO4を操作する部分を抜き出し、割と忠実にExcel VBAに移植してみたので、gistにあげておきます。

下準備として、SLABHIDDevice.dll と SLABHIDtoSMBus.dll を C:\Windows\SysWOW64 にコピーし、SLABCP2112.bas をインポートして、オブジェクト名を [CP2112_DLL] にする必要があります。
動作確認は MM-CP2112A を使用しました。

CP2112 vba.png

2020/12/02 追記
旧バージョンの「CP2112_SDK_Windows_XP_Vista.exe」はダウンロードできなくなっているようです。
そのファイルそのものを上げることはできませんが、参考までにCで作成したエクセルファイルをアップしておきます。
CP2112_Test.zip

感想:なんやかんや言っても Excel VBAは まだ現役ですよね。
posted by MON at 00:00| Comment(3) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
こんにちは。
CP2112を使いたくてたどり着きました。SLABCP2112.basを入手したいのですが、何処から入手できますか?
昔のSDKに入っているとの情報があるようですが、それが見つかりません。
お手数ですが、教えていただけると助かります。
Posted by きのぴー at 2020年11月30日 17:10
>きのぴーさん
旧バージョンの「CP2112_SDK_Windows_XP_Vista.exe」はダウンロードできなくなっているようです。
そのファイルそのものを上げることはできませんが、参考までにCで作成したエクセルファイルをブログ内にアップしておきます。
Posted by mon at 2020年12月02日 21:27
早速の対応、ありがとうございます。
エクセルファイルを参考にさせていただきます。
Posted by きのぴー at 2020年12月02日 23:18
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
【今是昨非】http://nomulabo.com/