【发布时间】:2012-11-04 01:37:45
【问题描述】:
我正在将一个字符“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]);
}
}
【问题讨论】:
-
WaitCommEvent 返回 TRUE 吗?
-
串口设置错误是典型的解释,尤其是握手线。使用 SysInternals 的 PortMon 将超级终端与您的代码进行比较。
-
抱歉回复晚了。 patriiice -> 我已经对其进行了测试,它返回 TRUE Hans-> 也许我的设置有问题。我想发布我的整个代码,我创建一个新线程不是更好吗?
-
当
WaitCommEvent返回时dwCommModemStatus的值是多少?
标签: winapi serial-port