シリアルポート トラフィックロガー
シリアルポートのトラフィック監視/ロギングとは?
シリアルポートからバイトを送受信しているとき、特定のシリアルポートで発生するすべての入出力トラフィックを記録しておきたい場合があります。
手作業や画面上で追いかけることもできますが、シリアルバッファが長かったり、トラフィックが連続している場合は、ファイルに保存したくなるはずです。
まさにそのための機能を SerialTool が提供します。
どのようなシリアル通信データを記録できますか?
SerialTool では、受信・送信のデータを HEX(16 進数)形式と ASCII 形式の両方で記録できます。
すべてのトラフィックはテキストファイルとして保存でき、オフラインでの解析がとても簡単になります。
28/12/2022@22:43:10.829::Packet[00000001l]>>Serial [1] [[COM5] - USB Serial Port] Sent 17 bytes.
41|42|43|44|45|46|47|48|49|4C|4D|4E|4F|50|51|52 || A B C D E F G H I L M N O P Q R
53| | | | | | | | | | | | | | | || S
28/12/2022@22:43:36.550::Packet[00000004l]>>Serial [1] [[COM5] - USB Serial Port] Sent 25 bytes.
54|68|69|73|20|69|73|20|61|20|73|65|72|69|61|6C || This is a serial
20|54|6F|6F|6C|20|6C|6F|67| | | | | | | || Tool log
データをファイルに保存するには?
SerialTool では、シリアルポートのトラフィックをバイナリファイルとして保存できます。
受信または送信された各パケットは、既存のファイルに追記されるか、ファイルが存在しない場合は新規に作成されます。
これは、いわゆる「マン・イン・ザ・ミドル」構成で、ファームウェアダウンロードなどのシリアル通信トラフィックを解析したい場合に特に有効です。
バイナリファイルが生成されるため、必要なデータをいつでも簡単に再利用できます。
現在、この機能は PRO ユーザー専用となっています。
各シリアル通信パケットを確認できますか?
SerialTool は、シリアルポートから入出力されるすべての通信パケットを、分かりやすく漏れなく追跡できます。
各データパケットは、タイムスタンプと長さ情報とともに、HEX 表記と ASCII 表記の両方で保存されます。
シリアルデータパケットが重要な理由
Arduino のような組み込みデバイスや
独自プロトコルのデバイスとのシリアル通信では、バイト間にごく短い遅延が発生することがあります。その場合、シリアルポートドライバは(シリアルポートから読み出す際に)そのデータのかたまりを 1 つのパケットとして扱うことがあります。
SerialTool を使えば、バイト間の特定のタイムアウト値を設定し、その値を超えた時点でパケットを「完了」とみなすことができます。
SerialTool はパケット数とバイト数のカウンタを自動的に増やすため、オフラインでの解析がより行いやすくなります。
シリアル通信のバイト間タイムアウト
前述のとおり、非同期シリアル通信では、さまざまな理由でデータストリームの途中に遅延が生じる場合があります。
SerialTool のような高度なシリアル通信ソフトウェアは、「バイト間タイムアウト」を扱うことができ、これにもとづいて「パケットが受信完了した」と判断します。
次の図を見ると、このタイムアウトの概念がよりよく理解できます。
SerialTool バイト間タイムアウト。
シリアル バイト間タイムアウトの設定
前述のように、非同期シリアル通信ではデータストリーム中に遅延が発生することがあります。その理由は 1 つとは限りません。
高機能なシリアル通信ソフトである SerialTool では、パケット受信完了の基準となる「バイト間タイムアウト」を細かく設定できます。
次の図では、このタイムアウト設定の考え方がさらに分かりやすく示されています。
SerialTool バイト間タイムアウトの設定画面。