我正在处理从PC向MCU发送char'a'并通过串行通信将其返回PC。确切地说,它应该显示'a'但没有任何显示。 我已经测试了超级终端,它运行正常。
如果我的代码有任何问题,请指出。谢谢。
它可以正常发送一个字符我猜我只发布了一部分代码。
DWORD dwCommModemStatus;
DWORD dwBytesTransferred;
DWORD bytesWritten;
char receivedData[2] = {0};
char data= 'a';
bool sendChar = WriteFile(hSerial,&data,1,&bytesWritten,NULL);
if(!sendChar){
printf("WriteFile ERROR\n");
}
SetCommMask(hSerial,EV_RXCHAR);
WaitCommEvent(hSerial, &dwCommModemStatus,0);
if(dwCommModemStatus & EV_RXCHAR){
if(!ReadFile(hSerial,receivedData,1,&dwBytesTransferred,0)){
printf("ReadFile Error\n");
}else{
printf("%c\n",receivedData[0]);
}
}
答案 0 :(得分:0)
我认为上面的代码中缺少WaitForSingleObject
。
如果WaitCommEvent
返回false
,您必须等待。您可以使用WaitForSingleObject
执行此操作。如果此方法返回WAIT_OBJECT_0
,您可以使用ReadFile
。
有关详细信息,请参阅WaitForSingleObject function (Windows)和Wait Functions (Windows)。