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

wuzhijie 2009-08-20 11:54:01
写了个串口通讯,打开成功,设置波特率也成功,可是读数据时超时了。
但很奇怪,只要用超级终端连接退出后,我的程序就能正常读写数据部超时了。
...全文
342 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
看下你设置的读写超时时间

2,641

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧