У меня старый браслет Nike + Sportband (изображение здесь). Nike решила прекратить поддержку этого продукта. Я хотел бы извлечь данные, а затем расшифровать их. Кто-то написал код на C, который работает (ссылка скачать). Я хочу сделать это на Python, поэтому решил использовать PyUSB.
Код:
import sys
import usb.core
import usb.util
VENDOR_ID = 0x11ac
PRODUCT_ID = 0x4269
device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID)
print device
if device is None:
sys.exit("Device not found.")
if device.is_kernel_driver_active(0):
try:
device.detach_kernel_driver(0)
print('Kernel driver detatched.\n')
except usb.core.USBError as e:
sys.exit("Could not detatch kernel driver: %s" % str(e))
try:
device.set_configuration()
#device.reset()
print('Configuration Ok')
except usb.core.USBError as e:
sys.exit("Could not set configuration: %s" % str(e))
# read a data packet
data = device.read(0x81,8,10000)
print data
Я всегда получаю такую ошибку:
usb.core.USBError: [Errno 110] Operation timed out
Есть предложения?
@jedwards Да, может быть, для меня это слишком сложно. Я еще не пробовал отправлять сообщения с PyUSB, более того (если я правильно понял) мне нужна конечная точка OUT, но я нашел только конечную точку IN. Но спасибо, я могу попытаться отправить сообщение, а затем попытаться его прочитать.
Беглый взгляд на код C предполагает, что он сначала отправит управляющее сообщение на устройство, «запрашивая» у него определенные типы ответов (вызовы
usb_control_msg
), но не похоже, что вы здесь делаете что-то подобное. Хотя звучит как забавный проект.