Tera Term(テラターム)のマクロ機能を利用して、シリアル(COM)接続でコンソールポート等に自動接続するマクロ+アルファ(COMポートを自動認識)をご紹介します。
COMポートを自動認識して接続するところがポイントです!
マクロ言語TTL(Tera Term Language)ファイルに「ボー・レート」の設定を直接記述しますが、使用するCOMポート番号はマクロを使ってポートの使用状態を確認し自動で設定を行います。
使われているCOMポートの調べ方が判らない場合に有効なマクロですね。
いちいち新しい接続からCOMポートを選択して接続する手間が省けるのでショートカットを作成し準備しておくと便利なマクロになります。
マクロを実行すると、接続待ち or 接続状態になります。
それではマクロの内容について解説してきます。
シリアル(COMポート)自動接続マクロ
;============================================ ; Filename : com_connect-17.ttl ; Description : COM Port Auto login ; Author : JUNZOU ; Created : 2011/05/21 ; modified : ;============================================ ;; ボー・レート設定 BAUDRATE = '9600' ;============================================ ;; ①COMポートの状態を1~100まで確認する for PORT_NUM 1 100 ;; ②整数値を文字列に変換 int2str COM_PORT PORT_NUM ;; ③コマンド組立て COMMAND = '/C=' strconcat COMMAND COM_PORT strconcat COMMAND ' /BAUD=' strconcat COMMAND BAUDRATE ;; ④接続 connect COMMAND ;; ⑤接続確認 if result = 2 break next ;; ⑥マクロ終了 end
マクロ内容の解説
①COMポートの状態を1~100まで確認する
項番①では「for next」文を使用し繰り返し処理をおこなっています。1~100までループ処理を実行します。
②整数値を文字列に変換
項番②では[int2str]コマンドを使用し、整数値を文字列に変換しています。
なぜ変換するかというと、項番③の[strconcat]コマンドで整数値が使えないためです。もしこの処理がないと以下のマクロエラーでストップしてしまいます。
③コマンド組立て
項番③では、変数「COMMAND」に[strconcat]コマンドを使用し文字を継ぎ足していく事で接続するための文字列を生成しています。
上記マクロでは、以下のような文字列が作成されます。
==================================
/C=1~100の文字 /BAUND=9600
==================================
④接続
項番④の接続のエリアでは、項番①で作成した変数(文字列)「COMMAND」を使用し[connect]コマンドでシリアル接続を行います。
実際の接続コマンドは以下となります。
==================================
connect /C=1~100の文字 /BAUND=9600
==================================
⑤接続確認
項番⑤では、COMの1~100番ポートに順番に接続を行い応答があった場合にループ処理を終了します。(接続出来るポート確認完了)
⑥マクロ終了
項番⑥では、COMポートへの接続が完了したのでマクロ機能を終了します。(厳密に言うと接続するポートが無くても終了しますが・・・)
接続出来てケーブルを接続していない状態であれば、接続待機状態となります。
おわりに
一点、はまったところが!
COMポートは、内蔵モデムなんかでも使用されています。
内蔵モデムがCOM3ポートを使用している場合、何回やってもそちらを認識してしまい正常にシリアル接続が出来ない状態になりました。
そうした場合、デバイスマネージャから内蔵モデム無効にしてやるとうまく動作しましたのでお試しください。(ご参考まで・・・)