Serproxy (Serial Proxy)는 시리얼 포트의 입출력을 TCP/IP 네트웍을 통해 리다이렉션 시켜주는 멀티쓰레드 프락시 소프트웨어이다. 작은 임베디드 보드의 경우 시리얼 포트만 가지고 있고 tcp/ip 스택을 가지고 있지 않아서 네트웍을 통해 연결을 할 수 없는 경우가 많다. 이런 경우 serproxy를 사용하면 원격지에 있는 디바이스를 네트웍을 통해 제어할 수 있게 된다.
그 이외에도 플래쉬나 다른 프로그래밍 언어로 사용자 인터페이스를 만드는 경우 해당 언어에서 시리얼 포트를 제어하는 라이브러리를 제공해주지 않으면 시리얼 포트를 사용할 수가 없지만 serproxy를 사용하면 소켓 프로그래밍 인터페이스를 사용해서 시리얼 포트로 데이터를 주고 받을 수 있다.
(a) 시리얼 포트를 직접 억세스하는 경우
(b) Serial proxy를 사용하는 경우
위의 그림 (b)에서는 serproxy를 실행하는 컴퓨터와 그 시리얼 포트를 사용하는 컴퓨터를 따로 그려 놨지만 한 컴퓨터에서 serproxy를 실행하고 같은 컴퓨터에서 소켓 프로그램으로 시리얼 포트를 억세스 할 수도 있다. (제어 프로그램을 플래시로 만드는 경우 경우 플래시에서 시리얼 포트를 직접 억세스 할 수 없기 때문에 이런 방법을 사용해야 한다. 이 경우 destination ip: localhost, port: cfg파일에 설정한 포트번호로 억세스 하면 된다.)
여기서 소스 및 윈도우용 바이너리 파일을 다운받을 수 있다.
맥용 바이너리 파일은 아래에서 다운받으면 된다.
압축을 열어보면 serproxy와 serproxy.cfg 가 있는데 serproxy.cfg는 /usr/local/etc에 serproxy는 /usr/local/bin에 복사해주고 자신의 환경에 맞게 serproxy.cfg를 바꿔주면 된다.
# 시리얼 포트에서 오는 뉴라인('\n')을 nils('\00') 으로 변환
# 플래시의 경우 끝에 nils가 오지 않으면 앞부분을 해석하지 않기 때문에 이 기능이 필요하다. true (e.g. 플래시를 사용하는 경우 or false
newlines_to_nils=true
# 사용할 시리얼 포트, 여기서는 2개를 사용하는 경우, 각각 1, 2가 된다.
comm_ports=1,2
# 디폴트 설정
comm_baud=19200
comm_databits=8
comm_stopbits=1
comm_parity=none
# 아이들 타임아웃
timeout=300
# 포트 맵핑 설정, 즉 시리얼 포트 1은 TCP포트 5531을 통해, 시리얼 포트 2는 TCP포트 5532를 통해 사용할 수 있음
net_port1=5331
net_port2=5332
# 각 시리얼 포트 디바이스 이름
serial_device1=/dev/tty.usbserial