2012-10-04 3 views
7

직렬 포트를 통해 연결을 열려고하는 C 프로그램을 작성하고 들어오는 명령을 "수신"하면 몇 가지 조치를 취하여 상태를보고합니다.Linux에서 사용할 직렬 포트를 어떻게 알 수 있습니까?

연결이 RS232 (직렬 포트)를 통해 이루어질 예정이며 어떤 포트를 열 것인지 알 수있는 방법을 이해하려고합니다.

Windows를 사용할 때 장치 관리 프로그램에 "USB-to-Serial 통신 포트 (COM4)"가 표시되는데 USB 장치를 연결하면 다음과 같은 메시지가 표시됩니다. /sys/class/tty 또는 /dev 영역의 변경 사항을 확인하십시오. ttyS0에서 ttyS7까지 항상 표시됩니다 (Swhat I've read을 기반으로합니다).

그래서 연결할 대상을 어떻게 알 수 있습니까?

편집
내가 오픈 수세 12.1 상자 (3.1 커널)에이 개발하고 있어요하지만, 마지막 프로그램은 2.4Linux 커널을 실행하는 보드 된 uCLinux에 실행됩니다, 그래서 찾고 있어요 구형 커널에서 작동 할 순수 C 솔루션

참고 : this post에 대한 답변에서 언급 한대로 this post에 대한 파일 시스템은 2.6 커널과 필자의 제약으로 인해 2.4 커널에서 사용할 수있는 것들을 고수해야합니다.

+1

USB 직렬 포트 어댑터는'/ dev/ttyUSB0 '. 또한 직렬 포트를 열거 할 방법이 필요하면 [이 질문] (http://stackoverflow.com/questions/2530096/)을 확인하십시오. –

+0

pyserial이 도움이 될 것입니다. – Prasanth

+0

@PhilippeGauthier - 사용자가 USB-> 직렬 케이블 또는 직선 직렬 케이블을 사용할 것인지 여부를 알 수 없다는 것을 고려하면 매우 불행합니다. : – Mike

답변

3

dmesg 명령은 장치 이름을 제공 할 모듈이 연결될 때 커널 메시지를 표시합니다.

/proc 파일 시스템은 윈도우에 장치 관리자처럼 -

+1

dmesg를 읽는 것처럼 보입니다. [827.528859] usb 2-2 : pl2303 변환기가 ttyUSB0에 연결되었습니다. 그래서/dev/ttyUSB0에서 장치를 볼 수 있습니다. – Mike

1

내가 사용했던 두 가지 : (a) 제어 라인 (DTR, DSR 등)을 찾고 (b) 포트의 'all'을 열고 어떤 포트가 활성 상태인지 확인하십시오. 후자의 경우 직렬 장치에 메시지를 보내고 응답 할 수 있다면 도움이됩니다. 이것은 분명히 장치가 메시지에 응답 할 경우에만 작동합니다.

0

체크 아웃 /proc/tty/driver/serial TTY 장치의 목록이있을 것이다 어딘가에 - 대신 unknown16550Arx 같은 UART가해야 볼 수> 0 기존 포트의 경우. 사용할 포트를 추측해야하는 경우 사용 가능한 모든 포트를 엽니 다. 그 후, 필요에 따라 포트 (baudrate, parity, bits 등)를 설정하거나 들어오는 전송 속도를 추측해야합니다.

+1

또한/proc/tty/driver/usbserial도 확인하십시오. – sawdust

관련 문제