Serproxy (Serial Proxy)는 시리얼 포트의 입출력을 TCP/IP 네트웍을 통해 리다이렉션 시켜주는 멀티쓰레드 프락시 소프트웨어이다. 작은 임베디드 보드의 경우 시리얼 포트만 가지고 있고 tcp/ip 스택을 가지고 있지 않아서 네트웍을 통해 연결을 할 수 없는 경우가 많다. 이런 경우 serproxy를 사용하면 원격지에 있는 디바이스를 네트웍을 통해 제어할 수 있게 된다.

그 이외에도 플래쉬나 다른 프로그래밍 언어로 사용자 인터페이스를 만드는 경우 해당 언어에서 시리얼 포트를 제어하는 라이브러리를 제공해주지 않으면 시리얼 포트를 사용할 수가 없지만 serproxy를 사용하면 소켓 프로그래밍 인터페이스를 사용해서 시리얼 포트로 데이터를 주고 받을 수 있다.


200806222356.jpg

(a) 시리얼 포트를 직접 억세스하는 경우


200806222356.jpg

(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

serial_device2=/dev/tty.usbserial-3B1
Posted by nautes

인터넷은 정말 무한한 정보의 바다이다. 잘 찾아보면 전 세계에서 다양한 사람들이 하고 있는 재미있는 것들이 넘쳐난다.
그 동안 NDSL을 구입해 놓고도 아직 그 흔한 닥터(?)도 안 샀고 테트리스 팩 하나로 버티고 있으면서 뭔가 embedded system에 활용할 방법을 찾고 있었는데 마침 적당한 인터페이스 보드를 발견했다.

사용자 삽입 이미지

사진에 있는 보드가 NDS의 DS slot에 장착하는 dserial이다. 8051 호환 마이컴과 RS-232, USB client(2.0 Full speed), GPIO, Tilt sensor(Wii mote에서도 사용된 기울기 감지 센서)가 장착되어 있다.

좀 더 상세한 자료와 소프트웨어는 http://www.natrium42.com/wiki/Main_Page 에서 찾아보면 된다. 하드웨어는 완성되었지만 라이브러리는 아직 개발중이라 시리얼 인터페이스와 간단한 IO만 코드가 완성되어 있고 나머지 인터페이스 라이브러리는 아직 개발중인거 같지만 자신이 능력이 있으면 직접 작성해서 사용하면 된다.
라이브러리가 완전해지면 응용할 수 있는 범위는 상당히 넓을거 같다.

현재까지만 가지고도 GPS, Servo motor, MIDI등을 NDS에 연결한 예제를 프로젝트 홈 페이지에서 확인할 수 있다. 보드는 v2.0이 지금 예약주문을 받고 있는데 나도 조만간 하나 구입해서 뭔가 뚝딱거려 볼 예정이다.
Posted by nautes

이전버튼 1 이전버튼