Nie jestem zawodowym programistą. Programowanie to moje hobby od 30 lat.
Mój system to Ubuntu 20.04
Chcę wykonać transmisję z STM32 do PC-ta. Próbuję wykorzystać bibliotekę pyUSB . W internecie w zasadzie nie ma dokumentacji, jest tylko jeden przykład z sensownym opisem który wszyscy kopiują więc z niego skorzystałem.
Skopiowałem kod i uruchomiłem pierwszych kilka poleceń.
import usb.core
import usb.util
dev = usb.core.find(idVendor=0xfffe, idProduct=0x0001)
if dev is None:
raise ValueError('Device not found')
dev.set_configuration()
cfg = dev.get_active_configuration()
intf = cfg[(0,0)]
Polecenie dev = usb.core.find(idVendor=0xfffe, idProduct=0x0001)
działa bo wpisując print(dev)
dostaję cała listę.
Przy poleceniu
dev.set_configuration()
które nie powinno sprawiać problemów bo jest bezparametrowe pojawiła się cała lista błędów.
Traceback (most recent call last):
File "/usr/lib/python3.8/idlelib/run.py", line 559, in runcode
exec(code, self.locals)
File "/home/kotek/Pulpit/USBtest/test1.py", line 9, in <module>
dev.set_configuration()
File "/home/kotek/.local/lib/python3.8/site-packages/usb/core.py", line 915, in set_configuration
self._ctx.managed_set_configuration(self, configuration)
File "/home/kotek/.local/lib/python3.8/site-packages/usb/core.py", line 113, in wrapper
return f(self, *args, **kwargs)
File "/home/kotek/.local/lib/python3.8/site-packages/usb/core.py", line 158, in managed_set_configuration
self.managed_open()
File "/home/kotek/.local/lib/python3.8/site-packages/usb/core.py", line 113, in wrapper
return f(self, *args, **kwargs)
File "/home/kotek/.local/lib/python3.8/site-packages/usb/core.py", line 131, in managed_open
self.handle = self.backend.open_device(self.dev)
File "/home/kotek/.local/lib/python3.8/site-packages/usb/backend/libusb1.py", line 804, in open_device
return _DeviceHandle(dev)
File "/home/kotek/.local/lib/python3.8/site-packages/usb/backend/libusb1.py", line 652, in __init__
_check(_lib.libusb_open(self.devid, byref(self.handle)))
File "/home/kotek/.local/lib/python3.8/site-packages/usb/backend/libusb1.py", line 604, in _check
raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)
>>>
Ostatni błąd można wyeliminować uruchamiając skrypt poleceniem sudo ale w zamian pojawia się inna lista błędów
Traceback (most recent call last):
File "test1.py", line 9, in <module>
dev.set_configuration()
File "/usr/local/lib/python3.8/dist-packages/usb/core.py", line 915, in set_configuration
self._ctx.managed_set_configuration(self, configuration)
File "/usr/local/lib/python3.8/dist-packages/usb/core.py", line 113, in wrapper
return f(self, *args, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/usb/core.py", line 159, in managed_set_configuration
self.backend.set_configuration(self.handle, cfg.bConfigurationValue)
File "/usr/local/lib/python3.8/dist-packages/usb/backend/libusb1.py", line 812, in set_configuration
_check(self.lib.libusb_set_configuration(dev_handle.handle, config_value))
File "/usr/local/lib/python3.8/dist-packages/usb/backend/libusb1.py", line 604, in _check
raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 16] Resource busy
Próbowałem podejrzeć kod biblioteki ale bez efektów. Czy jest ktoś kto może coś wyjaśnić. Z góry dziękuję.