向串口连续写数据,部分数据丢失,如何处理?

veryshowboy 2010-03-04 01:06:02

用cserialport类的WriteToPort向串口连续写数据。

数据保存在一个CStringArray数组中,有5000多行数据。

用一个timer每1ms写一行数据。

问题是,有一小部分数据写不进去。

写不进去的数据返回“系统忙”状态。

请问怎么处理?各位高手请帮帮忙

我水平很低,如果能回答详细点就更好了,有代码就好上加好!

谢谢大家!
(波特率115200, 每行数据50字节,不知道跟这有关没?)
...全文
122 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-11-23
  • 打赏
  • 举报
回复
学习学习。。。
veryshowboy 2010-03-04
  • 打赏
  • 举报
回复
感谢cpp2017(慕白兄) 和zxdlms(活到老,学到老) , 我把间隔调到75ms,就没问题了. 70ms的时候还丢呢. 分已送. 也感谢其他的热心高手. 呵呵!
用户 昵称 2010-03-04
  • 打赏
  • 举报
回复
放弃那个类,也许问题就解决了。
zxdlms 2010-03-04
  • 打赏
  • 举报
回复
引用 4 楼 wizardk 的回复:
虽然不知道你怎么定时的,但是估计定时间隔只能比1MS大,所以每秒传输数据小于50000字节,远远小于波特率115200。

是不是缓冲区写满的原因?
不是这么算的吧。

115200的波特率每秒钟能传11.5k字节,1ms也就能传11个字节,达不到1ms 50字节,虽然定时器可能精确不到1ms。

同意楼上,加大间隔时间或是减少数据量。

cpp2017 2010-03-04
  • 打赏
  • 举报
回复
可以这样试下,
1.加大时间间隔,

2.减少每次发的数据量

看是不是还丢包。
WizardK 2010-03-04
  • 打赏
  • 举报
回复
虽然不知道你怎么定时的,但是估计定时间隔只能比1MS大,所以每秒传输数据小于50000字节,远远小于波特率115200。

是不是缓冲区写满的原因?
cpp2017 2010-03-04
  • 打赏
  • 举报
回复
你的bufferin设的多少?
veryshowboy 2010-03-04
  • 打赏
  • 举报
回复
数据超出范围?超出什么范围?
blpluto 2010-03-04
  • 打赏
  • 举报
回复
系统忙?数据超出范围了吗?

2,640

社区成员

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

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