树莓派pico入坑笔记,uart使用

 关于树莓派pico和circuitpython的更多玩法,请看树莓派pico专栏

uart原理自行百度,相关内容很多其他博主写过并且质量很高,这里不再赘述。

调用circuitpy的busio模块来使用uart,除此以外,spi、iic等要需要使用该模块,使用方法见

官方教程 ,详细信息见文档

官方的例子简洁,但没有过多其他应用的细节,主要是数据格式,发送数据方面。

收发数据的格式是字节数组,该类型要求数据不可变,因此如果要修改,需要额外新建,然后将其转换为字节数组。

然后是注意bytearray方法,它要求输入参数是可迭代对象,建议使用列表。

在初始化时,使用busio.UART()方法创建uart对象,参数列表为TX,RX ,波特率,可以参考引脚图选择功能引脚。

 

代码

import board
import busio
import digitalio

# For most CircuitPython boards:
led = digitalio.DigitalInOut(board.LED)

led.direction = digitalio.Direction.OUTPUT
uart = busio.UART(board.GP12, board.GP13, baudrate=9600)#格式: tx rx 波特率

while True:
    data = uart.read(32)  # 读最多32字节数据
    # print(data)  # 数据是字节数组
    if data is not None:
        #清空缓冲区的剩余数据
        uart.reset_input_buffer()
        led.value = True
        d=bytearray(data)# 把数据转换为字节数组,要求数据是可迭代对象,如列表
        #也可以使用字符串-字节串转换方法,本文使用ascii编码
        # d=data.encode('ascii')
        # d=bytearray([data[0]+1])#返回加一的数据,注意字节数组不可变
        uart.write(d)# 写数据
        # 把字节数组转换为字符串
        data_string = ''.join([chr(b) for b in data])
        #也可以使用字符串-字节串转换方法,本文使用ascii编码
        #data_string =data.decode('ascii')
#         print(data_string, end="")
        print(data_string," ",d,end='\n')
        led.value = False

 

 

posted @ 2024-06-26 19:28  CV小能手chh  阅读(18)  评论(0)    收藏  举报  来源