| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2296 人关注过本帖
标题:关于串口接收多包数据的问题
只看楼主 加入收藏
希颜
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-8-1
结帖率:75%
收藏
 问题点数:0 回复次数:3 
关于串口接收多包数据的问题
最近在做一个无线单片机的配置界面:
主机通过串口与一个无线单片机连接,并通过串口向这个无线单片机发送命令,无线单片机收到串口命令的时候无线发射出去,当串口发送“搜索命令”(即搜索其射频范围内所有的无线单片机)时,周围所有打开着的单片机都会给这个链接电脑主机的单片机发送一条语句,这样,主机的串口就会几乎同时受到很多包数据,现在的问题是,怎样处理这些数据,我用的是serialport的datareceived事件,如果一包一包接收(每包大致40多个字节),怎样才能在处理这包的时候又保存下一包的呢?如果是一起接受,怎么CPU占用很大呢?
搜索更多相关主题的帖子: 数据 串口 
2009-11-06 16:08
希颜
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-8-1
收藏
得分:0 
是,主要就是看怎么处理。

我现在是这样的,设一个计时器,每当串口来数据就把它加入到一个字符串中,然后打开计时器计时,当超过计时器的时间(1s)还没有数据到达,就去执行计时器的onTime事件,关闭计时器,处理完了再打开计时器。

但这样做还是有问题,给主机发送数据的那些无线单片机发的时间都不相差比较远才能保证让主机收到所有数据,而且经常都不能收到所有数据,可是用一般的串口调试工具就没有这样的情况发生。

请问是不是我的串口设置有问题,还是这种处理方法本身就不可行呢?
2009-11-18 13:46
ghl2312
Rank: 4
等 级:业余侠客
威 望:2
帖 子:208
专家分:226
注 册:2008-7-10
收藏
得分:0 
从你的描述看,PC发送一个指令会有多个单片机同时响应,并且会同时反馈数据回来。按照正常思路可以接受的所有的数据,现在会丢失部分数据,你可以试试延时ReadExisting()。
个人建议你用多线程来处理收发,这样比较利于自己控制。
如果还有疑问,可以继续跟帖。


[ 本帖最后由 ghl2312 于 2009-11-18 15:02 编辑 ]

向灰太狼学习
2009-11-18 15:01
快速回复:关于串口接收多包数据的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022241 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved