arduino - 使用 Arduino 和 PySerial 回显一系列字节
问题描述
我正在编写一个程序,它使用 PySerial 向 Arduino Uno 发送一个 10 字节长的数据包(Arduino 和我的计算机的代码如下)。代码应该工作的方式是,每当一个字节包被发送到 Arduino 时,它就会将字节回显给计算机。然后主机(我的笔记本电脑)读取该数据,并将其打印到控制台(延迟 100 毫秒)。但是,当我运行代码时,它会慢慢打印出 10 个空字节,b''
并且延迟超过 100 毫秒(更像是 750 毫秒)。此后,它按预期运行,按顺序打印出数据包的每个元素,中间有 100 毫秒的延迟。有没有人解释为什么会发生这种情况?
Python代码:
import serial
import time
ser = serial.Serial(port="COM3", baudrate=9600, timeout=1.0)
packet = [85, 85, 1, 10, 1, 32, 3, 184, 11, 13]
while True:
p = bytes(packet)
ser.write(p)
for i in range(len(packet)):
time.sleep(0.1)
r = ser.read()
print(r)
Arduino代码:
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
int r = Serial.read();
Serial.write(r);
}
}
编辑:这是运行此程序时的控制台输出:
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b'U'
b'U'
b'\x01'
b'\n'
b'\x01'
b' '
b'\x03'
b'\xb8'
b'\x0b'
b'\x0d'
[previous ten lines repeated indefinitely]
解决方案
推荐阅读
- html - Angular Material:多个 mat-menus - 当它们中的每一个都必须不同时如何覆盖它们的宽度?
- ffmpeg - FFMPEG 反向模糊
- python - 为什么用 df['date'].astype(str).str[-2:] 转换的“YYYY.MM”日期在 0 和 1 之间?
- r - 如何在“reformulate”中转义无效/语法模糊的术语名称?
- python - 更改文件会导致 GitHub Desktop 上重复更改的文件(和 Git Bash:git status)
- firebase - 基于 Firebase 数据库中 where 子句的查询
- spring-boot - springdoc-openapi 注释中的占位符
- python - 如何使用列表中的链接下载文件?
- r - 加载多个形状文件 Shiny r
- django - Wagtail 管理员 - 允许编辑器编辑自定义设置