嵌入式硬件篇---OpenMV串口通信json字符串

news/2025/2/8 15:59:06/

文章目录

  • 前言
  • 第一部分:Json字符串
    • 通信协议
      • 优点
      • 缺点
    • Json
      • 优点
      • 缺点
      • 编码与解码
  • 第二部分:UART串口通信
    • UART常用函数
    • 注意
  • 总结


前言

以上就是今天要讲的内容,本文简单介绍了Json字符串、UART串口通信。


第一部分:Json字符串

通信协议

传统的单片机应用中,两个单片机串口通信,都是自己定义一些帧,包括帧头,数据帧,校验帧,帧尾,也就是通信协议的制定,编码解码程序的编写。

优点

稳定、高效

缺点

开发难度高

Json

优点

  1. 抽象程度高
  2. 不考虑大端小端
  3. 不考虑数据的byte转换
  4. 支持任意长的int,float
  5. 简单易懂,容易开发。
  6. 大多数语言、单片机中都有json模块

缺点

效率较低,json字符串的编码解码需要占用CPU资源

编码与解码

python">json.dump(obj, stream, separators=None)

将 obj 序列化为 JSON 字符串,将其写入给定的 stream。

python">json.dumps(obj, separators=None)

返回表示为 JSON 字符串的 obj。

python">json.load(stream)

解析给定的 stream,将其解释为 JSON 字符串,并将数据反序列化为 Python 对象。返回结果对象。

python">json.loads(str)

解析 JSON str 并返回一个对象。如果字符串格式不正确,将引发 ValueError 异常。

UART_68">第二部分:UART串口通信

  1. UART:RX\TX(交叉连接)\GND(共地处理)
  2. UART 实现了标准的双工串行通信协议。通信的单位是一个字符(不要与字符串字符混淆),可以是 8 位或 9 位宽
  3. OpenMV4 H7 Plus的串口UART(3)是P4-TX P5-RX

注意:
4. 各种单片机(包括Arduino, OpenMV, esp8266, stm32, 51)使用的串口都是TTL串口!
5. TTL串口的电压是3.3V或者5V

UART_78">UART常用函数

python">UART.read([nbytes])

读取字符。如果指定了 nbytes,则最多读取那么多字节,否则尽可能多地读取数据。
返回值:包含读取的字节的 bytes 对象。超时时返回 None。

python">UART.readinto(buf[, nbytes])

将字节读入 buf。如果指定了 nbytes,则最多读取该数量的字节。否则,最多读取 len(buf) 字节。
返回值:读取并存储到 buf 中的字节数,或超时时返回 None。

python">UART.readline()

读取一行,以换行字符结束。
返回值:读取的行,或在超时时为 None。

python">UART.write(buf)

将字节缓冲区写入总线。
返回值:写入的字节数,或在超时时为 None。

注意

  1. write()方法可能将数据写入发送缓冲区,然后由硬件异步发送;
  2. read()方法则从接收缓冲区读取数据。

总结

以上就是今天要讲的内容,本文仅仅简单介绍了Json字符串、UART串口通信。


http://www.ppmy.cn/news/1570358.html

相关文章

Android ExpandableListView 详细用法全解析

引言 在 Android 开发中,列表展示是一种非常常见的交互形式。而 ExpandableListView 作为一种特殊的列表控件,它允许我们创建具有分组功能的列表,每个分组下还可以包含多个子项,并且分组可以展开和收缩,这大大增强了数…

【梦想终会实现】Linux驱动学习5

加油加油坚持住! 1、 Linux驱动模型:驱动模型即将各模型中共有的部分抽象成C结构体。Linux2.4版本前无驱动模型的概念,每个驱动写的代码因人而异,随后为规范书写方式,发明了驱动模型,即提取公共信息组成一…

在 Elastic 中实施聚类工作流以提升搜索相关性

作者:来自 Elastic Gus Carlock 及 Kirti Sodhi 我们演示了如何利用 OpenAI text-ada-002 向量将自定义聚类模型集成到 Elastic Stack 中,从而简化 Elastic 生态系统内的工作流程。 在本文中,我们将演示如何通过利用示例文本数据集将自定义聚…

【Linux开发工具】包管理器yum和文本编辑器vim

目录 一、前言 二、Linux中的软件商店yum 1.三种安装软件的方式 2.yum的使用方法 三、Linux中的编辑器vim 1.vim的三种模式及切换 2.命令模式详解 3.底行模式详解 4.替换模式 5.视图模式 6.vim下的多线程操作 7.vim的配置 四、总结 一、前言 在初步认识了Linux的基…

windows11上,使用pipx安装Poetry,Poetry的安装路径是什么?

当使用 pipx 安装 Poetry 时,pipx 会将 Poetry 安装到一个独立的虚拟环境中,并将其可执行文件链接到一个集中的目录中。以下是 pipx 安装 Poetry 时的路径信息: 1. Poetry 的安装路径 pipx 会为每个工具(如 Poetry)创…

k8sollama部署deepseek-R1模型,内网无坑

这是目录 linux下载ollama模型文件下载到本地,打包迁移到k8s等无网络环境使用下载打包ollama镜像非k8s环境使用k8s部署访问方式非ollama运行deepseek模型linux下载ollama 下载后可存放其他服务器 curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linu…

开源CodeGPT + DeepSeek-R1 是否可以替代商业付费代码辅助工具

开源CodeGPT + DeepSeek-R1 是否可以替代商业付费代码辅助工具 背景与研究目的 在快速发展的软件开发领域,代码辅助工具已成为提高开发效率和质量的关键。然而,商业付费工具如通义灵码和腾讯AI代码助手,尽管功能强大,但其高昂的成本和许可证限制,使得许多企业寻求更具吸…

K8S组件架构

master节点上 kube-apiserver:服务端,提供k8s api接口服务,接受外部请求管理和控制整个集群。 kube-secheduler:调度计算,负责根据资源需求和约束条件,将pod调度到合适的主机上。 kube-controller-manag…