渊源

大一的时候,学校开了门公共选修课,叫LabVIEW编程,当时的我当然还不知道LabVIEW是啥东东,但还是选了。上课的老师是机械学院的一个副教授。他给我们展示了好几个用LabVIEW做的项目。譬如油箱监控上位机等,已经不太记得了。

后来随着学习单片机、ARM等的串口操作。有时候一个美丽的上位机(尤其是能显示波形的上位机)在项目中给用户展示非常的实用。过了这么多年,尽管以前也用LabVIEW写过简单的温度监控上位机。但这次再拿起LabVIEW又好像从头開始一样,语法几已忘记殆尽。

定义通信格式及功能

由于数据不算复杂,所以定义简单下位机帧格式:

帧头(0xAA) 类型字节 数据低8位 数据高8位 保留字节1 保留字节2 校验字节

假设要传送的数据比較多/复杂。则能够參考ModuleBus协议!

主要功能包含:

  • 对帧中的类型字节进行解析,并多通道显示在示波器上
  • 帧偏差校正(这个一般人可能都没有做,造成数据丢失,而我这仅仅要串口传输的数据没错。就能无错漏的解析每一帧)
  • 实时显示读取的每一个字节/双字节/4字节
  • 信号保存,保存文件名称自己主动按时间命名,适合查阅
  • 信号回放
  • 对信号进行解析。用指示灯显示

界面展示

程序关键点展示

上面尽管简单,但却是功能的最主要部分。包含帧头查找和错帧处理的程序。错帧发送的情况是:比方从串口中独到的帧并非从帧头開始而是帧中间開始。如

0x12(数据) 0x00 0x00 0x00 0xAA(帧头) 0x00

其前面一帧可能是这样:

... 0xAA(帧头) 0x01(类型) 0x01(数据)

这样。按查找帧头的方法,数据0x12就会丢失,实际数据按理应该是0x02*256+0x01。错帧处理就是将上一帧尾部不足一帧的部分加到下一帧中,这样下一帧就变成了:

0xAA(帧头) 0x01(类型) 0x01(数据) 0x12(数据) 0x00 0x00 0x00 0xAA(帧头) 0x00

推断类型过程非常easy,使用switch结构即可了(LabVIEW中就是条件结构同一时候实现了if和switch),编程时就是注意必须设置默认分支即可!

文件保存我使用了数据表,由于它确实简单,这里的亮点是添加了按时间保存的功能,相当于将时间字符串添加到文件名称中。这样便于后期对採集的数据进行查找,不至于混乱。

波形回放就是将存储在数据表中的程序又一次显示一遍。比較简单!

到如今为止,完整的程序请到https://github.com/xiahouzuoxin/zxSerial下载!

仅供研究使用,谢谢!

最新文章

  1. 执行插入语句,object val = cmd.ExecuteScalar() val = null
  2. 前端这条路怎么走,作为一名后端er,说说我的见解
  3. TOGAF:企业信息化复杂吗?
  4. Java基础-静态代理与动态代理比较
  5. 【poj1050】 To the Max
  6. Azure SQL 数据库弹性池现已面市
  7. UCOS-2 消息邮箱与队列
  8. Android:控件WebView显示网页 -摘自网络
  9. Codeforces Round #226 (Div. 2 )
  10. laravel 模板 blade
  11. HDOJ(HDU) 1465 不容易系列之一(错排)
  12. SVN强制填写日志
  13. 使用astyle格式化代码【脚本】
  14. 流动python - 什么是魔术方法(magic method)
  15. angularJS 判断
  16. 漂亮的HTML表格 - ebirdfighter的日志 - 网易博客
  17. Settings.settings
  18. ARM核心板_迅为imx6工控核心板_核心板中的小新潮
  19. php文件及文件夹操作(创建、删除、移动、复制)
  20. 实现一个jsp同时提交两个form到两个Servlet

热门文章

  1. Java 中 byte、byte 数组和 int、long 之间的转换
  2. 学一点 MYSQL 双机异地热备份—-MYSQL主从,主主备份原理及实践
  3. 【python】python读写文件,都不乱码
  4. Winfrom固定Label宽度,根据文本动态改变Label的高度 z
  5. codeforces Round #259(div2) C解题报告
  6. 关于面试总结8-http协议相关面试题
  7. Hadoop-2.2.0中文文档—— Common - Native Libraries Guide
  8. mysql 比较函数和操作符
  9. [Android Pro] 深入理解函数的调用过程——栈帧
  10. [NISPA类会议] 怎样才能在NIPS 上面发论文?