イーサネット接続を介して2つのシリアルポートから単一のポートにデータをリダイレクトしたいと思います。データを送信しましたが、シリアルポートの速度が遅いため、メッセージが改行文字のキャリッジリターンを待たないため、メッセージが破損する可能性があります。
私はこのコマンドを使用しました
netcat -p 23000 -u 192.168.1.7 23000 </dev/ttyUSB1&
netcat -p 23000 -u 192.168.1.7 23000 </dev/ttyUSB0&
相手はすべてのデータを受信できますが、両方のポートが同時に受信すると回線が損傷する可能性があります。
cat /dev/ttyUSB0
文字を1つずつ受け取る方法を示します。次のコマンドを使用すると、シリアルデータを1行ずつ正常に印刷できます。
while IFS='' read -r LINE || [ -n "${LINE}" ]; do echo "${LINE}"; done < /dev/ttyUSB0
しかし、シリアルデータの破損の可能性をあまり明確にするために、シリアルデータを1行ずつリダイレクトする方法は何ですか?
以下の「/dev/ttyUSB0」を交換する必要があります。
netcat -p 23000 -u 192.168.1.7 23000 </dev/ttyUSB0&
このような
while IFS='' read -r LINE || [ -n "${LINE}" ]; do echo "${LINE}"; done < /dev/ttyUSB0
あるいは、両方のソースからの線を損傷しないように処理する賢い方法があるかもしれません。
編集:私はWiFiルーターでOpenWRTディストリビューションを使用しています。 Netcatをインストールしましたが、socatが利用可能かどうかはわかりません。処理するデータは、両方のデバイスからのNMEA0183メッセージです。行の始めにあるものには何か特別なものがあると思います。