シリアルポートターミナル:RS-232 / RS-485およびVT-100の通信、ロギング、デバッグ

最終更新日: 著者:Oliver Reed

SerialToolは、電子機器、産業機器、組み込み機器に接続されたシリアルポートの テスト、デバッグ、高度な分析用に設計された、プロフェッショナルなクロスプラットフォームソフトウェア(Windows、macOS、Linux)です。 現在、シリアル通信のための最も完全なソリューションであり、低レベル(バイト指向)モードと 高度なターミナル(VT-100)モードの両方を提供しています。

シリアルポート経由でデバイスに接続する必要がある場合、SerialToolは不可欠なツールです: 通信を専門的に監視ログ記録デバッグ分析することができます。

ウィキペディアの洞察: シリアルポート · RS-232 · RS-485 · UART

VT-100ターミナルの完全サポート

SerialToolは、業務用およびインフラ機器で広く使用されているVT-100エミュレーションをサポートしています。 これらの状況では、シリアルターミナルが唯一の信頼できる「サービス」アクセスチャネルとなることが多く、ネットワークがダウンしても利用可能です。

VT-100を使用する機器の典型的な例:

  • ネットワークハードウェア:ルーター、スイッチ、ハードウェアファイアウォール、エンタープライズWi-Fiアクセスポイント。
  • サーバーシステム:エンタープライズサーバー(BIOS/UEFI構成、ネットワークなしでもiDRAC/iLOモジュール)。
  • インフラストラクチャ:UPS、DVR(デジタルビデオレコーダー)、NAS。
  • 産業/科学機器:PLC、精密天秤、GPS受信機、PCB、カスタムデバイス。

便利なウィキペディアリンク: BIOS · UEFI · PLC · GPS

組み込みエレクトロニクスの世界では、ファームウェアのデバッグにターミナルを使用することが基本です。 ArduinoESP32STM32、または Raspberry Piなどのプラットフォームを使用する場合、 SerialToolは出力とシステムログを監視するための理想的なツールです。

シリアルソフトウェアとシリアルターミナルの違い

一般的なシリアルポートソフトウェアは、TX(送信)、RX(受信)、およびグランド(GND)を介して生のバイトを送信および受信するだけです。 この場合、データストリームはテキストインターフェースとして解釈されず、単に「そのまま」表示されます。

  • ASCII(印刷可能な文字)
  • 16進数(バイト単位の分析)
  • 2進数(ビットレベルのビューが必要な場合)

一方、VT-100ターミナルは、カーソル、色、画面クリア、フォーマットを正しく管理するために、 ANSIエスケープシーケンス(ESC)も解釈する必要があります。 ここでは、バイトを印刷するだけでは不十分で、エミュレーションが必要です。

2種類のターミナルの間の重要な実用的な違いの1つは、例えば、画面上での新しい行の作成です。
VT-100ターミナルでは、慣例により、バイトシーケンス0x0D 0x0Aを受信すると新しい行が挿入され、ターミナルに新しい行を表示に追加する時間であることを伝えます。
この基準は、独自のシリアルプロトコルの場合には必ずしも尊重されるわけではありません。
産業用Modbus通信プロトコルでは、データが生でありASCII表示用ではないため、パケットは特定のシーケンスで終了しません。
このため、SerialToolでは、次のスクリーンショットに示す選択可能な「パケットモード」(Packet Mode)オプションを使用して、パケット到着時にクラシックターミナルに新しい行を設定できます。

serial port terminal vt-100

パケットモードでのクラシックターミナルモードの選択

これにより、特定のシリアルポートからバイト列を受信すると、ターミナルはパケットが終了したときに新しい行を生成します。
パケットがいつ終了するかを判断するには、使用中のシリアルポートの画面で「Last Byte Timeout」(最終バイトタイムアウト)を設定することが重要です(通常は50ms)。

注意:以下に説明するVT-100ターミナルモードを使用する場合、着信トラフィックには特定のタイムアウトがなく、接続しているマスターデバイスに依存します。
このため、スムーズな表示を維持するには、「Last Byte Timeout」を1msに設定することが重要です。この場合、着信するすべてのバイトストリームはすぐにVT-100ターミナルに送信され、解釈されます。
タイムアウトが50msのままでも何も起こりませんが、一部のアニメーションが遅くなったり、開発者が意図した効果と一致しなくなったりするリスクがあります。
一例として、ANSI文字を使用したプログレスバーのシミュレーションがありますが、タイムアウトが過度に高い場合、画面上で正しくレンダリングされません。
これらの例は経験を必要とする小さな調整ですが、SerialToolはあらゆる種類のシリアルポート操作を可能にするように特別に設計されています。そのため、個々のバイトの分析まで行い、シリアルポートが動作するさまざまなタイミングを評価する機会が与えられます。

SerialToolと低レベルデバッグ(バイト指向)

SerialToolを使用すると、クラシックターミナルを使用して低レベルでシリアルトラフィックを監視、ログ記録、デバッグし、 転送中の実際のバイトを表示できます。可視化は、ASCII、16進数、または組み合わせ(ASCII + HEX)で行うことができます。

このモードは、以下が必要な場合に不可欠です:

  • すべての単一バイト(および必要に応じて個々のビット)を分析する
  • チェックサム/CRCを検証する
  • フレームとパケットを研究する
  • 通信エラーを診断する

例:Modbusプロトコル

典型的なケースはModbusで、 マスターおよびスレーブデバイスが厳密なフレームで通信し、多くの場合RS-485を使用します。 このシナリオでは、「純粋な」ターミナル(VT-100のみ)は理想的ではありません。CRCや応答時間を含む正確なバイトを確認し、検証する必要があります。

01 03 00 00 00 02 C4 0B

クラシックモードでは、SerialToolにより、フレーム分析、アドレス/機能の検証、バイト単位の分析が即座に行えます。

VT-100ターミナル:高度なヒューマンマシンインタラクション(ANSI/ESC)

デバイスがユーザーフレンドリーなインタラクション(メニュー、シェル、テーブル、ハイライト)を提供する場合、 VT-100ターミナルがよく使用されます。データは通常、読み取り可能なASCIIであり、ESCシーケンスによって強化されています。 これらのシーケンスは通常、ESC文字(0x1B)で始まり、「グラフィカル」なアクションを命令します。

ESCシーケンスによって制御される典型的なアクション:

  • カーソルの移動
  • 画面または行のクリア
  • テキストの色/属性の変更(太字、下線)
  • 特定の座標へのカーソルの配置

ANSI/ESCシーケンスの例

  • \x1B[2J:画面全体をクリアします。
  • \x1B[H:カーソルを左上に移動します(ホーム)。
  • \x1B[31m:テキストの色を赤に変更します。
  • \x1B[5;10H:カーソルを特定の座標(行5、列10)に移動します。

このモードでは、SerialToolはバイトを表示するだけでなく、シーケンスを解釈し、ユーザーにVT-100/ANSI標準で意図されたような、 きれいで色付きの、ナビゲート可能なインターフェースを表示します。

比較分析:Modbus(低レベル)対VT-100コンソール

同じソフトウェアに両方のモードがあることの有用性を理解するために、2つの対照的なシナリオを考えてみましょう:

例1 — Modbus(低レベル)

RS-485ネットワークでは、マスターがスレーブに問い合わせます。通信は次のようなバイナリパケット(フレーム)で構成されます: 01 03 00 00 00 02 C4 0B。 ここでは、16進数の可視化、CRC検証、バイト単位の分析が必要です。

解決策:SerialToolクラシックターミナル(バイト指向)。

例2 — ルーター/組み込みLinuxコンソール(VT-100)

ルーターまたは組み込みシステムに接続すると、デバイスはANSI/ESCシーケンスを介してASCIIテーブル、メニュー、色を送信します。 「基本的な」シリアルソフトウェアは、^[でいっぱいの紛らわしい文字列を表示します。 適切なVT-100ターミナルはコードを解釈し、設計通りにインターフェースを表示します。

解決策:SerialTool VT-100モード(完全なANSIエミュレーション)。

PuTTYTera Termなどのレガシーソフトウェアは、 ほぼ専らターミナルエミュレーション用に作成されたため、Modbusのようなプロトコルのバイト指向デバッグには理想的ではありません。 SerialToolは両方の長所を兼ね備えています。

ESP32ブートの可視化

選択したSerialToolの設定に基づいて同じデータがどのように異なって表示されるかをよりよく理解するために、デバッグポートを介してESP32-S3モジュールのブートを分析してみましょう。
さまざまな画面で、同じ標準ブートシーケンス(多くのマスターデバイスに共通)が繰り返され、VT-100ターミナルでの表示に最適です。
比較のために、同じシーケンスがSerialToolのクラシックターミナルおよび16進数ターミナルを使用して表示されています。

まず、次の画像に示すように、メインメニューからターミナルモードを選択します。

serial port terminal selection

ターミナル表示モードの選択

ターミナル設定からVT-100ターミナルモードを選択します。

serial port terminal vt-100

VT-100ターミナルモードの選択

VT-100シリアルターミナルモードを選択すると、SerialToolのクラシックターミナルに関連するオプションが無効になります。
ESP32モジュールをリセットすることで、モジュールからの着信ブートローダートラフィックを観察します。

boot esp32 serial port

VT-100ターミナルモードでのESP32-S3ブート

この時点で、SerialToolのクラシックターミナルを介した表示で、同じESP32モジュールのブート手順を試してみましょう。
まず、クラシックターミナルモードを選択し、バイト表現をASCII形式で選択します。
SerialToolのクラシックターミナルに関連するオプションが再表示されます。

boot esp32 serial port ascii selection

クラシックSerialToolターミナルモード - ASCIIの選択

ESP32モジュールをリセットすることで、モジュールからの着信ブートローダートラフィックを観察します。

boot esp32 serial port ascii

クラシックSerialToolターミナルモード - ASCIIでのESP32-S3ブート

データ表示モードを16進数に設定して、16進数モードでのトラフィック表示を使用して同じ実験を行いましょう。

boot esp32 serial port hex selection

クラシックSerialToolターミナルモード - 16進数の選択

ESP32モジュールをリセットすることで、モジュールからの着信ブートローダートラフィックを観察します。

boot esp32 hex terminal

クラシックSerialToolターミナルモード - 16進数でのESP32-S3ブート

最後のテストとして、SerialToolの別のタイプのシリアルターミナル、つまり純粋な16進数ターミナルを使用してみましょう。
この表現では、シリアルポートトラフィックは同じ画面上の2つの異なるセクションに16進数とASCIIの両方として表示されます。
このタイプの表示は、トラフィックをバイト(着信および発信)で同時に明確に確認する必要がある場合に非常に適しています。
16進数ターミナルを使用する選択は、通常、組み込み環境の開発者向けです。

まず、メイン画面から16進数ターミナルを選択します。

serial port terminal hex selection

16進数ターミナルモードの選択

ESP32モジュールをリセットすることで、16進数ターミナルを介してモジュールからの着信ブートローダートラフィックを観察します。

boot esp32 hex terminal

HEXターミナルでのESP32-S3ブート

SerialToolを選ぶ理由

SerialToolは最高のシリアルポートソフトウェアです。なぜなら、低レベルのクラシックターミナルと 完全なVT-100エミュレーションを、高度なロギングおよび分析ツールと共に単一のソリューションに統合しているからです。

  • 複数のシリアルポートを同時に開く。
  • バイト単位のビュー(ASCII/HEX/BIN)からVT-100モードに瞬時に切り替える。
  • 高度なロギングとデータ整合性分析(CRC/チェックサム、応答時間)を実行する。
  • 組み込み、産業、およびエンタープライズインフラストラクチャ用に、Windows、macOS、Linux上で単一のアプリケーションを使用する。

便利なウィキペディアリンク: シリアルポート · RS-232 · RS-485 · UART · VT-100 · ANSIエスケープシーケンス · Modbus