串口(winAPI):无法接收任何数据

时间:2012-11-15 12:44:39

标签: winapi serial-port

我正在处理从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]);
    }
}

1 个答案:

答案 0 :(得分:0)

我认为上面的代码中缺少WaitForSingleObject

如果WaitCommEvent返回false,您必须等待。您可以使用WaitForSingleObject执行此操作。如果此方法返回WAIT_OBJECT_0,您可以使用ReadFile

有关详细信息,请参阅WaitForSingleObject function (Windows)Wait Functions (Windows)