Отправить команду на USB-устройство (сканер отпечатков пальцев) без драйвера для Linux

Попробуйте использовать этот скрипт Python . Он обрезает отдельные разделы имени пути, точно так, как вы хотели в своем вопросе. Он также использует многоточие в Юникоде, которое занимает только один столбец вместо трех.

Пример вывода для вашего пути (если задано ограничение в 30 символов):

/home/mydir…/second…/my_actua…

Стоит отметить, что это решение правильно обрабатывает Unicode в именах каталогов, используя wcswidth . $ {# PWD} , который использовали другие ответы, будет сильно неверно оценивать визуальную ширину любого пути, содержащего символы UTF-8.

1
19.10.2018, 15:03
3 ответа

Я не думаю, что это может работать таким образом. Во-первых, echo "0x012...отправил буквальную строку символов ascii 0x12, которая является лишь базовым -16 представлением фактических двоичных данных, необходимых для связи с устройством.

Взгляните на Python, возможно, (вы могли бы использовать множество других языков для этого, однако Python обычно является хорошим местом для начала )и взаимодействия с USB-устройствами. Может здесь:https://stackoverflow.com/questions/44290837/how-to-interact-with-usb-device-using-pyusb

0
28.01.2020, 00:24

Вы должны написать /dev/bus/usb/[vid:pid]. vidи pid— цифры, написанные рядом с идентификатором. В вашем случае вы можете попробовать эту команду:

echo "0x12" >> /dev/bus/usb/001/2009:7638
0
28.01.2020, 00:24

SDK _DEMO использует COM-порт для подключения к сканеру отпечатков пальцев в Windows, а в руководстве указано, что ожидаемым способом является использование последовательного преобразователя USB -в -. Поскольку набор команд включает как CMD_GET_TEMPLATE, так и CMD_ADD_TEMPLATE, возможно, для чтения и записи шаблонов отпечатков пальцев в сканер соответственно, возможно, SDK _DEMO на самом деле реализовывал эмуляцию запоминающего устройства.

К изображению вашего lsusbлистинга (Кстати, пожалуйста, не добавляйте изображения текста; просто скопируйте и вставьте фактический текст, если это вообще возможно )устройство Bus 001 Device 008, похоже, имеет идентификатор производителя и продукта USB 2009:7638.

К сожалению, ID поставщика USB 2009, по-видимому, относится к iStorage , а у этого поставщика известно лишь несколько идентификаторов флэш-накопителей.

С другой стороны, идентификаторы микросхем последовательного преобразователя USB -в -часто настраиваются, поскольку, когда такая микросхема используется как часть более крупного продукта, поставщик более крупного продукта хотел бы, чтобы он имеют свои собственные коды поставщиков и продуктов. Итак, сначала вы должны выяснить, действительно ли USB-устройство с идентификаторами 2009:7638является последовательным преобразователем USB с пользовательским идентификатором или это что-то другое.

Для этого выполните команду lsusb -d 2009:7638 -v, пока устройство подключено. Если выходные данные содержат такие строки, это определенно преобразователь последовательного порта USB -в -:

.
  bInterfaceClass       255 Vendor Specific Class
  bInterfaceSubClass    255 Vendor Specific Subclass
  bInterfaceProtocol    255 Vendor Specific Protocol
  iInterface              2 USB Serial Converter

Но если устройство на самом деле предоставляет интерфейс USB Mass Storage, то вывод будет включать строку bDeviceClassили bInterfaceClassсо значением 8 Mass Storage. Если это так, то устройство также должно появиться в выводе lsblk.

Если микросхема последовательного преобразователя USB -в -является продуктом FTDI (, как указано в руководстве, которое вы указали ), правильный модуль драйвера для него, вероятно, ftdi_sio.Чтобы загрузить модуль и сообщить ему о пользовательских идентификаторах:

modprobe ftdi_sio
echo 2009 7638 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id

Та же стратегия может быть использована и с другими модулями последовательного драйвера USB с -по -; просто замените имя модуля в обеих командах.

Если вы не можете определить правильный модуль драйвера, запустите lsusb -d 2009:7638 -v > /tmp/usbserial-info.txtи отредактируйте свой вопрос, добавив в него содержимое результирующего файла /tmp/usbserial-info.txt.

Если последовательный драйвер USB с -по -распознает устройство, должен появиться узел устройства /dev/ttyUSB0. Это устройство будет использоваться для связи со сканером отпечатков пальцев.

Устройства /dev/bus/usb/xxx/yyy, такие как /dev/bus/usb/001/008, которые вы пытались использовать, предназначены для использования с libusb, поскольку они требуют, чтобы приложение, использующее узел устройства, знало о различных конечных точках USB и Режимы передачи USB . Одно USB-устройство будет иметь как минимум одну конечную точку управления и может иметь несколько интерфейсов , каждый из которых имеет несколько конечных точек.

Узлы устройства /dev/bus/usb/...позволяют использовать полный набор функций USB, но из-за этого они не могут использоваться сценариями; в основном эти узлы устройств существуют для того, чтобы быть целью для определенных системных вызовов, а не просто для передачи данных в них и из них.

0
07.09.2021, 15:35

Теги

Похожие вопросы