socat - 직렬 연결을 통해 여러 연결 시도가 실패했습니다.

socat - 직렬 연결을 통해 여러 연결 시도가 실패했습니다.

가상 COM 포트 설정을 통해 Arduino 장치를 제어할 수 있도록 socat을 사용하여 네트워크를 통해 직렬 입력을 라우팅하고 있습니다.

socat을 시작하는 명령은 다음과 같습니다.

socat /dev/serial0,b500000,raw,echo=0 TCP-LISTEN:9876,nodelay,fork&

장치가 포트 :9876에 처음 연결되면 이 모든 것이 제대로 작동합니다. 그러나 다른 쪽 끝(Windows에서 com2tcp 사용)에서 연결이 끊어지면 추가 연결은 네트워크를 통해 RasPi 호스팅 socat 및 직렬 장치로 직렬을 보내지만 /dev /serial0에서는 데이터를 수신하지 않습니다. 원래 socat 프로세스를 종료하고 포트가 해제될 때까지 기다린 다음 socat를 다시 실행해야 합니다. RasPi가 헤드리스로 실행된다는 점을 고려하면 이러한 성가심을 피하고 싶습니다.

여러 개의 비동시 연결이 이런 방식으로 작동하도록 허용하는 방법이 있습니까? 게시물에 어떤 종류의 설정을 추가해야 할 것 같은데 echo=0어떤 설정인지 모르겠습니다.

(추가 설명: 제가 사용하고 있는 GIMX라는 소프트웨어가 요구하는 것이기 때문에 500000 전송 속도가 필요합니다. 이 설정의 목적은 다음 명령을 사용하여 다른 방의 장치를 사용하여 게임 콘솔에 연결할 수 있도록 하는 것입니다. /etc/rc.localRasPi는 Volumio를 사용하여 미디어 플레이어 역할도 하기 때문에 부팅 시 socat을 시작합니다. 이는 백그라운드에서 실행됩니다.


편집: 마침내 socat/com2tcp 경로를 포기하고 RFC2247 호환 연결을 구현했습니다. 즉, 필요에 따라 전송 속도를 수동으로 설정하는 것에 대해 걱정할 필요가 없으며, 보다 안정적인 부팅이 가능한 것 같습니다. 나는 내 정보를 기반으로https://robosavvy.com/forum/viewtopic.php?t=7578이는 기본적으로 설정에 대한 전체 개요를 제공합니다. 여러 링크가 작동하지 않더라도 연결을 설정하는 데 필요한 정보가 있습니다.

내가 찾고 있는 명령은 "end-close"라고 생각하지만 새 설정을 적용하기 전에는 이를 테스트하지 않았습니다.

답변1

로컬 네트워크에서는 TCP 대신 UDP를 사용할 수 있습니다. 대기 시간이 향상되고 연결 문제가 사라질 수 있습니다. 빠른 검색을 하면 COM2UDP라는 프로그램이 나타납니다.

관련 정보