串口通讯:打开成功,读取超时

wuzhijie 2009-08-20 11:54:01
写了个串口通讯,打开成功,设置波特率也成功,可是读数据时超时了。
但很奇怪,只要用超级终端连接退出后,我的程序就能正常读写数据部超时了。
...全文
141 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hysysh 2010-04-26
我也在做串口通信,超时也不会做了
回复
jsphuang 2009-08-20
推测,你的程序可能对串口的某个属性还没有设置,导致读超时。
而你用super terminal打开了,刚好设置了。
回复
zottff 2009-08-20
你是使用fdb吗?是不是没有设置流控制设置()
回复
wuzhijie 2009-08-20
结贴是给错分了,应该是给5楼40分的,给到6楼了。不好意思!!!
回复
wuzhijie 2009-08-20
晕啊,不知什么时候屏蔽掉超时参数了,谢谢!
回复
zottff 2009-08-20
// 硬件流控制设置
dcb.fOutxCtsFlow = FALSE;
dcb.fRtsControl = FALSE;

// XON/XOFF流控制设置
dcb.fInX=dcb.fOutX = TRUE;
dcb.XonChar = XON;
dcb.XoffChar = XOFF;
dcb.XonLim = 50;
dcb.XoffLim = 50;
回复
churenxh 2009-08-20
//设置超时参数
GetCommTimeouts(m_hComm, &CommTimeOuts);
CommTimeOuts.ReadIntervalTimeout = 10; /* 接收字符间最大时间间隔 */
CommTimeOuts.ReadTotalTimeoutMultiplier = 1;
CommTimeOuts.ReadTotalTimeoutConstant = 10; /* 读数据总超时常量 */
CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutConstant = 0;
回复
wuzhijie 2009-08-20
我也认为是参数设置的问题,可是不知道要设置那个参数。
我只设置了下面几个参数:
dcb.fBinary=TRUE;
dcb.BaudRate = 115200; // set the baud rate
dcb.ByteSize = 8; // data size, xmit, and rcv
dcb.Parity = 0;//EVENPARITY;// Even parity bit
dcb.StopBits = ONESTOPBIT; // one stop bit
dcb.fAbortOnError=FALSE;

请问还要设置那个参数啊?
回复
feilinhe 2009-08-20
看下你设置的读写超时时间
回复
发动态
发帖子
硬件/系统
创建于2007-09-28

2590

社区成员

VC/MFC 硬件/系统
申请成为版主
社区公告
暂无公告