2012-06-25 6 views
9

나는 흥미로운 문제가있다. ARM 프로세서에서 각각 실행되는 Linux 인스턴스가 여러 개인 내장형 상자에서 작업하고 있습니다. 이들은 내부 1GBps 네트워크를 통해 연결됩니다. 직렬 포트 장치 노드가 프로세서 A에 연결되어 있습니다 (Linux-A가 실행 중임). 나는 프로세서 B (Linux-B에서 말하기를 좋아한다)에서 실행되는 프로그램이 마치 리눅스 -B에 로컬로 연결된 것처럼 직렬 포트 장치에 접근한다.
내 프로그램은 장치 노드에서 term I/o type API 호출을 호출하여 tty 에코, 문자 모드 입력을 제어합니다. Linux-B에서 사용할 수있는 가상 직렬 장치를 만들 수있는 방법이 있다면 내부 네트워크를 통해 Linux-A의 실제 직렬 장치와 대화하는 방법이 있는지 궁금합니다.
실제 장치에 데이터를 프록시하는 Linux에서 가상 io 장치를 만드는 방법은 무엇입니까?

다음 행의 내용을 생각하고 있습니다. Linux-B에는/dev/ttyvirtual이 있습니다. 그것에 쓰여진 내용은 네트워크 소켓을 통해 Linux-A 시리얼 서버로 전송됩니다. 직렬 장치는 실제 장치에서 api 호출을 exrcise하여/dev/ttys0을 말합니다. ttys0에서 대기중인 모든 데이터는/dev/ttyvirtual로 다시 전송됩니다.

이 작업을 빠르게 수행하려면 무엇이 필요합니까?

감사
Videoguy

업데이트 : 나는 큰 포인터 http://fixunix.com/bsd/261068-network-socket-serial-port-question.html에서 토론을 발견했다.
다른 유용한 링크는 http://blog.philippklaus.de/2011/08/make-rs232-serial-devices-accessible-via-ethernet/

+0

다이어그램이 유용 할 것입니다. – Merlin

답변

7

나는 여기에서 찾을 수 있습니다 socat

예를 사용하여 종료 : socat examples

당신은 모두 컴퓨터에 다시 다시 socat. 하나는 tcp 포트를 청취하고 데이터를 로컬 가상 포트 또는 pty로 전달합니다. 다른 상자의 socat은 실제 장치를 입력으로 사용하고 모든 데이터를 TCP 포트로 전달합니다.

8

입니다. openpty(3)을 살펴보십시오. 이를 통해 의사 TTY (예 : /dev/pts/0, ssh 연결에서 사용하는 정렬)를 만들 수 있습니다.이 TTY는 일반적인 TTY처럼 응답하지만 프로그래밍 방식으로 직접 연결을 제어 할 수 있습니다.

이 방법을 사용하면 네트워크 연결간에 데이터를 전달하는 직렬 장치 (예 : /dev/pts/5)를 호스트 할 수 있습니다. 그러면 다른 응용 프로그램은 기본 네트워크 브리지에 대해 알지 못해도 직렬 작업을 수행 할 수 있습니다.