我有一个 Spektrum Radio 发射器及其接收器。我目前正在尝试做的是通过使用 microPython 和 Raspberry Pi Pico,我想读取进入接收器的数据,并将其转换为伺服命令。我所知道的是发射器/接收器使用的协议是 DSMX。我该怎么做呢?我只需要接收,我不需要从 Raspberry Pi Pico 传回任何数据。
我正在使用 Thonny,我所做的就是尝试使用 UART 模块和 ustruct 模块并使用它创建一个变量
uart = UART(1, baudrate = 115200)
data = uart.read()
header,id,data,error_checking,trailer = ustruct.unpack('>BBHHB',data)
尝试运行它时,我被抛出错误
TypeError:需要缓冲协议的对象
我没想到什么,因为我真的不知道我在做什么。 任何帮助将不胜感激。
你会得到
TypeError
异常,因为你对 uart.read()
的调用正在返回 None
(这意味着串行端口上没有可用数据)。我对 DSMX 协议一无所知,但为了避免代码中出现该错误,您可能需要类似以下内容:
format = 'BBHHB'
required_size = ustruct.calcsize(format)
if uart.any() >= required_size:
data = uart.read(required_size)
header,id,data,error_checking,trailer = ustruct.unpack(f'>{format}',data)
...以上内容可能需要存在于某种循环中。