Excelからシリアル通信を実現してみようという連載の12回目です。前回の記事はこちらになります。。
前回までクラスモジュール「SerialCom」のコーディングしてきました。ようやく完成しましたね!!
今回は動作確認です。クラスモジュールに実装した機能を確認していきましょう。
確認用プログラム
確認用のプログラムを用意しましょう。クラスモジュールを実装したExcelファイルの標準モジュールに、以下を記述しました。
'シリアル通信クラスの確認 Sub SerialClassTest() Dim serialComObject As SerialCom Set serialComObject = New SerialCom serialComObject.PortNo = 3' ポート番号 'プロパティーの設定と確認 End Sub
本連載の第2回で作成したArduinoのシリアルモニターをPCにUSB接続します。
プログラム内の「ポート番号」は本連載の第3回でご紹介した方法で確認した、接続ポートの番号を指定します。今回の僕の環境では3でした。
プロパティーの確認
それでは上記のプログラムを一度実行してみます。オブジェクトを作成してポート番号を指定するだけですが、この時にデフォルト値でポートを設定します。 設定を確認してみましょう。直後にターミナルを開いて以下のように入力してみます。ポート番号は上記で指定した番号です。
PS C:\> mode COM3
以下のように表示されたと思います。
デバイス状態 COM3: ------------ ボー レート: 9600 パリティ: None データ ビット: 8 ストップ ビット: 1 タイムアウト: ON XON/XOFF: OFF CTS ハンドシェイク: OFF DSR ハンドシェイク: OFF DSR の検知: OFF DTR サーキット: OFF RTS サーキット: OFF
このクラスでオブジェクトを作成した場合、ポートの初期設定は以下となります。
PortSetting = "BAUD=9600 PARITY=N DATA=8 STOP=1"
初期設定どおりの設定になっています。シリアルポートの設定状態は、この方法で確認できます。
それではプログラムの「プロパティーの設定と確認」の下に以下のように記述して設定を変更してみましょう。
serialComObject.PortSetting = "BAUD=4800 PARITY=E DATA=7 STOP=2"
この状態でプログラムを再度実行して、同様にターミナルで確認してみると、結果は以下のようになりました。(後半は省略しています)
デバイス状態 COM3: ------------ ボー レート: 4800 パリティ: Even データ ビット: 7 ストップ ビット: 2
ちゃんと設定がされていることがわかります。
また、各プロパティーの設定状態は以下で分かりますね。
Debug.Print serialComObject.PortNo Debug.Print serialComObject.PortSetting Debug.Print serialComObject.TimeOutSetting
イミディエイトウィンドウに以下のように表示されます。
3 BAUD=4800 PARITY=E DATA=7 STOP=2 1000
データ送受信
お次はデータ送受信の確認です。プログラムを以下のように書き換えました。
'シリアル通信クラスの確認 Sub SerialClassTest() Dim serialComObject As SerialCom Set serialComObject = New SerialCom serialComObject.PortNo = 3 'データ送信 serialComObject.WriteData "12345" '通信モニターの処理時間そのほかのためウェイト Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 1) 'データ受信 Debug.Print serialComObject.readData End Sub
「serialComObject.WriteData」でデータを送信、諸々の処理時間を考えて1秒待ったのちに「serialComObject.readData」で受信データを確認します。
シリアルモニターを繋げて動作確認してみると、イミディエイトウィンドウに以下のように表示されました。
12345
ちゃんと送受信ができていますね!!
次回はツールの検討
いかがでしうょうか。これでひととおりの動作が確認できました。次回から、いよいよツールの検討を始めます。お楽しみに!!