이더넷 연결을 통해 두 개의 직렬 포트에서 단일 포트로 데이터를 리디렉션하고 싶습니다. 데이터를 전송했지만 느린 직렬 포트 데이터 속도로 인해 메시지가 개행 문자에 대한 캐리지 리턴을 기다리지 않기 때문에 메시지가 손상될 수 있습니다.
나는이 명령을 사용했습니다
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
문자가 하나씩 수신되는 방식을 보여줍니다. 다음 명령을 사용하면 직렬 데이터를 한 줄씩 성공적으로 인쇄할 수 있습니다.
while IFS='' read -r LINE || [ -n "${LINE}" ]; do echo "${LINE}"; done < /dev/ttyUSB0
그러나 직렬 데이터 손상 가능성을 덜 명확하게 하기 위해 직렬 데이터를 한 줄씩 리디렉션할 수 있는 방법은 무엇입니까?
아래의 "/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 메시지입니다. 줄의 시작 부분에 있는 것에는 뭔가 특별한 것이 있는 것 같아요.