首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

vc++实现串口通信为何失败解决方法

2012-02-12 
vc++实现串口通信为何失败请教一个问题,我写了一个串口读写数据的程序,读出来的数据全是0,如果先借助像lab

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类型的结构参数
[解决办法]
你不用偶校验试试。可能上下不匹配。
[解决办法]

探讨
这个参数
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,
改成
0
如果你用了异步方式,必须设置一个OVERLAPPED类型的结构参数

[解决办法]
探讨

这个参数
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,
改成
0
如果你用了异步方式,必须设置一个OVERLAPPED类型的结构参数

热点排行