USART串口数据包

HEX数据包

首先数据包的作用,把一个个单独的数据给封装起来,方便进行对字节的数据通信。

在HEX数据包里面,数据都是以原始的字节数据本身呈现。

两种数据包格式:

  • 固定包长,含包头包尾:每个数据包的长度都固定不变,数据包前面是包头,后面是包尾。
  • 可变包长,含包头包尾:每个数据包的长度可以不一样,可以根据需求,进行规定。

文本数据包

以@字符作为包头,\r\n作为包尾,在载荷数据中间可以出现除了包头包尾的任意字符,所以很灵活,当接收到数据之后,得到的就是一个字符串,在软件中再对字符串进行操作和判断,就可以实现各种指令控制的功能了。

两种数据包格式的对比

HEX数据包

  • 优点:传输直接,解析数据非常简单,适用于模块发送原始数据。
  • 确定:灵活性不足,载荷容易和包头包尾重复。

文本数据包

  • 优点:数据非常直观容易理解,灵活性很高,适用于输入指令的人机交互的场合。
  • 缺点:解析效率较低。

HEX数据包接收

格式为固定包长

  1. 每收到一个字节,程序都会进一遍中断,在中断函数里可以拿到这个字节,随即要退出中断,所以每次拿数据都是独立的过程,而数据包具有前后关联性。
  2. 对此需要设计能记住不同状态的机制,在不同状态执行不同的操作,同时还要进行状态的合理转移
  3. 因此如图所示,定义三个状态,第一个是等待包头、第二个是接收数据、第三个是等待包尾,每个状态分别用一个变量进行标志。

文本数据包接收

格式为可变包长

同理也是定义三个状态:

  1. 第一个等待包头,判断收到的是否为规定的字符,如果收到,将进入下一状态。
  2. 第二状态依次接收数据,判断是否为\r,如果不是,正常接收;如果是,则不接收,同时跳到下一状态等待包尾\n 同时,此状态还应该要兼具等待包尾的功能(因为格式为可变包长,接收数据时,需要时刻监视,是否收到包尾
  3. 如果包尾只有一个字符,出现包尾后可直接回到初始状态。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

¥sunrise

来自大牛的认可,是我梦寐以求的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值