0

我正在将 char 'a' 从 pc 发送到 MCU,然后通过串行通信将其返回给 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]);
    }
}
4

1 回答 1

0

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

如果WaitCommEvent退货false,您必须等待。您可以使用WaitForSingleObject. 如果此方法返回WAIT_OBJECT_0,您可以使用ReadFile.

有关详细信息,请参阅WaitForSingleObject 函数 (Windows)等待函数 (Windows)

于 2013-02-07T12:01:51.703 回答