我写了串口通讯测试程序,可以接收到设备发来的数据,但发不出去。
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机也收不到设备发来的数据了。
真是奇怪,有没有高手啊?
posted on 2006-08-21 15:11
游子 阅读(334)
评论(2) 编辑 收藏 引用 所属分类:
软件