Я пытаюсь передать данные из приложения tkinter на RPi в Arduino Leonardo, настроенный как устройство HID USB, затем на компьютер из arduino, используя keyboard.write()
, но не все данные заканчиваютсяна принимающем компьютере.
На Пи запущено приложение tkinter, и Пи подключен к ячейкам загрузки и ультразвуковым датчикам, которые регистрируют вес и размеры посылок.Значения размещаются в виде дерева tkinter.Это все работает нормально.Я подключил Pi к Arduino Leonardo через последовательный порт (GPIO), arduino настроен как USB HID-устройство.Я хочу, чтобы значения из древовидного представления на pi передавались в arduino, а затем передавались (USB HID) на подключенный компьютер.Я почти получил это работает, но не все данные передаются, он остановится через несколько символов.Мне нужно передать TAB и INSERT на принимающий компьютер, поэтому я посылаю строки «T» и «I» из Raspberry, а затем «конвертирую» их в значения HEX на Arduino.
И последовательный, и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);