嵌入式硬件篇---OpenMV串口通信json字符串
文章目录
- 前言
- 第一部分:Json字符串
- 通信协议
- 优点
- 缺点
- Json
- 优点
- 缺点
- 编码与解码
- 第二部分:UART串口通信
- UART常用函数
- 注意
- 总结
前言
以上就是今天要讲的内容,本文简单介绍了Json字符串、UART串口通信。
第一部分:Json字符串
通信协议
在传统的单片机应用中,两个单片机串口通信,都是自己定义一些帧,包括帧头,数据帧,校验帧,帧尾,也就是通信协议的制定,编码解码程序的编写。
优点
稳定、高效
缺点
开发难度高
Json
优点
- 抽象程度高
- 不考虑大端小端
- 不考虑数据的byte转换
- 支持任意长的int,float
- 简单易懂,容易开发。
- 大多数语言、单片机中都有json模块
缺点
效率较低,json字符串的编码解码需要占用CPU资源
编码与解码
json.dump(obj, stream, separators=None)
将 obj 序列化为 JSON 字符串,将其写入给定的 stream。
json.dumps(obj, separators=None)
返回表示为 JSON 字符串的 obj。
json.load(stream)
解析给定的 stream,将其解释为 JSON 字符串,并将数据反序列化为 Python 对象。返回结果对象。
json.loads(str)
解析 JSON str 并返回一个对象。如果字符串格式不正确,将引发 ValueError 异常。
第二部分:UART串口通信
- UART:RX\TX(交叉连接)\GND(共地处理)
- UART 实现了标准的双工串行通信协议。通信的单位是一个字符(不要与字符串字符混淆),可以是 8 位或 9 位宽
- OpenMV4 H7 Plus的串口UART(3)是P4-TX P5-RX
注意:
4. 各种单片机(包括Arduino, OpenMV, esp8266, stm32, 51)使用的串口都是TTL串口!
5. TTL串口的电压是3.3V或者5V
UART常用函数
UART.read([nbytes])
读取字符。如果指定了 nbytes,则最多读取那么多字节,否则尽可能多地读取数据。
返回值:包含读取的字节的 bytes 对象。超时时返回 None。
UART.readinto(buf[, nbytes])
将字节读入 buf。如果指定了 nbytes,则最多读取该数量的字节。否则,最多读取 len(buf) 字节。
返回值:读取并存储到 buf 中的字节数,或超时时返回 None。
UART.readline()
读取一行,以换行字符结束。
返回值:读取的行,或在超时时为 None。
UART.write(buf)
将字节缓冲区写入总线。
返回值:写入的字节数,或在超时时为 None。
注意
- write()方法可能将数据写入发送缓冲区,然后由硬件异步发送;
- read()方法则从接收缓冲区读取数据。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了Json字符串、UART串口通信。