Как я могу отправить команды на ACS122U с PyUSB? - PullRequest
0 голосов
/ 16 января 2020

Я работаю над проектом, в котором мне нужно читать и писать карты Mifare classi c 1K с антенной ACR122U и Raspberry Pi. Мне нужно как можно больше контроля, поэтому я решил использовать PyUSB и отправлять команды напрямую в байтах. Пока все хорошо.

У меня есть скрипт со страницы учебника PyUSB. Все работает, пока скрипт не выполнит команду write. В результате возникает ошибка «Время ожидания истекло».

Вот код:

import usb.core
import usb.util
import sys

#I changed to my ids and it works
dev = usb.core.find(idVendor=0x072F, idProduct=0x2200)

if dev is None:
    raise ValueError('Device not Found!')
else:
    print(dev)

#This loops work perfectly fine. I get all information from the ACR122U
for cfg in dev:
    sys.stdout.write(str(cfg.bConfigurationValue) + '\n')
    for intf in cfg:
        sys.stdout.write('\t' + \
            str(intf.bInterfaceNumber) + \
            ',' + \
            str(intf.bAlternateSetting) + \
            '\n')
        for ep in intf:
            sys.stdout.write('\t\t' + \
            str(ep.bEndpointAddress) + \
            '\n')


try:
    dev.detach_kernel_driver(0)
except:
    print("No need to detach")
    pass

dev.set_configuration()

print("*\n"*3)

ep = usb.util.find_descriptor(
    intf,
    #match first OUT Endpoint
    custom_match = \
    lambda e: \
        usb.util.endpoint_direction(e.bEndpointAddress) == \
        usb.util.ENDPOINT_OUT)

assert ep is not None
print(ep)
print("*\n"*5)

try:
    dev.set_interface_altsetting(interface=0, alternate_setting=0)
except:
    pass

#It fails on this line
dev.write(ep.bEndpointAddress, [0xFF, 0x00, 0x48, 0x00, 0x00])

#I have tried many variations, e.g.
#dev.write(0x02, '\xFF\x00...')
#ep.write([0xFF, 0x00, 0x48, 0x00, 0x00])
#etc

dev.reset()

Отправляемая мной команда, полученная из документации ACR122U . Страница 24 из 47. Я пробовал nf c -tools.org раньше, но не смог заставить его читать и писать блочно, если вы знаете что-нибудь об этом, я рад вернуться назад. Я использую Raspbian на Raspberry Pi 3 B +.

Может быть, кто-то понял это раньше. Я только начинаю с USB, и я пытался заставить это работать в течение многих дней. Пожалуйста помоги. Любая помощь приветствуется. Спасибо!

...