本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wuyazhe/archive/2010/06/09/5657188.aspx

上一篇已经介绍了协议的组成,一个协议,一般具有 :协议头+长度+数据+校验 , 文本格式可以直观的定义回车换行是协议的结尾,所以我们可以省略数据长度,增加协议尾。即: 协议头 + 数据 + 校验 + 数据尾 。

文本方式的数据比较容易分析。如果数据缓存,可以考虑用StringBuilder。或是不缓存也可以。文本格式数据大多有换行结尾。稍微修改即可。例如分析常见的NMEA 0183格式的卫星坐标数据GGA。

$GPGGA,121252.000,3937.3032,N,11611.6046,E,1,05,2.0,45.9,M,-5.7,M,,0000*77

$              开始

GPGGA     命令字

*              结尾

77            校验

对上一篇代码稍作修改就可以了。例子不贴了。文本格式比较简单,只是为了内容完整。贴来做参考。只有分析的地方简化很多。

[c-sharp] view plaincopy
  1. void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
  2. {
  3. if (Closing) return;//如果正在关闭,忽略操作,直接返回,尽快的完成串口监听线程的一次循环
  4. try
  5. {
  6. Listening = true;//设置标记,说明我已经开始处理数据,一会儿要使用系统UI的。
  7. //文本格式比较简单,你可以死等。
  8. string line = comm.ReadLine();//这就得到回车换行结尾的了。但是不是从头开始的就要检查了
  9. /
  10. //<协议解析>
  11. //因为恢复的代码在finally中。你可以直接的return
  12. if(line[0] != '$') return;//虽然可能有点垃圾,但是数据不重要。直接丢弃就可以了。后续的都是对的
  13. int star = line.IndexOf("*",1);
  14. if(star == -1) return;
  15. //根据$后面数据计算异或校验,并和*后面的数字对比。如果不同,也不进行分析。因为校验错误
  16. //当确定头尾存在,校验正确。就可以分析数据了。
  17. //分析数据
  18. //略
  19. //因为要访问ui资源,所以需要使用invoke方式同步ui。
  20. this.Invoke((EventHandler)(delegate
  21. {
  22. //判断是否是显示为16禁止
  23. if (checkBoxHexView.Checked)
  24. {
  25. //依次的拼接出16进制字符串
  26. foreach (byte b in buf)
  27. {
  28. builder.Append(b.ToString("X2") + " ");
  29. }
  30. }
  31. else
  32. {
  33. //直接按ASCII规则转换成字符串
  34. builder.Append(Encoding.ASCII.GetString(buf));
  35. }
  36. //追加的形式添加到文本框末端,并滚动到最后。
  37. this.txGet.AppendText(builder.ToString());
  38. //修改接收计数
  39. labelGetCount.Text = "Get:" + received_count.ToString();
  40. }));
  41. }
  42. finally
  43. {
  44. Listening = false;//我用完了,ui可以关闭串口了。
  45. }
  46. }

C# 串口操作系列(4) -- 协议篇,文本协议数据解析相关推荐

  1. C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。

    我假设读者已经了解了c#的语法,本文是针对刚打算解除串口编程的朋友阅读的,作为串口编程的入门范例,也是我这个系列的基础. 我们的开发环境假定为vs2005(虽然我在用vs2010,但避免有些网友用20 ...

  2. C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wuyazhe/archive/2010/05/17/5598945.aspx 我假设读者已经了解了c#的语法,本文是针 ...

  3. C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。 ——兔子党逍遥原创,转来分享学习

    我假设读者已经了解了c#的语法,本文是针对刚打算解除串口编程的朋友阅读的,作为串口编程的入门范例,也是我这个系列的基础. 我们的开发环境假定为vs2005(虽然我在用vs2010,但避免有些网友用20 ...

  4. C# 串口操作系列(2) -- 入门篇,为什么我的串口程序在关闭串口时候会死锁 ?

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wuyazhe/archive/2010/05/19/5606276.aspx 第一篇文章我相信很多人不看都能做的出来, ...

  5. (一)JAVA基于OPENXML的word文档插入、合并、替换操作系列之基础篇

    (一)JAVA基于OPENXML的word文档插入.合并.替换操作系列之基础篇 前言 什么是Open Xml? Open XML SDK 这系列笔记要做点什么? 涉及技术点 关于word.openxm ...

  6. C# 串口操作系列(4) -- 协议篇,文本协议数据解析 .

    上一篇已经介绍了协议的组成,一个协议,一般具有 :协议头+长度+数据+校验 , 文本格式可以直观的定义回车换行是协议的结尾,所以我们可以省略数据长度,增加协议尾.即: 协议头 + 数据 + 校验 + ...

  7. C# 串口操作系列(3) -- 协议篇,二进制协议数据解析

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wuyazhe/archive/2010/05/27/5627253.aspx 我们的串口程序,除了通用的,进行串口监听 ...

  8. C# 串口操作系列(5)--通讯库雏形

    串口是很简单的,编写基于串口的程序也很容易.新手们除了要面对一堆的生僻概念,以及跨线程访问的细节,还有一个需要跨越的难题,就是协议解析,上一篇已经说明了: 一个二进制格式的协议一般包含: 协议头 + ...

  9. 【Unity3D 教程系列第 15 篇】本地数据持久化之 Playerprefs 类

    这是[Unity3D 教程系列第 15 篇],如果觉得有用的话,欢迎关注专栏. 文章目录 一:什么是 PlayerPrefs 类 二:PlayerPrefs 类中的静态方法 1:写入数据 2:读取数据 ...

最新文章

  1. Scalaz(7)- typeclass:Applicative-idomatic function application
  2. Windows下更改pip镜像源
  3. nginx重新编译添加ssl模块
  4. linux配ipv6 ipv4 双栈,RouterOS配置原生IPv6(电信IPv4/IPv6双栈)
  5. php大作业含代码_目标检测 | 目标检测技巧大汇总(含代码与解读)
  6. day01-pycharm快捷键
  7. 图解WebGLThree.js工作原理
  8. 在没有创建Provision Profile权限的情况下 发布Enterprise inhouse app 的方法
  9. 前端常用插件、工具类库汇总,不要重复造轮子啦!!!
  10. SVN下载以及汉化安装包的使用
  11. 认知电子战 (1.2):认知理论及其在无线电领域的应用
  12. 计算机主机故障有哪些,电脑硬件常见故障有哪些
  13. 大数据杀熟!我被美团会员割了韭菜
  14. 57之最,来找找你的之最吧
  15. C++ Primer Plus P60 程序清单4.1(马铃薯的分析程序 ,理解数组的一些属性)——中职
  16. 女生应该找一个会打DOTA的男生做老公
  17. 微软的语音交互“滑铁卢”:Cortana小娜悲惨收场,未来路在何方?
  18. WHERE条件子句 | 零基础自学SQL课程系列Day5
  19. python去除字符串中空格和特殊符号的方法
  20. java.net.MalformedURLException: no protocol 可能的解决方法

热门文章

  1. 会声会影x5 屏幕捕获功能 未检测到系统音频 请确保您的计算机已启动此功能...
  2. 电商数据源分析-尚硅谷大数据培训
  3. 赢在中国对80后30个忠告
  4. 基于大数据应用探索“互联网+卷烟市场监管”新模式
  5. matlab 纯迟延_基于Matlab参数辨识的纯迟延系统预估控制在火电厂的应用
  6. 【javaWeb】Struts 2导出excel文件
  7. android 商米扫码sdk,应用市场外部调用SDK接口
  8. 《高效15法则》读书笔记
  9. 服务器硬件RAID性能横评(1)
  10. macbook没有权限打开文件_手把手教你删除没有权限的文件