원격 직렬 포트를 로컬 직렬 포트로 사용

원격 직렬 포트를 로컬 직렬 포트로 사용

충전 컨트롤러용 소프트웨어를 개발하려고 하는데 이를 사용할 수 있는 유일한 장치는 라즈베리 파이뿐입니다(내 컴퓨터가 아래층에 있는 것을 원하지 않기 때문에). 어쨌든 원격 장치의 /dev를 통해 /ttyUSBX를 통과합니다. 의사소통하다.

내 로컬 컴퓨터에 가상 직렬 포트를 만들고 SSH를 통해 연결할 수 있으면 좋겠습니다. 그렇지 않으면 암호화되지 않는 것이 좋습니다. 또한 데몬이 될 수 있으므로 전체 패스스루와 같을 수도 있으면 좋을 것입니다.

socat 및 ser2net을 조사했지만 데이터가 전달되지 않거나 명령을 보낸 후 socat이 종료됩니다. 튜토리얼도 찾아봤는데 대개는 원격이 아닌 클라이언트에 대한 예제만 표시됩니다. 따라서 서버와 클라이언트 모두에 대한 예를 제공해 주시면 대단히 감사하겠습니다.

답변1

"가상 직렬 포트"는 Windows 용어입니다. Linux에는 "가상 직렬 포트"가 없습니다.

Linux에는 s를 파일에 추가하는 기능이 지원됩니다 ioctl. 이것이 필요하지 않은 경우 socat.

이것이 정말로 필요한 경우 해결책을 모르겠습니다. 그러나 당신은 무엇을합니까?할 수 있는당신이 원하는 것은 USB 장치를 네트워크를 통해 투명하게 전달하는 것입니다.우빕. 대부분의 Linux 배포판에는 usbip이 패키지로 포함되어 있습니다.

따라서 원격 장치의 USB 직렬 포트를 로컬 USB 장치로 취급한 다음 /dev/ttyUSBX로컬 장치에서 액세스합니다.

이는 또한 DTR, RTS 등의 작업을 나타내는 USB 패킷을 양방향으로 전달합니다.

답변2

주의 깊게 읽어보니 man socat다음과 같은 예가 드러났습니다.

socat PTY,link=$HOME/vmodem0,rawer,wait-slave \
    EXEC:"ssh modemserver.us.org socat - /dev/ttyS0,nonblock,rawer"

다음과 같이 기록됨:

- generates  a pseudo terminal device (PTY) on the client that can
be reached under the symbolic link $HOME/vmodem0.  An appli‐
cation that expects a serial line or modem can be configured to
use $HOME/vmodem0; its traffic will be directed to a  modem‐
server  via  ssh  where  another  socat  instance  links  it  to
/dev/ttyS0.

따라서 PC는 a를 실행하고 socata의 pty링크를 에 할당한 $HOME/vmodem0다음 원격 측에서 실행되는 명령의 stdin/stdout을 채널링하여 sshstdin/stdout을 (원격)로/에서 유사한(그러나 반대) 전송을 수행합니다. 괄호 안의 매뉴얼 페이지에서는 링크 이름으로 사용하도록 제안하고 있지만 편의상 단축했습니다.socat/dev/ttyS0$HOME/dev/vmodem0

modemserver.us.org물론 , 및 대신 Raspberry Pi IP를 사용하도록 명령을 조정해야 /dev/ttyUSBX하지만 /dev/ttyS0다른 모든 내용은 그대로 작성할 수 있을 것 같습니다.

관련 정보