RS-232接続で行われている2点間のシリアル通信の内容を、やんごとなき事情で読み取らなくてはならない。そんなとき、「Data Tap」というシンプルな道具が使えるらしいと知った。2点間の通信のそれぞれのTXとRXの信号を、第3の端子にRXとしてまとめて出力してくれる回路が入っているのであろう。高価な専用機器としては「RS-232Cアナライザー」というものがあるらしいがまずは安価な範囲でね……。
ウェブ検索で見つけられる手頃なData Tapは下記のようにいくつかあるようで、ここでは後者の「BB-9PCDT」を入手した。仕様がわかるデータシートも公開されている。
本記事では、初めて触るRS232 Data Tapの動作確認として、2点間の通信内容を第3の端子 (Tap Connector) から読み取るところまでやってみる。
種別 | 商品名 | 購入店 | |
---|---|---|---|
RS-232 Data Tap | ADVANTECH ULI-252D BB-9PCDT | Mouser Electronics |
今回のBB-9PCDTの端子形状に合う、下記のUSB-シリアル変換ケーブルも、1本+2本で計3本準備した。
UGREEN RS232C USB 変換ケーブル USB シリアル変換ケーブル [ USB A to D-Sub9ピン] USB シリアルケーブル Windows 10/8.1/8/7/XP/Linux/Mac OS対応 1M
UGREEN GROUP LIMITED
$ lsusb | grep Serial
Bus 001 Device 009: ID 067b:23a3 Prolific Technology, Inc. USB-Serial Controller
Bus 001 Device 008: ID 067b:23a3 Prolific Technology, Inc. USB-Serial Controller
Bus 001 Device 010: ID 067b:23a3 Prolific Technology, Inc. USB-Serial Controller
$ ls -a /dev/ttyUSB*
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2
067b:23a3
なデバイスはUbuntu 22.04環境において接続するだけで利用できることがわかる (ドライバの別途インストール不要)。sudo minicom -s
して諸々お好みの設定を行い、「“dfl” に設定を保存」して最後に「Minicom を終了」を行う。ここで行った設定がデフォルトとして扱われる。今回の実験では次の内容とした。$ cat /etc/minicom/minirc.dfl
# Machine-generated file - use "minicom -s" to change parameters.
pu baudrate 9600
pu rtscts No
pu localecho Yes
pu addlinefeed Yes
pu linewrap Yes
/dev/ttyUSB2
に接続されたケーブルが第3の端子 (Tap Connector) につながっている想定であるが、ttyUSB
の末尾の数字は、ケーブルの認識順や、実際のUSB端子とRS232端子との接続の組み合わせによって変わるので、各自突き止めること。端末名 | 起動するコマンド (-o=–noinit, -D=–device) |
---|---|
端末1 | minicom -o -D /dev/ttyUSB0 |
端末2 | minicom -o -D /dev/ttyUSB1 |
端末3 | minicom -o -D /dev/ttyUSB2 --displayhex ※ttyUSB2 = Tap Connectorの想定 |
--displayhex
しているので受信内容は16進数表記になる。minicom -o -D /dev/ttyUSB2 --capturefile=serial.log
すればよい。通信中に別の端末4でtail -F serial.log
することも可能だ。昔懐かしいパソコン通信で重宝していた、ZMODEMによるファイル転送を、端末1と端末2の間でやってみることもできた。しかし今回の実験環境では、端末1からZMODEM送信を開始する際に、端末2だけではなく端末3のminicomもZMODEM受信を始めようとするので、端末3のZMODEM受信はCtrl+Cで中止する必要がある。その後は、ZMODEM通信の様子が端末3でモニターできる。