我正在尝试通过 Raspberry Pi Pico 的内置微型 USB 端口实现双向通信。更具体地说,我试图让我的计算机向 Pico 发送 ping,Pico 接收 ping 并用 pong 响应。
这是我在计算机上运行的代码:
# This must not run on Pico, but on the host computer!
import serial
import time
import sys
# open a serial connection
s = serial.Serial("/dev/cu.usbmodem1101", 115200) # on my mac, this is how pico shows up
# blink the led
while True:
s.write(b"ping\n")
print("sent 'ping'")
time.sleep(1)
response = s.readline()
print(f"received '{response}'")
time.sleep(1)
这是我放在 Pico 上的代码(使用 Thonny Python IDE):
import time
import sys
while True:
# read a command from the host
v = sys.stdin.readline().strip()
print(f"received '{v}'")
time.sleep(1)
sys.stdout.write(b"pong\n")
print("sent 'pong'")
我首先单击 Thonny 中的绿色运行按钮,将代码放到 Pico 上。然后,我使用以下命令在计算机上运行第一个脚本:
$ python data_transfer_host.py
我的 Pico 成功接收来自计算机的 ping。但我不知道如何将乒乓球发送回我的计算机。使用我现在的代码,文本
pong
被写入 Thonny 的控制台,如下所示:
我还尝试使用
sys.stdout.print(b"pong\n")
而不是 sys.stdout.write
但会导致错误:AttributeError: 'TextIOWrapper' object has no attribute 'print'
。
真正的意图是什么 - 只是使用以结尾的文本命令与 Raspberry Pi 进行双向通信 ?
如果是,那么为什么不使用以太网?发送 e。 g。双向的 UDP/HTTP 数据包应该可以工作。
或者使用 RS232 UART 引脚 + 一些电子设备 和来自第二个 USB 端口的 USB 转串行适配器?
Thonny Python IDE 也通过 USB 与 Raspberry Pi 通信吗? 那么什么有效,什么无效——可能是由 Thonny 定义的。
我通常通过以太网/SSH 访问我的 Raspberry Pi,并直接在 Raspberry Pi 上运行的 Ubuntu 的 shell 控制台中启动 python 脚本。 甚至在 Raspberry 上也集成了 python 命令行调试器? 如果您不使用 Thonny Python IDE,则 USB 未使用,也许可以使用适当的库重新配置并模拟所连接 PC 的串行接口(类似于
FTDI 的RS232 = UART = 串行接口芯片)。 在树莓派论坛提问也能带来帮助。