【K210模块】使用UART模块发送和接收数据

news2024/11/27 0:49:28

官方案例链接

【K210模块】使用UART模块发送和接收数据

    • 官方案例链接
  • 一、代码部分
    • 1、添加转换句
      • (1)字节data 转字符串
        • ① 添加了转换语句
        • ② 没有添加转换语句
      • (2)字符串str 转 字节data
    • 2、三种方式的比较,K210发送到STM32串口
      • (1)转换后的可以通过串口发出来
      • (2)发送字符串也可以通过串口发出来
      • (3)直接给的字节数据发不出来
    • 3、STM32 串口发送到K210
      • (1)加了字节数据转字符串 转换句
      • (2)没加 字节数据转字符串 转换句

一、代码部分

from fpioa_manager import fm
from machine import UART
import time

# binding UART2 IO:6->RX, 8->TX
fm.register(6, fm.fpioa.UART2_RX)
fm.register(8, fm.fpioa.UART2_TX)

yb_uart = UART(UART.UART2, 115200, 8, 0, 0, timeout=1000, read_buf_len=4096)

write_bytes = b'$hello yahboom#\n' #模拟串口发送
last_time = time.ticks_ms()

try:
    while True:
        # send data per 500ms
        if time.ticks_ms() - last_time > 500:
            last_time = time.ticks_ms()
            yb_uart.write(write_bytes)
        # read and print data
        if yb_uart.any():
            read_data = yb_uart.read()
            if read_data:
【添加这句话】   read_data_str = read_data.decode('utf-8')
                print("read_data = ", read_data_str)
except:
    pass

yb_uart.deinit()
del yb_uart

1、添加转换句

(1)字节data 转字符串

  • read_data.decode(‘utf-8’) 用于将字节数据解码为字符串。
    在Python中,网络通信和文件读取等操作通常返回的是字节数据(bytes),而不是字符串。
  • 通过使用 decode() 方法,并指定相应的编码方式(例如 ‘utf-8’),可以将字节数据转换为字符串。UTF-8 是一种广泛使用的字符编码方式,它可以表示世界上几乎所有的字符。
read_data_str = read_data.decode('utf-8')

使用串口助手发送了字节数据 123。
当添加了 data.decode() 这一语句时,接收到的数据是字符串 ‘123’。
而在未添加这一语句时,接收到的数据是字节数据 b’123\r\n’。

这是因为串口助手发送的数据默认以字节形式进行传输,而不是字符串。在接收端,如果你调用了 data.decode(),则可以将接收到的字节数据解码为字符串。

① 添加了转换语句

在这里插入图片描述

② 没有添加转换语句

在这里插入图片描述

(2)字符串str 转 字节data

 str2bytes = write_str.encode('utf-8')#字符串转 字节数据
  • 代码 write_data_str = write_bytes.encode(‘utf-8’) 是将字符串 write_bytes 编码为字节数据。在 Python 中,可以通过使用 encode() 方法将字符串转换为指定编码方式的字节数据

串口通信是通过串行传输数据的方式,其中每个字节由一定数量的位组成。一个字节一个字节的发。
按正常逻辑来说,K210要先把字符串转成字节数据,才可以通过串口发给stm32,但是字符串在 Python 中是以 Unicode 编码的形式存储的,而不仅仅是字节序列。
在通过串口发送数据时,如果你传递的是一个字符串对象,串口库会自动将其编码为字节序列并发送出去,所以转不转的无所谓。
常见的串口数据传输格式有 8 位数据位(8-bit data),其中包含了一个字节的数据。【低位在前,高位在后】

在这里插入图片描述

2、三种方式的比较,K210发送到STM32串口

(1)转换后的可以通过串口发出来

在这里插入图片描述

(2)发送字符串也可以通过串口发出来

在这里插入图片描述

(3)直接给的字节数据发不出来

在这里插入图片描述

3、STM32 串口发送到K210

这里发现一个问题,如果32一直通过串口发消息,然后此时串口是与k210相连的,就是说线里有数据一直在发。然后这时候我们烧录CanMV的代码,就会导致K210宕机。。。。。。【得先烧录完,让它跑起来了再把串口接入才能收到数据】

我试试看怎么解决。有人解决了的吗?还是有什么方法 / 想法?都可以提一提!!

(1)加了字节数据转字符串 转换句

在这里插入图片描述

(2)没加 字节数据转字符串 转换句

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/759989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图解Vit 2:Vision Transformer——视觉问题中的注意力机制

文章目录 Patch Embedding 回顾Seq2Seq中的attentionTransformer中的attention Patch Embedding 回顾 上节回顾 Seq2Seq中的attention 在Transformer之前的RNN,其实已经用到了注意力机制。Seq2Seq。 对于Original RNN,每个RNN的输入,都是对…

vue3项目创建(vite3+ts+elementui-plus)

文章目录 1.创建工程 1.创建工程 目的:vue3vitets 安装依赖,安装vite的工具 Vite下一代的前端工具链为开发提供极速响应v4.3 npm install -g create-vite创建工程 create-vite font-userui --template vue-ts –template vue-ts 后面的是配置模板&#…

CS 144 Lab Zero

CS 144 Lab Zero 环境搭建使用socket写一个网络程序In-memory reliable byte stream 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab 0 对应的PDF: Lab Checkpoint 0: networking warmup Lab 0 会省去Telnet部分内容。 环境搭建 Run Ubuntu version 22.10, then ins…

基于linux下的高并发服务器开发(第二章)- 2.3 进程创建

/*#include <sys/types.h>#include <unistd.h>pid_t fork(void)函数的作用&#xff1a;用于创建子进程返回值&#xff1a;fork()的返回值会返回两次。一次是在父进程中&#xff0c;一次是在子进程中在父进程中返回创建的子进程的ID&#xff0c;在子进程中返回0如何…

《微服务架构设计模式》第十三章 微服务架构的重构策略

微服务架构的重构策略 一、重构到微服务需要考虑的问题1、为什么重构2、重构形式3、重构策略 二、设计服务与单体的协作方式三、总结 一、重构到微服务需要考虑的问题 1、为什么重构 单体地狱造成的业务问题&#xff1a; 交付缓慢充满故障的软件交付可扩展性差 2、重构形式 …

itheima苍穹外卖项目学习笔记--Day6: 微信登录 / 商品浏览

Day6 a. HttpClientGET方式请求&#xff1a;POST方式请求&#xff1a; b. 微信登录 a. HttpClient HttpClient 是Apache Jakarta Common 下的子项目&#xff0c;可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包&#xff0c;并且它支持 HTTP 协议最新…

chrome插件reading-time开发

本插件开发文档翻译于Google官方文档Chrome Extensions Tutorial: Reading time - Chrome Developers 一、reading-time reading-time项目的功能是 将预期的阅读时间添加到任何Chrome extension 和 Chrome Web Store documentation 页面里面 通过这个项目&#xff0c;我们可以…

拓扑序列及其排序

目录 一、拓扑序列及其排序的相关概念拓扑序列的定义拓扑序列的性质出度、入度、度数拓扑排序 二、拓扑序列及其排序的应用有向图的拓扑序列代码实现 一、拓扑序列及其排序的相关概念 拓扑序列的定义 拓扑序列是对一个 有向无环图(DAG)&#xff08;也称为拓扑图&#xff09;而…

SpringBoot整合gRPC -- 简单明了

项目结构 pom引入(parent中引入即可) <properties><net-devh-grpc.version>2.14.0.RELEASE</net-devh-grpc.version><os-maven-plugin.version>1.6.0</os-maven-plugin.version><protobuf-maven-plugin.version>0.5.1</protobuf-mave…

Python绘制一个圆

代码 import matplotlib.pyplot as plt import numpy as npradius 10 # 半径的长度 center np.array([0,0]) # 圆心的坐标 t np.linspace(0, 2 * np.pi, 100) x center[0] radius * np.cos(t) y center[1] radius * np.sin(t)plt.figure(figsize(5,5)) plt.plot(x,y) p…

C# Modbus通信从入门到精通(5)——Modbus RTU(0x03功能码)

1、03(0x03)读保持寄存器 使用该功能码能从远程地址中读取1到125个保持寄存器的值,每个保持寄存器都占两个字节,读取的保持寄存器数量由主站读取时指定。 2、发送报文格式 更详细的格式如下: 从站地址+功能码+起始地址高位+起始地址低位+寄存器数量高位+寄存器数量低位+…

Redis进阶源码 - 主流程源码

redis底层是C语言编写的一个可执行程序&#xff0c;主方法为server.c 中main方法 主要包括&#xff1a;从初始化 到 EventLoop整个流程源码内容介绍 画的分析图太大了&#xff0c;需要的直接下载看吧.....想提醒大家的是&#xff0c;看源码时一定要带着目标去看&#xff0c;比…

《微服务架构设计模式》第十一章 开发面向生产环境的微服务应用

内容总结自《微服务架构设计模式》 开发面向生产环境的微服务应用 一、开发安全的服务1、安全性概述2、单体应用安全性3、微服务应用安全性 二、如何使用外部化配置模式三、如何使用可观测性模式四、使用微服务基底模式开发服务1、使用微服务基地2、从微服务到服务网格 五、总结…

前端开发面试题及答案整理(合集)

前端开发面试题及答案 1、对Web标准以及W3C的理解与认识? 答&#xff1a;标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链CSS和JS脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组…

2023年NOC决赛-加码未来编程赛项决赛模拟题-Python模拟题--卷1

第一题: 小码君在和朋友们玩密室逃脱。他们被困在一个封闭的房间中,只有破解密码,才能逃出密室。密码提示如下:“将 1 到 100 以内,能被 7 整除的数的个数以及这些数累加起来的和拼在一起即是打开房门的密码” 。请帮小码君算出密码。(注:只需显示表示结果的纯数字,不…

动手学深度学习——softmax回归的从零开始(代码详解)

目录 1. softmax回归的从零开始实现1.1 初始化模型参数1.2 定义softmax操作1.3 定义模型1.4 定义损失函数1.5 分类精度1.6 训练1.7 预测1.8 小结 1. softmax回归的从零开始实现 引入Fashion-MNIST数据集&#xff0c; 并设置数据迭代器的批量大小为256。 import torch from IP…

快速实现单数据表编辑

目录 1 简介 2 准备电子表格 3 初始化 4 根据电子表格生成数据库表并导入数据 5 使刚创建的表显示在待编辑列表中 6 开始编辑单表 7 一段代码用于实现中文字段名、调整列宽、只读字段、隐藏字段 1 简介 单数据表是最容易实现的表。由于不需要从零开始一个一个地增加字段…

pwm呼吸灯

文章目录 一、呼吸灯二、代码实现三、引脚分配 一、呼吸灯 呼吸灯是指灯光在微电脑的控制之下完成由亮到暗的逐渐变化&#xff0c;使用开发板上的四个led灯实现1s间隔的呼吸灯。 二、代码实现 c module pwm_led( input clk ,input rst_n ,output reg [3:0] led ); …

当你输入URL并按下回车后,发生了什么?

大概发生了八步的事情&#xff1a; URL解析->DNS解析->服务器建立连接->发送HTTP请求->服务器处理请求->服务器响应->接收和渲染页面->关闭连接 URL解析 URL&#xff0c;统一资源定位符&#xff0c;是用来表示从互联网上得到的资源位置和访问这些资源的…

ARM DynamIQ简介

DynamIQ是ARM一个新的底层solution&#xff0c;用于连接在一个芯片上的不同core&#xff0c;将多个core连接起来。 有了DynamIQ&#xff0c;我们可以将不同类型的core放到一个cluster中。比如&#xff0c;将性能高的core&#xff0c;和功耗低的core放进一个cluster&#xff0c;…