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

在传统的单片机应用中,两个单片机串口通信,都是自己定义一些帧,包括帧头,数据帧,校验帧,帧尾。图中是飞控MavLink的协议。
Mixly图形化编程的JSON数据收发_第1张图片
这种方式,稳定,高效。缺点也很明显:开发难度稍大,需要自己制定协议,编码解码需要手动编写。如果想快速尝试两个单片机通信的。我推荐使用串口传输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个模块已可满足了。
Mixly图形化编程的JSON数据收发_第2张图片

JSON数据的发送例程
例程如下图所示。
Mixly图形化编程的JSON数据收发_第3张图片

  1. 首先初始化串口;
    Mixly图形化编程的JSON数据收发_第4张图片
  2. 定义JSON发送缓冲区的大小;
    这里写图片描述
  3. 因为我们是要发送JSON,所以我们要创建JSON对象;
    这里写图片描述
  4. 定义我们要发送的一系列“键 / 值”对;
    Mixly图形化编程的JSON数据收发_第5张图片
  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数据接收解析程序如下图所示。
Mixly图形化编程的JSON数据收发_第6张图片

  1. 首先定义一组变量用于保存我们要接收的JSON数据,注意定义的变量数据类型与名称要与实际接收的数据一致;
    Mixly图形化编程的JSON数据收发_第7张图片
  2. 初始化串口;
    这里写图片描述
  3. 判断串口是否有可读的数据;
    这里写图片描述
  4. 增加一个等待时间,确保数据接收完整;
    这里写图片描述
  5. 读JSON数据;
    这里写图片描述
  6. 定义JSON缓冲区大小;
    这里写图片描述
  7. 解析JSON对象;
    这里写图片描述
  8. 分离析取各变量值,注意此处定义的变量类型要与第一步所定义的一致;
    Mixly图形化编程的JSON数据收发_第8张图片
  9. 将解析结果打印输出;
    Mixly图形化编程的JSON数据收发_第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图形化编程的JSON数据收发)