Как мне наиболее правильно использовать libusb общаться с подключенными USB-устройствами?
В частности, как я могу передавать данные на устройства USB, получать информацию от устройств, узнавать имя подключенного устройства, если у них есть память и т. Д.
Более конкретно, я буду запускать это на компьютере Mac OS X, поэтому я знаю, что не могу просто использовать заголовочные файлы Windows.
Если есть хорошее объяснение для устройств libusb и USB, это тоже будет полезно.
Я нашел здесь текстовое руководство по использованию libusb-1.0: http://www.dreamincode.net/forums/topic/148707-introduction-to-using-libusb-10/
Вот это пост на похожий вопрос, который может быть полезен для вас. Я включаю много ссылок.
Но, возможно, вы бы предпочли увидеть это здесь. Так что в таком случае, вот оно!
Libusb позволяет вам перечислять устройства и выбирать то, что вы хотите, основываясь на определенном идентификаторе поставщика / продукта (V / P Id). Если вы не знаете этого и не можете найти его в Интернете с описанием продукта, вы можете легко найти его.
Если он не в сети, вам нужно будет использовать приложение, подобное lsusb в Linux. (Я не верю, что это на Mac.) Когда вы запускаете lsusb, он отображает список подключенных устройств и их V / P Id. Вы можете легко найти свое устройство, отключив его от сети, запустив lsusb и снова подключив устройство и сравнив его. Это кусок торта. Мы надеемся, что любое приложение со списком usb на Mac будет отображать V / P ID, как lsusb.
Затем, когда у вас есть этот V / P ID, вы будете использовать libusb (если используете 0.1), чтобы перечислить все устройства и найти устройство, которое соответствует этому идентификатору. (Я поддерживаю использование libusbx, в котором одна функция поиска устройства основана на идентификаторе V / P — на самом деле libusbx намного более лаконичен.)
После выбора устройства вы отправите пакет, используя отчеты о функциях или выходных данных. Это самая сложная часть, потому что отправляемый вами пакет зависит от отдельного устройства, которое я считаю. Это 8 байтов данных, и только один из них — это один символ, который вы хотите отправить на USB-устройство. (Если вы хотите отправить 8 символов, вам придется пройтись по массиву символов и отправить функцию или отчет о выходе для каждого символа.)
В качестве примера не стесняйтесь ссылаться на довольно конкретный терминал пример Я написал для управления двумя светодиодами. Если это полезно, отлично! Содержит пример libusbx и libusb-0.1.
Надеюсь, это поможет!
Процесс, которым вы можете следовать:
lsusb
Официальный сайт для libusb 1.0 (более новая и рекомендуемая версия) https://libusb.info/. Документация по API находится на http://api.libusb.info. Нажмите на раздел Модули, чтобы пройтись по различным функциональным областям. Источник находится на https://github.com/libusb/libusb и вы можете увидеть некоторые рабочие примеры на https://github.com/libusb/libusb/tree/master/examples. Надеюсь, это поможет!
Статья от @ user2469202 также является хорошим базовым введением.