多线程串行通信问题,急急!

chinaren_shibo 2002-10-08 09:43:55
最近,项目要编一个四串口 的高速数据采集程序,速度是115200bps(四个都是这个速度),但是发现有数据丢失现象,能提供一些解决方案吗?提供一些经验!
...全文
23 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
linuswu 2002-11-09
  • 打赏
  • 举报
回复
我用的也是异步操作:
发现 ClearCommError( hCom, &dwError, &comstat);
当一次事件激发时,WaitCommEvent( hCom, &dwMask, NULL );
comstat.cbInQue每次返回8,当然是数据量很大时。
不知你们是不是也是这样的情况?
horris 2002-11-06
  • 打赏
  • 举报
回复
而且我的组件的CPU占用率还不高
chinaren_shibo 2002-11-05
  • 打赏
  • 举报
回复
我就是用的这个类,还是谢谢你
flyjalor 2002-11-04
  • 打赏
  • 举报
回复
你用底层的winapi函数从头编写!
封装好CComm类(里面有读写线程)
然后针对每一个传口进行设置!CComm pComm[N];
对应每一个串口要有自己的数据处理线程!
记着把缓冲区开大一些(因为你的速率要求很高)或者用标准模版:CList array<var,var>最好了!
这样就不会丢失数据了!但是有时候传输速率太高,硬件会有丢失数据,但是很少发生这种情况,所以你最后有重发数据的机制!
studentforever 2002-11-04
  • 打赏
  • 举报
回复
给你一个封装了API的类,或许对你有帮助:
A Communication Class for Serial Port
http://codeguru.earthweb.com/network/serialport.shtml
atishoo 2002-11-04
  • 打赏
  • 举报
回复
想了解数据采集程序,从字面上看,是采集数据地。可是是通过什么得到数据地哪?能否大概介绍一下。
ylb_and_xy 2002-10-28
  • 打赏
  • 举报
回复
怎么会有问题呢?我也是115200。并且有60个串口。没有问题啊,你的程序有问题吧。
horris 2002-10-28
  • 打赏
  • 举报
回复
我的文章和组件
http://www.csdn.net/develop/read_article.asp?id=11215
可能对你有用。但是组件不那么傻瓜,用起来可能比较麻烦。
另外我现在还有新的组件版本,支持抛出COM异常的(_com_error::Description)的,需要的话和我联系:horris@163.net
zhang865 2002-10-26
  • 打赏
  • 举报
回复
你是地层编程方式么?
如果是的话,就不应该,有什么问题联系我zhang865@sohu.com
coyer 2002-10-18
  • 打赏
  • 举报
回复
115200?好高的速度,没有做过这么高的。
dongweimiao 2002-10-12
  • 打赏
  • 举报
回复
每个串口用一个线程,当川口线太长,速度会达不到115200,此时用RS485
siphonelee 2002-10-11
  • 打赏
  • 举报
回复
以这个速度来看
不应该是系统处理跟不上
而是程序问题
用多线程吧
不要在一个子程序里面处理所有的输入数据
chinaren_shibo 2002-10-09
  • 打赏
  • 举报
回复
你是怎么做的呢,是高速通信吗
qsfsea 2002-10-09
  • 打赏
  • 举报
回复
用多线程,和单个串口有本质区别吗?
sans 2002-10-08
  • 打赏
  • 举报
回复
我曾经用MOXA卡C104搞过,也是4个口,开了4个线程,使用串口事件,相当稳定,没有发现丢失数据。

15,471

社区成员

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

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