ミルク色の記録

やったこと、やってみたこと

シリアル接続同士をプロキシするツールを作った

とある通信モジュールを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)

そこそこ便利だったので、書き直してデバッグ用のコンソール表示機能つけた。

github.com