c 시리얼 통신 예제


나는 문제에 갇혀 프로그래밍의 세계에 매우 새로운입니다. 프로젝트의 일환으로 RS 422 포트에서 단방향 통신만 있는 센서에서 데이터를 수신해야 합니다. 전송되는 패킷은 81바이트 길이이며 다음과 같이 구성됩니다. „대상 설정“ 명령을 전송하여 Jrk의 대상을 설정하는 방법과 „변수 받기“ 명령을 사용하여 변수를 읽는 방법을 보여 줍니다. Linux 및 macOS에서 작동하는 매우 유사한 예제는 섹션 15.5를 참조하십시오. 파일 시스템의 장치 이름은 단순히 별칭이기 때문에 동일한 유닉스 시스템에서도 다를 수 있습니다. 장치 이름의 중요한 부분(예: /dev)은 주 번호와 부수입니다. 주 번호는 키보드 드라이버와 같은 직렬 포트를 구분하고 커널에서 올바른 드라이버를 선택하는 데 사용됩니다. 주요 숫자는 다른 유닉스 시스템마다 다릅니다. 소수는 장치 드라이버 자체로 해석됩니다. 직렬 장치 드라이버의 경우 일반적으로 사용할 물리적 인터페이스를 검색하는 데 사용됩니다.

경우에 따라 장치 드라이버에서 사용할 DCD 동작 또는 사용할 하드웨어 흐름 제어 신호를 결정하기 위해 작은 숫자도 사용됩니다. 새로운 termios API는 이전 termio API를 기반으로하므로 두 개의 termio … API는 많은 유사점을 공유합니다. 용어 API는 또한 처음부터 변화를 겪고있다. 예를 들어 baud 비율을 지정하는 방법이 미리 정의된 상수를 사용하는 것에서 보다 완화된 스키마로 변경되었습니다(상수는 대부분의 구현에서도 계속 사용할 수 있음). 두 프로세스를 구성하는 일반적인 방법은 읽기 프로세스를 백그라운드에 배치하고 쓰기 프로세스가 포그라운드에서 계속 실행되도록 하는 것입니다. 예를 들어 다음 스크립트는 장치를 구성하고 직렬 장치에서 받은 모든 데이터를 표준 출력으로 복사하는 백그라운드 프로세스를 시작합니다. 그런 다음 장치에 명령을 쓰기 시작합니다 : Visual C ++에서 컴파일 할 수 있다고 추측하고 있습니다 .

이것은 동일한 함수의 유니코드 또는 비 유니코드 버전과 관련된 이상한 문제 중 하나처럼 들립니다. 예를 들어 CreateFile과 같은 Win32 함수를 사용하는 경우 실제로 함수의 가능한 두 버전 중 하나인 CreateFileW라는 유니코드 버전 또는 CreateFileA라는 비유니코드(ANSI) 버전 중 하나를 사용하는 것입니다. 선택한 프로젝트 설정에 따라 프로그램이 사용할 수 있습니다.