2009-04-01 4 views

답변

7

`PurgeComm()' 중 하나 또는 둘 모두 송신 및 수신 버퍼에서 모든 문자를 삭제하고, 포트에 대한 작업을 모든 판독 대기 중 중단 및/또는 작성할 수있다 (그것은 기본적으로 삭제). 포트에 모든 것을 할 말 같은 것을 : 당신은 또한 당신이 처리했는지 확인 또는 명시 적으로 아마 ClearCommError()으로뿐만 아니라 포트에서 대기중인 오류를 무시하게 할 수 있습니다

PurgeComm(hPort, PURGE_RXABORT|PURGE_TXABORT|PURGE_RXCLEAR|PURGE_TXCLEAR) 

.

ReadFile()은 사용 가능한 모든 바이트를 낭비 버퍼로 읽음으로써 Rx 버퍼와 FIFO 만 비울 수 있습니다. 해당 버퍼의 크기를 올바르게 지정하려면 "부 자연스러운"지식이 필요하거나 더 이상 말할 때까지 ReadFile() 호출을 반복해야합니다.

그러나 플러시하기 위해 버퍼를 읽는 경우 COMMTIMEOUTS이 "합리적으로"설정되어 있거나 버퍼가 채워질 때까지 읽기가 차단되는 경우에만 의미가 있습니다.

0

FlushFileBuffers 동 기적으로 전송 버퍼

데이터의 전송을 강제로 단지 COM 포트에 대한 핸들에 ReadFile을 호출 수신 버퍼 COM 포트에서 데이터를 가져 오기 위해, 이해가되지 않습니다 수신 버퍼를 플러시

PurgeComm는 송수신하지 않고 버퍼를 비운다

+0

네,하지만 당신이 COMMTIMEOUTS에 의존하는 읽기 파일을 사용한다면, 이것들이 저의 응용 프로그램을 느리게 만듭니다. 내가 읽고 싶지 않은 버퍼에 남아있는 쓰레기가 있습니다. 읽기 파일을 사용하는 경우 읽기 대기가 발생하거나 지속적으로 COMMTIMEOUTS를 변경해야합니다. –

+0

문맥에서 플러시와 덤프라는 용어는 버퍼를 실제로 무효화하거나 퍼지하지 않는 것을 의미합니다. 특히 버퍼를 무효로하지 않고 전송을 보장하는 전송 버퍼와 관련하여 플러시를 사용한 경우를 고려하면 –

관련 문제