mfc serial 통신 예제

OpenPort() 멤버 함수는 데이터 전송을 위한 통신 포트를 엽니다. 이 함수에 전달할 매개 변수는 포트 이름을 포함하는 문자열입니다. 예를 들어 COM1의 경우 “com1”, COM2등의 “com2″를 예로 들 수 있습니다. 함수가 성공하면 반환 값은 true이며 그렇지 않으면 false입니다. SerialCtrlDemo 프로젝트는 CSerialIO 클래스를 사용하는 방법을 보여 주며 다음 UI에 설명된 대로 직렬 통신 이벤트 정보를 쉽게 표시할 수 있습니다: CreateFile() 함수는 통신 포트를 엽니다. CreateFile()을 호출하여 포트를 여는 방법에는 겹쳐진 방법과 겹치지 않는 방법이 있습니다. 오버랩된 IO 작업 및 중첩되지 않은 IO 작업에 대한 통신 포트를 열 수 있습니다. CSerialCom 클래스는 겹치지 않는 IO 작업에 대해 작성되었습니다. 오버랩및 중첩되지 않은 IO에 대한 자세한 내용은 MSDN 설명서를 참조하십시오. 이 리소스를 사용하는 다른 응용 프로그램에서 이 포트를 사용할 수 있도록 하려면 직렬 전송 후 통신 포트를 닫아야 합니다. 포트(예: 포트가 열린 상태)로 작업하는 한 오버랩되지 않은 IO 작업에서 해당 포트에 대한 핸들을 닫을 때까지 다른 스레드 또는 응용 프로그램은 이 포트에 액세스할 수 없습니다. CloseHandle() 함수를 호출하여 직렬 포트를 닫습니다. CloseHandle()에는 포트를 연 CreateFile() 호출에서 반환되는 핸들인 하나의 매개 변수가 있습니다.

ZIP 형식에서 이 예제에서 사용되는 Visual C++ 프로젝트(85K)를 검색하려면 “VISUAL C++ EXAMPLE”를 클릭하고 이 코드는 TXD 핀 및 RXD 핀이 단락된 RS-232 커넥터로 테스트되었으며, `com1`(예: case1의 경우: 아니요)에 연결되었습니다. 읽을 데이터바이트의 사전 정의 또는 상수 (이 경우 1) 및 통신을 위한 3964 프로토콜을 지원하는 baud rate 9600을 가진 스마트 카드 리더기 (예를 들어, case2: no. no. . 외부 장치에서 읽을 데이터 바이트의 알 수 없습니다 및 데이터 전송의 끝은 해당 프로토콜 (win-98/2000에서 해당 프로토콜에 대한 `ETX`문자)에서 전송 문자의 끝인 수신 된 마지막 문자와 시간 시간에 의해 감지됩니다 제대로 작동 발견. DWORD ReadInterval시간아웃은 통신 회선에 두 문자가 도착할 때까지 허용되는 최대 시간을 밀리초 단위로 지정합니다. ReadFile() 작업 중에 첫 번째 문자를 받을 때 기간이 시작됩니다. 두 문자의 도착 사이의 간격이 이 양을 초과하면 ReadFile 작업이 완료되고 버퍼링된 데이터가 반환됩니다. 값이 0이면 간격 시간 시간이 사용되지 않음을 나타냅니다. ReadTotalTimeout 상수 및 ReadTotalTimeoutMultiplier 멤버 모두에 대해 0값과 결합된 MAXDWORD 값은 문자가 없더라도 이미 수신된 문자로 즉시 반환되도록 읽기 작업을 지정합니다.

수신되었습니다. 직렬 포트에 액세스하는 첫 번째 단계는 파일 핸들을 설정하는 것입니다. 예를 들어 기기에서 최대 문자 블록을 전송하는 경우를 예로 들 수 있습니다. 각 문자 간에 500ms의 시간 시간 값, 당신은 SetCommunicationTimeouts (0,500,0,0,0)로 시간 시간 함수를 설정할 수 있습니다.) 함수가 성공하면 반환 값은 true 그렇지 않으면 false입니다.