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

文章讲述了在K210和STM32之间使用UART串口进行数据传输时,涉及的字节数据与字符串之间的转换。通过添加或不添加decode()函数,影响了数据接收的格式。同时,文章提到了在STM32持续发送数据时,对K210烧录新代码可能导致的问题,并寻求解决方案。
摘要由CSDN通过智能技术生成

官方案例链接

一、代码部分

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)没加 字节数据转字符串 转换句

在这里插入图片描述

每天进步一点点 笔记仅供自学,用来回看复习,不一定适合你,如有错误请指出。

  • 10
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

KevinGuo457

哈哈哈资助我买两包辣条叭

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

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

打赏作者

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

抵扣说明:

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

余额充值