2
COM 포트 RD 및 TD 핀을 함께 연결하여 직렬 포트 통신을 테스트하고 있습니다. COM 포트는 아래 코드가 실행되기 전에 초기화되었습니다.ReadFile()이 빈 데이터를 반환합니다.
CString cs_Send = "F: 5000000 Hz, SF: 1.0, Phase: 10, Position: 50, on sample 1";
BOOL bWriteRC = false;
BOOL bReadRC = false;
DWORD iBytesWritten = 0;
char readBuffer[256] = {"\0"};
DWORD read;
bWriteRC = WriteFile(hPort,cs_Send.GetBuffer(10),cs_Send.GetLength(),&iBytesWritten,NULL);
**Sleep(1000);// Thanks for the advice!!! this Sleep() will fix this error.**
bReadRC = ReadFile(hPort,readBuffer,sizeof(readBuffer),&read,NULL);
if(bWriteRC)
{
if(bReadRC)
{
AfxMessageBox(readBuffer, MB_OK);
}
}
bWriteRC 및 bReadRC는 항상 true를 반환합니다. 그러나 첫 번째 메시지는 완전히 비어 있습니다. 그리고 이것을 두 번 이상 실행하면 1 차 이후의 모든 메일은 내가 보낸 메일과 정확히 동일합니다. 첫 번째 것이 항상 비어있는 이유가 궁금합니다.
WriteFile() 후에 FlushFileBuffers (hPort)에서 작동하지 않습니다. ** 첫 번째 메시지는 여전히 비어 있습니다. ** – user1098761
'ReadFile'을 호출 한 후'read' 변수의 값은 무엇입니까? 그리고 어떻게'CreateFile'을 호출 했습니까? –
''char csize [256] = { "\ 0"};을 추가 한 다음 ReadFile() 뒤에 itoa (read, csize, 10);를 추가하십시오. 첫 번째 값은 항상 0이고 다음에 오는 값은 모두 61입니다. CreateFile()은 잘 호출되며 테스트 전에 항상 초기화되었습니다. 1 Byte-wise 전송은 성공했으며 CString-wise 테스트를 완료하려고했습니다. – user1098761