シリアル接続同士をプロキシするツールを作った
とある通信モジュールをM5Stack(UART 2)で使う必要があったのだけど、通信モジュールの評価ボードがUSBでシリアル接続するものなので直接繋げないという状態になった。
幸い、USBシリアル変換ケーブルのTTL-232R-3V3が手元にあったので、通信モジュール -> USBケーブル -> (なにか) -> TTL-232R-3V3 -> M5Stack とすれば繋げられるなと思ったので、次のPythonでスクリプトを書いてしのいだ(socatでできそうな気がしたんだけど、うまくできなくて投げ出した)。
import serial from threading import Thread import time com1 = serial.Serial("/dev/ttyUSB0", 115200, timeout=1) com2 = serial.Serial("/dev/ttyUSB1", 115200, timeout=1) def pipe1(): while True: b = com1.read(com1.in_waiting or 1) if b: com2.write(b) def pipe2(): while True: b = com2.read(com2.in_waiting or 1) if b: com1.write(b) th1 = Thread(target=pipe1, daemon=True) th2 = Thread(target=pipe2, daemon=True) th1.start() th2.start() while True: time.sleep(1)
そこそこ便利だったので、書き直してデバッグ用のコンソール表示機能つけた。