RS232C(シリアルポート)をエクセルのVBAで制御する

スポンサーリンク

COMポートがないPCでシリアル通信をします。そのためには仮想シリアルポートを作ることができるソフトを使用します。com0comを使用します。検索するとたくさん記事がでてくるので有名なソフトだと思います。Windows10に64bit版をインストールしてsetupを起動するとシリアルポートのペアをカスタマイズすることができます。


例えばcom3とcom4のペアを作成したとします。PC1台にcomポートが2つある環境を作り出すことができます。また、このPCでVMwareやVirtualBoxを使用して仮想マシンを起動すると片方のポートを仮想マシンのOSにあるかのように見せることができ、実機と仮想マシンでシリアル通信をすることができます。
https://minokamo.tokyo/2021/06/07/3768/
https://minokamo.tokyo/2021/06/02/3737/

本日の所は実機に作成したシリアルポートをエクセルのVBAを使って挙動を確認します。
そのためにはEasyCommというVBAモジュールを使用します。これを使うとシリアルポートの通信を簡単に確認できるようになります。開発は終わっているようですがまだまだ便利な使い方が多数あると考えられます。
http://www.activecell.jp/

入手することはできたので解凍しておきました。中身に下記のファイルが含まれています。
ecDef.bas、ec.bas、マニュアル

拡張子が.basのファイルはメモ帳で見ることができ、エクセルを開いてインポートします。開発にあるVisual Basicをクリックします。プロジェクトにあるVBAProjectを右クリックしてファイルのインポートを選択します。ここでファイルをインポートするわけですが、拡張子が.basのファイルを選択してインポートします。2つインポートしておきます。標準モジュールに追加されます。

次は仮想comポートに文字を送信するVBAを記述します。VBAのことはよくわからないのでネットで検索して、送信の所だけを記述しました。
下記はcom3をこのVBAが使用して、文字を送信するものとなっています。

Sub youtube()

'A初期設定
ec.COMn = 3 'COM3を指定します
ec.Setting = "9600,n,8,2" '通信条件(ボーレート,パリティビット数,データビット数,ストップビット数)の設定
ec.HandShaking = ec.HANDSHAKEs.RTSCTS '通信ハンドシェークの設定
ec.Delimiter = ec.DELIMs.CrLf 'データの区切りを示す文字列を設定します

'Bデータの送信
ec.OutBuffer = 100& * 1024& '現在処理の対象になっているポートの送信バッファを100kBに設定します
ec.AsciiLine = "Hello World" '"Hello World"という文字列をデリミタ付きで送信します.

'Cポートを閉じる
ec.COMn = -1 '終了処理

End Sub

ここまで出来たら一度保存します。

今度は、VBAから送られた文字を受信するシリアルポートがcom4になるのでソフトを起動します。秀Term、TeraTerm、Seristerで受信してみます。どのソフトもcom4に接続しないとVBAを実行した時、使用されているのでエラーがでます。


タイトルとURLをコピーしました