Mixly图形化编程的JSON数据收发

在传统的单片机应用中,两个单片机串口通信,都是自己定义一些帧,包括帧头,数据帧,校验帧,帧尾。图中是飞控MavLink的协议。
这里写图片描述
这种方式,稳定,高效。缺点也很明显:开发难度稍大,需要自己制定协议,编码解码需要手动编写。如果想快速尝试两个单片机通信的。我推荐使用串口传输JSON字符串!
优点:不需要了解底层的事情,比如:

  • 不考虑大端小端
  • 不考虑数据的byte转换
  • 支持任意长的int,float
  • 简单易懂,容易开发。

缺点:效率稍低。JSON的编码和解码会占用CPU的处理时间。
JSON(JavaScript Object Notation,JS 对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

JSON 语法规则
在JS语言中,一切都是对象。因此,任何支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:

  • 对象表示为键值对
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组
  • JSON 键/值对

JSON键值对是用来保存JS对象的一种方式,和JS对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 “” 包裹,使用冒号 : 分隔,然后紧接着值:
{“firstName”: “Json”}
这很容易理解,等价于这条JavaScript语句:
{firstName : “Json”}

Mixly的JSON相关模块
目前在Mixly0.998版本高级视图的文本类里增加了8个JSON的相关模块,在当前版本中没有JSON的数组处理模块,看看以后是否需要增加,一般情况下的使用,现有的8个模块已可满足了。
这里写图片描述

JSON数据的发送例程
例程如下图所示。
这里写图片描述
1. 首先初始化串口;
这里写图片描述
2. 定义JSON发送缓冲区的大小;
这里写图片描述
3. 因为我们是要发送JSON,所以我们要创建JSON对象;
这里写图片描述
4. 定义我们要发送的一系列“键 / 值”对;
这里写图片描述
5. 最后就是发送JSON数据了,打印有两种方式:
a) 打印成一行
这里写图片描述
如:{“a”:”dgd3”,”b”:2,”c”:”z3”,”d”:”n”,”e”:7.2136}
b) 美观打印
这里写图片描述
如:
{
“a”: “a111”,
“b”: 2,
“c”: “c333”,
“d”: “d444”,
“e”: 7.23
}
是不是发送JSON很简单!

JSON数据的接收解析例程
JSON数据接收解析程序如下图所示。
这里写图片描述
1. 首先定义一组变量用于保存我们要接收的JSON数据,注意定义的变量数据类型与名称要与实际接收的数据一致;
这里写图片描述
2. 初始化串口;
这里写图片描述
3. 判断串口是否有可读的数据;
这里写图片描述
4. 增加一个等待时间,确保数据接收完整;
这里写图片描述
5. 读JSON数据;
这里写图片描述
6. 定义JSON缓冲区大小;
这里写图片描述
7. 解析JSON对象;
这里写图片描述
8. 分离析取各变量值,注意此处定义的变量类型要与第一步所定义的一致;
这里写图片描述
9. 将解析结果打印输出;
这里写图片描述
10. 运行测试。
发送测试数据:{“a”:”dgd3”,”b”:2,”c”:”z3”,”d”:”n”,”e”:7.2136}
解析结果:
a = dgd3
b = 2
c = z3
d = n
e = 7.21

Mixly_JL图形化开发软件:
https://download.csdn.net/download/qq_27163873/10635766

猜你喜欢

转载自blog.csdn.net/qq_27163873/article/details/82223493