Разговор со спрятанным - PullRequest
4 голосов
/ 16 января 2011

У меня есть датчик, разработанный PNI Corp., который называется Spacepoint-Fusion. Мне нужно взаимодействовать с этим устройством в C ++ и постоянно читать новые данные с устройства.

Когда я подключаю устройство к компьютеру, я вижу / dev / hidraw1 и / dev / hidraw2. Также появляется / dev / usb / hiddev0.

Моя проблема в том, что я понятия не имею, как читать эти устройства. Я не могу найти никаких примеров или документации в Интернете. Я даже не знаю, с чего начать. Я рассматривал libhid и hiddev как возможные решения, но пока не могу понять, как использовать любую из этих библиотек.

Итак, как мне читать с этого устройства с человеческим интерфейсом в c ++ на машине с Linux? Примеры будут с благодарностью. Спасибо.

Ответы [ 3 ]

2 голосов
/ 02 января 2012

Попробуйте запустить hexdump на hidraw-устройствах и создайте некоторый вход для вашего spacepace-fusion.

$ hexdump -C /dev/hidraw1

Если вы получите некоторые полезные данные, то самым простым способом будет использовать open() и read() для получения ввода с устройства. Каждый read() должен возвращать один пакет информации с вашего устройства. Вам понадобится некоторая документация для вашего устройства или будьте готовы перепроектировать, что означают пакеты.

1 голос
/ 06 ноября 2011

У вас впереди сложная дорога.Сначала вам понадобится информация о «spacepoint-fusion» (надеюсь, она поставляется с документацией).

Некоторые начальные значения, такие как ID продукта / ID поставщика, можно получить с помощью команды терминала:

lsusb

Далее вам, вероятно, понадобится узнать конечные точки, которые можно снова найти с помощью:

lsusb -v

Из этого вы можете узнать, на какие адреса устройства можно записать, а какие можнобыть прочитанным из (и, возможно, размером буферов чтения / записи).Но это насколько вы можете получить без надлежащих документов.Вам нужно будет знать, какие значения записать на устройство, и какие значения ожидать от устройства.

Предполагая, что вы ДЕЙСТВИТЕЛЬНО знаете, какие значения для чтения / записи с / на устройство, попробуйте выполнить следующий пример:

http://www.lvr.com/code/generic_hid.c

Я также предполагаю, что ваше устройство совместимо с HID, что совсем не обязательно.В любом случае, я желаю вам всего наилучшего в вашем путешествии по USB.

1 голос
/ 16 января 2011

Вы должны использовать библиотеку libusb: http://libusb.sourceforge.net/doc/index.html

   #include <libusb.h>

Другим способом является чтение / dev / usb / hiddev0 в виде простого файла с системными вызовами read, write. Смотрите: мужчина открыт, мужчина 2 читается, мужчина 2 пишет.

   #include <fcntl.h>
   #include <unistd.h>
...