У меня есть Raspberry Pi (я использую Linux) и устройство, которое измеряет некоторые значения.
У меня есть сервер Python, и когда клиент отправляет команду «Я хочу значения», я запрашиваю у устройства некоторые значения. Это функция для моего устройства:
def usbDevice:
dev = usb.core.find(idVendor=0xXXXX, idProduct=0xXXXX)
if dev is None:
return 'Not found'
dev.set_configuration()
dev.write(1, '\x05', 0) # ask for the values
time.sleep(2)
ret = dev.read(0x81,2048 , 0,1200) # endpoint, siz, interf, timeout ->meas. vals
print ret
return ret
Когда я начинаю общение, оно всегда проходит хорошо (в обоих случаях я отправляю команду и получаю правильный ответ...). Однако во второй раз, когда я пытаюсь это сделать (неважно, слишком долго я жду или нет), я не получая ответа от устройства. Я знаю, что могу отправить запрос (я использовал печать «шаг XX», чтобы увидеть, где он терпит неудачу), но я не получаю ответа... Обычно я получаю исключение тайм-аута, но иногда получаю исключение «ресурс занят».
Должен ли я закрыть USB-соединение после первого использования? Как? Несмотря на то, что я всегда компилирую с разрешениями sudo, я создал файл .rules, поэтому думаю, что проблема не в этом.
Кроме того, я действительно хотел бы знать, что-то не так с этим способом установления связи USB, поскольку я использовал что-то подобное в прошлом. (и я плохо разбираюсь в питоне...)