我正在尝试将数据从 RPi 上的 tkinter 应用程序传递到设置为 USB HID 设备的 Arduino Leonardo,然后使用 arduino 从 arduino 传递到计算机keyboard.write()
,但并非所有数据都最终到达接收计算机。
我在 Pi 上运行了 tkinter 应用程序,Pi 连接到称重传感器和记录包裹重量和尺寸的超声波传感器。这些值放置在 tkinter 树视图中。这一切都很好。我已经通过串行(GPIO)将 Pi 连接到 Arduino Leonardo,arduino 被设置为 USB HID 设备。我希望将 pi 上的树视图中的值传递给 arduino,然后通过(USB HID)传递给连接的计算机。我几乎已经完成了这项工作,但并非所有数据都通过了,它会在几个字符后停止。我需要将 TAB 和 INSERT 传递给接收计算机,所以我从 Raspberry 发送“T”和“I”字符串,然后在 arduino 上将其“转换”为 HEX 值。
串行和 USB HID 对我来说都是新的,所以我不确定我是否正确设置了它……有什么想法吗?
这是在 Raspberry Pi 上运行的代码:
x = kolliTree.get_children()
if x:
count = len(x)
for i in x:
a = str(kolliTree.item(i)["values"][0])
dX = str(kolliTree.item(i)["values"][1])
dY = str(kolliTree.item(i)["values"][2])
dZ = str(kolliTree.item(i)["values"][3])
w = str(kolliTree.item(i)["values"][4])
kolli = ["T", a, "T", dX, "T", dY, "T", dZ, "T", w, "T", "I"]
for i in kolli:
leonardo.write(i.encode("latin1"))
这是arduino上的循环:
void loop() {
if (Serial1.available() > 0) {
byte inChar = Serial1.read();
if (inChar == 84) {
Keyboard.write(0xB3);
}
else if (inChar == 73) {
Keyboard.write(0xD1);
}
else {
Keyboard.write(inChar);
}
delay(10);