そんなとき使える方法を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 を使用しました。
2020/12/02 追記
旧バージョンの「CP2112_SDK_Windows_XP_Vista.exe」はダウンロードできなくなっているようです。
そのファイルそのものを上げることはできませんが、参考までにCで作成したエクセルファイルをアップしておきます。
CP2112_Test.zip
感想:なんやかんや言っても Excel VBAは まだ現役ですよね。
CP2112を使いたくてたどり着きました。SLABCP2112.basを入手したいのですが、何処から入手できますか?
昔のSDKに入っているとの情報があるようですが、それが見つかりません。
お手数ですが、教えていただけると助かります。
旧バージョンの「CP2112_SDK_Windows_XP_Vista.exe」はダウンロードできなくなっているようです。
そのファイルそのものを上げることはできませんが、参考までにCで作成したエクセルファイルをブログ内にアップしておきます。
エクセルファイルを参考にさせていただきます。