Top.Mail.Ru
Ответы
Аватар пользователя
5лет
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Отправка команд на устройство по USB с помощью python

есть необходимость на некоторых бесперебойниках Smart APC UPS изменить настройки, некоторые из UPS подключены через COM, некоторые по USB. возникли сложности с USB, ни разу не работал с ним
Инфо по устройству:
​ DEVICE ID 051d:0002 on Bus 001 Address 009 =================
bLength​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ :​ ​ 0x12 (18 bytes)
bDescriptorType​ ​ ​ ​ ​ ​ ​ :​ ​ ​ 0x1 Device
bcdUSB​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ :​ 0x110 USB 1.1
bDeviceClass​ ​ ​ ​ ​ ​ ​ ​ ​ ​ :​ ​ ​ 0x0 Specified at interface
bDeviceSubClass​ ​ ​ ​ ​ ​ ​ :​ ​ ​ 0x0
bDeviceProtocol​ ​ ​ ​ ​ ​ ​ :​ ​ ​ 0x0
bMaxPacketSize0​ ​ ​ ​ ​ ​ ​ :​ ​ ​ 0x8 (8 bytes)
idVendor​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ : 0x051d
idProduct​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ : 0x0002
bcdDevice​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ :​ ​ ​ 0x6 Device 0.06
iManufacturer​ ​ ​ ​ ​ ​ ​ ​ ​ :​ ​ ​ 0x3 American Power Conversion
iProduct ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ :​ ​ ​ 0x1 Smart-UPS 1500 FW:653.19.I USB FW:11.03
iSerialNumber​ ​ ​ ​ ​ ​ ​ ​ ​ :​ ​ ​ 0x2 AS1229290761
bNumConfigurations​ ​ ​ ​ :​ ​ ​ 0x1 ​
CONFIGURATION 1: 30 mA =================================== ​ ​
bLength​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ :​ ​ ​ 0x9 (9 bytes) ​ ​
bDescriptorType​ ​ ​ ​ ​ :​ ​ ​ 0x2 Configuration ​
​ wTotalLength​ ​ ​ ​ ​ ​ ​ ​ :​ ​ 0x22 (34 bytes) ​
​ bNumInterfaces​ ​ ​ ​ ​ ​ :​ ​ ​ 0x1 ​ ​
bConfigurationValue​ :​ ​ ​ 0x1 ​ ​ iConfiguration​ ​ ​ ​ ​ ​ :​ ​ ​ 0xa 1 ​ ​
bmAttributes​ ​ ​ ​ ​ ​ ​ ​ :​ ​ 0xe0 Self Powered, Remote Wakeup ​ ​
bMaxPower ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ :​ ​ ​ 0xf (30 mA) ​ ​ ​
INTERFACE 0: Human Interface Device ==================== ​ ​ ​ ​
bLength​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ :​ ​ ​ 0x9 (9 bytes) ​ ​ ​ ​
bDescriptorType​ ​ ​ :​ ​ ​ 0x4 Interface ​ ​ ​ ​ bInterfaceNumber​ ​ :​ ​ ​ 0x0 ​ ​ ​ ​
bAlternateSetting​ :​ ​ ​ 0x0 ​ ​ ​ ​
bNumEndpoints​ ​ ​ ​ ​ :​ ​ ​ 0x1 ​ ​ ​ ​
bInterfaceClass​ ​ ​ :​ ​ ​ 0x3 Human Interface Device ​ ​ ​ ​
bInterfaceSubClass :​ ​ ​ 0x0 ​ ​ ​ ​
bInterfaceProtocol :​ ​ ​ 0x0 ​ ​ ​ ​
iInterface​ ​ ​ ​ ​ ​ ​ ​ :​ ​ ​ 0x0 ​ ​ ​ ​ ​ ​
ENDPOINT 0x81: Interrupt IN ========================== ​ ​ ​ ​
​ ​ bLength​ ​ ​ ​ ​ ​ ​ ​ ​ :​ ​ ​ 0x7 (7 bytes) ​ ​ ​ ​ ​ ​ bDescriptorType​ :​ ​ ​ 0x5 Endpoint ​ ​ ​ ​
​ ​ bEndpointAddress :​ ​ 0x81 IN ​ ​ ​ ​
​ ​ bmAttributes​ ​ ​ ​ :​ ​ ​ 0x3 Interrupt ​ ​ ​ ​ ​ ​
wMaxPacketSize​ ​ :​ ​ ​ 0x6 (6 bytes) ​ ​
​ ​ ​ ​ bInterval​ ​ ​ ​ ​ ​ ​ :​ ​ 0x64 ​

тут есть только одна EP и типа IN. Значит ли это однозначно, что по usb он не принимает команд? Или как-то OUT EP можно добавить, драйвером, например?
всё безобразие происходит в python 3.4 (нужна и winXP), win10 x64. Нашел библиотеки pyusb, pywinusb, hidapi. Девайс все они находят, а пообщаться не получается
Если есть у кого пример обмена, подскажите пожалуйста

По дате
По рейтингу
Аватар пользователя
Новичок
5лет

http://mvidner.blogspot.com/2017/01/usb-communication-with-python-and-pyusb.html

вроде весь принцип на pyusb расписан, удобнее конечно было б на linux