Извлечение данных из Nike + Sportband с PyUSB в Debian

У меня старый браслет 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

Есть предложения?

Беглый взгляд на код C предполагает, что он сначала отправит управляющее сообщение на устройство, «запрашивая» у него определенные типы ответов (вызовы usb_control_msg), но не похоже, что вы здесь делаете что-то подобное. Хотя звучит как забавный проект.

jedwards 01.05.2018 15:50

@jedwards Да, может быть, для меня это слишком сложно. Я еще не пробовал отправлять сообщения с PyUSB, более того (если я правильно понял) мне нужна конечная точка OUT, но я нашел только конечную точку IN. Но спасибо, я могу попытаться отправить сообщение, а затем попытаться его прочитать.

Luigi 01.05.2018 16:20
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
177
0

Другие вопросы по теме