2017-02-06 15 views
3

У меня есть сканер штрих-кода, подключенный к компьютеру Linux через USB. Сканер эмулирует клавиатурное устройство.Linux, чтение из сканера штрих-кода

Мне нужно написать программу, которая считывает отсканированные штрих-коды и обрабатывает их. Программа работает на фоновом режиме как служба и должна читать сканер штрих-кода независимо от текущего фокуса X.

Как это можно сделать в Linux?

Предпочтительным является решение более низкого уровня/объяснение.

+0

Я показал пример этого [здесь] (http://stackoverflow.com/a/29956584/1475978). –

ответ

2

Это звучит, как вы хотите, чтобы захватить данные из указанного устройства, В этом случае метод, описанный в этой статье поможет:

http://www.thelinuxdaily.com/2010/05/grab-raw-keyboard-input-from-event-device-node-devinputevent/

Это будет слушать для клавиатуры событий, вытекающих из только указанный источник.

Предупреждение, хотя, насколько я знаю, это не остановит его от распространения до вашего текущего фокуса окна.

+0

хорошо, передача штрих-кодов на сфокусированное приложение крайне нежелательна. – johnfound

+0

Завершая отмену события нажатия клавиши после прочтения, чтобы он не пузырился, я не уверен, как вы это сделаете, я искал способы ограничить узлы устройств только одним приложением, но это не слишком плодотворно, поэтому далеко. – Minothor

+0

ближе всего я нашел до сих пор этот человек получает исключительный контроль над устройством, перехватывать и модифицировать ключевые события: https://www.reddit.com/r/linux/comments/1h30c8/devinputeventx_c_programming_question/ На самом деле, это может быть то, что вы ищете: '... Если вы поддерживаете захват, больше ничего не увидите нажатия клавиш. ... ' – Minothor

0

Чтобы начать с решения, я предполагаю, что демон будет идеальным выбором.

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

Теперь вы получили данные в пользовательском пространстве, вы можете обращаться с ним в соответствии с вашими требованиями.

 Смежные вопросы

  • Нет связанных вопросов^_^