2013-11-27 2 views
2

최근에 RS-232 회선을 통해 특정 장치와 통신하는 프로젝트가 있습니다. 내 컴퓨터에는 시리얼 포트가 없기 때문에 USB-to-RS232 와이어를 사용하여 장치와 컴퓨터 사이의 중개자가됩니다. 그러나 나는 리눅스 드라이버에서 새로운 것이므로 그것을 생각하기가 어렵다.Linux에서 USB-to-RS232 와이어를 통해 장치와 통신하는 방법은 무엇입니까?

데비안에서는 기본 작동중인 드라이버로 작업하고 있으며 하드웨어 측면에서 수행 할 수있는 모든 작업을 테스트하여 모든 것이 잘 수행되었음을 확인했습니다. 이제는 장치에 명령을 보내고 C에서 해당 데이터를 수신하는 방법이 될 것입니다. 일부 책을 읽었으며 usb 포트를 tty 장치로 매핑하는 것이 효과적 일 수 있다고 생각합니다.

나는 올바른 방법으로 생각하고 있습니까? 나는 혼란 스럽다. 나는 "minicom"의 소스 코드를 다운로드하고 그것의 몇 줄을 읽었지 만 나는 아직도 그것을 얻지 못한다. 도와주세요.

+1

USB에 RS232 장치를 올바르게 설치하려면 Linux 파일 시스템에/dev/ttyS0과 같은 COM 포트 장치를 만들어야합니다. 이 장치를 사용하면 표준 직렬 포트 통신 프로그램을 작성할 수 있습니다. 실제로 직렬 포트인지 USB 에뮬레이션인지는 중요하지 않습니다. http://stackoverflow.com/questions/6947413/how-to-open-read-and-write-from-serial-port-in-c –

+0

@AlexFarber : 사실 USB-to-RS232 장치는 일반적으로'/dev/ttyUSB0'. – rodrigo

+0

@AlexFarber : 정말 고마워요! 그 질문을 참고하겠습니다. – HuStmpHrrr

답변

3

USB-to-RS232는 아마도 FTDI 칩을 사용하고있을 것입니다. Linux의 아이디어는 커널에 추가 된 모든 드라이버가/dev 파일 시스템의 항목을 조작하여 액세스 할 수 있다는 것입니다.

Linux (또는 UNIX 계열)로 작업 할 때 가장 먼저 알아야 할 것은 모든 것이 파일이라는 것입니다. 그래서 리눅스와 달리 리눅스에서는 표준 파일 시스템 기능을 사용합니다 (단순한 이유로 ioctl을 사용하지 않습니다)

dev에서 디렉토리를 열어 "와이어"를 꽂을 때 나타나는 항목과 제거 할 때 사라지는 항목을 확인하십시오. 언급 한 바와 같이, 장치 파일은 아마도 ttyUSB0이라고 할 수 있지만, ttyS0은 불가능하지 않습니다. fd = open("/dev/ttyUSB0", O_RDWR) 당신은 당신의 COM 포트에서 문자를주고받을 수있는 기능 writeread을 사용할 수 있습니다 : 프로그램은 다음이 "파일을"열기에

. 끝내면 포트를 닫으십시오. close(fd)

라인 매개 변수를 설정하려면 termios 구조에 대한 minicom 소스 또는 Linux 설명서를 검색하십시오.

커트 월 (Kurt Wall)이 저술 한 "Linux Programming Unleashed"소장. Linux에서 실행되는 응용 프로그램의 경우 C 코드를 작성하는 모든 사용자에게 꼭 필요한 기능이라고 생각합니다.

행운을 비네.

+0

어댑터가 할당 된 장치 이름을 확인하려면 플러그를 꽂아 볼 수 있습니다. 마지막 메시지는 무엇입니까? [dmesg] (http://en.wikipedia.org/wiki/Dmesg)가 말할 것입니다. 라인 매개 변수는 [stty] (http://unixhelp.ed.ac.uk/CGI/man-cgi?stty) 유틸리티를 통해 설정할 수도 있습니다. – yegorich

+1

"POSIX 운영 체제 용 직렬 프로그래밍 안내서"는 좋은 참고 자료입니다. http://www.cmrr.umn.edu/~strupp/serial.html – Preston

관련 문제