科恩油烟机价格:串口通讯问题--发送时程序停止

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 08:15:24
我写了串口通讯测试程序,可以接收到设备发来的数据,但发不出去。
HANDLE hCom;
DWORD dwError;
hCom = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hCom == (HANDLE)0xFFFFFFFF)
{
dwError = GetLastError();
MessageBox(CString(dwError));
}
DCB dcb;
GetCommState(hCom, &dcb);
dcb.BaudRate = 115200; //波特率为9600
dcb.ByteSize = 7; //数据位数为7位
dcb.Parity = EVENPARITY; //偶校验
dcb.StopBits = 2; //两个停止位
dcb.fBinary = TRUE;
dcb.fParity = TRUE;
if (!SetCommState(hCom, &dcb))
{
MessageBox("串口设置出错!");
}
SetupComm(hCom, 1024,1024); //设置缓冲
PurgeComm(hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);

//设置超时
COMMTIMEOUTS to;
memset(&to, 0, sizeof(to));
to.ReadIntervalTimeout = 10;
SetCommTimeouts(hCom, &to);
char buf[1024];
unsigned long wCount=0;
int i = 0;
for(;;)
{
ReadFile(hCom, buf,sizeof(buf), &wCount, NULL);
printf("recv %s",buf);
sprintf(buf,"%s", "this is from pc");
WriteFile(hCom, buf, sizeof(buf), &wCount, NULL);//发送数据
Sleep(111);
}
return 0;
以上代码中,可以收到设备发来的数据,但执行到 WriteFile(hCom, buf, sizeof(buf), &wCount, NULL);就停了;如果把dcb.ByteSize = 7; 改成8,就可以运行下去,但此时设备并没有收到数据,PC机也收不到设备发来的数据了。
真是奇怪,有没有高手啊?

有答案请一并回复到http://www.cnitblog.com/liaoqingshan/archive/2006/08/21/15651.html
我可以更快得到答案,谢谢!