• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 处理串口接收到的数据问题巨难50分相送

处理串口接收到的数据问题巨难50分相送

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了c#串口接收数据,stm32串口接收数据,c#串口实时接收数据,串口接收数据,单片机接收串口数据等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 处理串口接收到的数据问题巨难50分相送
描述:

我用MSCOMM写了一个读单片机串口的小程序并要对其得到的实时数据进行处理,但得到的实时数据的长度不一样,有时是25位,有时是32位,但每次得到的数据只有前20位是有用的,我
如果把它出始为m_ctrlMSComm.SetRThreshold(25),程序一遇到32位长度的数据就出问题,因为它会把缓冲区中剩下的7位转到下一条数据,这样一来,我如果再取数据的前20位,它就包括了刚才的那7位没有效的数据,不知各位高人有何高见?请指教 !  


解决方案1:

我也遇到过这个问题 仪表不断发送数据过来(重量)每次38个 两次间隔时间 0.7ms
打开串口时数据可能已经正在发送 所以收到的不一定是从开始字符开始的。即使
先打开串口 后仪表再打开 也有可能受到干扰导致数据丢失 。如果数据可以舍弃的话
可以设置 76个字符触发一次中断 在这76个字符中肯定有一个完整的一楨数据。缺点是
实时性不好

解决方案2:

设置一个缓冲区吧。
一个线程就只管读,读多少不要紧,只要把读到的数据放缓冲区就可以,另外再起一个线程检查缓冲区中的数据是否有完整的一个数据帧,有的话就处理掉它,并且空出空间。
如果你的数据没有任何格式,那就是协议设计的问题了,跟头商量一下,看看是否可以改改。

解决方案3:

采用每个字节都接受的办法,程序中判断结束,如果一次数据处理完毕,就再接收一次COM BUFFER,来清空缓冲区,为下一次处理做准备。

解决方案4:

首先你的意思是不是说要接收25个字节或32个字节,而不是你说的25位,处理只处理前20个字节。
对于你这个问题,有很多细节未解释清楚,分两种情况:
一是计算机主动去读数据:你读单片机的数据,肯定会发送一个命令请求数据,然后单片机返回数据(主从式),对于这种情况你每次发送读取命令前,首先将接收缓冲区清空,每次读数据只读20个字节,余下的5个或12个字节等到下次发送读取命令前将他从接收缓冲区清除。
二是计算机是被动接收,而单片机以固定的间隔主动发送数据,这种情况下根据间隔时间采取相应办法处理,你可采用串口超时(应该小于发送间隔)控制,而将最大接收数据设置为32字节,这样每次读出来要么是32字节,要么是25字节(此时要超时),不是这两种情况就表示通讯出错了,这样一般就可以解决了,但这样不是很可靠,实际上最好在数据包中加上同步识别字节。

解决方案5:

一次全部从缓冲区读出来,只处理前20个就是了。只要确保每次有新数据来之前缓冲区是空的就行了。

解决方案6:

设置COM事件,没来一次数据,读一次,数据缓冲区开为40,每读一次,处理前面的20字节。就好了

解决方案7:

SetRThreshold(1);//设置为1,已有接受的数据就可以触发事件,不要认为这里设置为1,到时候接收的时候就一定为1个.


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何使用串口接受帧格式的数据?
  • 串口接收数据。大家快来帮忙!!!谢谢1!!急,在线等!!!!
  • 串口接收数据问题急等请前辈们帮看看有代码
  • 串口不处理数据
  • 求助有关串口接收数据问题
  • 关于串口读写数据,请高手帮忙!!!
  • 关于串口接收数据中取值的问题
  • 串口数据处理求助
  • 串口接收数据不对
  • 串口操作放在access里的数据怎样copy到excel里打印出来!!高手请进!!

相关文章

  • 2017-06-04 如何实现Flash窗口透明播放,类似MSN的传情动漫!
  • 2017-06-05 如何控制IE的选项卡?
  • 2017-06-05 嵌入RichEdit的ActiveX控件的OnDraw不被调用
  • 2017-06-05 vs2005调用matlab生成的com组件
  • 2017-06-04 在vc中连接网页上的广告
  • 2017-06-04 急急急,aboutWebBrowsercontrol
  • 2017-06-04 开帖继续讨论:Javascript调用activex接口问题接口中有多个返回参数
  • 2017-06-05 发一个学习的资源,以供像我一样起步com的同学学习
  • 2017-06-05 jiangsheng、BCB_FANS四大名捕之追杀令请进!
  • 2017-06-05 资源管理器扩展

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 对指定扩展名的文件,怎么使用指定的组件打开??
    • ADOConnection对象在工作线程中的问题,在App中运行正常,在线程中
    • 关于com与java的问题?
    • 如何从文件中提取文件描述信息如作者,标题,文件描述等
    • 看下这个问题吧/我的AfxBeginThread有什么不妥?
    • 请教各位兄才,一个ActivexDLl的使用问题解决即结贴
    • 如何hook另一进程(或几个)的recv函数
    • 问一个简单的dll编程问题
    • 哪位大大用过IMAPI,请问怎么在用IDiscMaster刻录光盘的时候更改光盘的Label?
    • 请教如何使用纯SDK写DLL,不使用MFC

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有