vc++实现串口通信为何失败
请教一个问题,我写了一个串口读写数据的程序,读出来的数据全是0,如果先借助像labview/串口调试助手这样的工具和串口通信后,再运行自己写的程序才能正确读写数据,我觉得是串口配置出了一点问题,以下是打开串口配置串口的代码,请各位大侠帮忙检查哪里出了问题???谢谢
hCom=CreateFile("COM4",//COM口
GENERIC_READ|GENERIC_WRITE, //允许读和写
0, //独占方式
NULL,
OPEN_EXISTING, //打开而不是创建
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, //异步方式
NULL);
if(hCom==(HANDLE)-1)
{
AfxMessageBox("打开COM失败!");
return FALSE;
}
SetupComm(hCom,1024,1024); //输入缓冲区和输出缓冲区的大小
COMMTIMEOUTS TimeOuts;
//设定读超时
TimeOuts.ReadIntervalTimeout=MAXDWORD;
TimeOuts.ReadTotalTimeoutMultiplier=0;
TimeOuts.ReadTotalTimeoutConstant=0;
//在读一次输入缓冲区的内容后读操作就立即返回,
//而不管是否读入了要求的字符。
//设定写超时
TimeOuts.WriteTotalTimeoutMultiplier=100;
TimeOuts.WriteTotalTimeoutConstant=500;
SetCommTimeouts(hCom,&TimeOuts); //设置超时
DCB dcb;
GetCommState(hCom,&dcb);
dcb.BaudRate=9600; //波特率为9600
dcb.ByteSize=8; //每个字节有8位
dcb.Parity=2; //偶校验
dcb.StopBits=1; //1个停止位
SetCommState(hCom,&dcb);
PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR);
下面接着对串口发指令数据,和接收串口返回的数据
[解决办法]
这个参数
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,
改成
0
如果你用了异步方式,必须设置一个OVERLAPPED类型的结构参数
[解决办法]
你不用偶校验试试。可能上下不匹配。
[解决办法]