クラスの動作確認(Excelでシリアル通信-12)

Excelからシリアル通信を実現してみようという連載の12回目です。前回の記事はこちらになります。。

hirocom777.hatenadiary.org

前回までクラスモジュール「SerialCom」のコーディングしてきました。ようやく完成しましたね!!

今回は動作確認です。クラスモジュールに実装した機能を確認していきましょう。

確認用プログラム

確認用のプログラムを用意しましょう。クラスモジュールを実装したExcelファイルの標準モジュールに、以下を記述しました。

'シリアル通信クラスの確認
Sub SerialClassTest()
  Dim serialComObject As SerialCom
  Set serialComObject = New SerialCom

  serialComObject.PortNo = 3' ポート番号
  
  'プロパティーの設定と確認

End Sub

本連載の第2回で作成したArduinoのシリアルモニターをPCにUSB接続します。

hirocom777.hatenadiary.org

プログラム内の「ポート番号」は本連載の第3回でご紹介した方法で確認した、接続ポートの番号を指定します。今回の僕の環境では3でした。

hirocom777.hatenadiary.org

プロパティーの確認

それでは上記のプログラムを一度実行してみます。オブジェクトを作成してポート番号を指定するだけですが、この時にデフォルト値でポートを設定します。 設定を確認してみましょう。直後にターミナルを開いて以下のように入力してみます。ポート番号は上記で指定した番号です。

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

ちゃんと送受信ができていますね!!

次回はツールの検討

いかがでしうょうか。これでひととおりの動作が確認できました。次回から、いよいよツールの検討を始めます。お楽しみに!!