2012-06-04 2 views
0

У меня есть сканер штрих-кода, который работает как устройство HID. Каждый раз, когда штрих-код сканирует его, он переходит непосредственно на клавиатуру Windows, например, если я открываю блокнот, я могу видеть введенный там штрих-код.Как работают устройства HID при программировании?

Насколько я знаю программно, можно читать HID-данные с ваших HID-устройств.

Но что происходит, если пользователь уже находится в форме с контролем текстового редактирования? Отсканированный код войдет в текстовое поле.

Можете ли вы заблокировать входящий текст и сделать фоновую обработку?

Можете ли вы объяснить теорию, пожалуйста?

+0

Вы действительно хотите знать теорию фона о том, как работают устройства, или просто хотите перехватить штрих-код до того, как он попадет в текстовое поле? Это два разных вопроса. –

ответ

0

Несомненно, просто захватите нажатые клавиши, прежде чем они будут обработаны элементом управления и подавляют нормальное обращение с событиями. В VB.NET вы можете переопределить метод OnKeyPress в своей форме и установить KeyPreview в true, например.

+0

Я просто хочу знать теорию, как заставить ее работать не всю теорию HID. OnKeyPress, как мне узнать, какая из них - настоящая клавиатура и сканер штрих-кода? – user1008476

+0

Вы не можете отличить эти два. Для системы на этом уровне это просто событие клавиатуры, и * и ваша фактическая клавиатура, и сканер являются клавиатурами, насколько это касается ОС *. – Joey

+0

Я пытаюсь заставить его работать как HID, но я не могу получить эксклюзивный доступ, отключающий автоматический ввод штрих-кода внутри текстовых полей. Это моя главная проблема. Поскольку, когда пользователь вводит что-то в примере текстового поля, добавляя новый член, пользователь может передать карту на штрих-код, и номер будет введен в текстовое редактирование. Можете ли вы помочь в этом? – user1008476

1

Посмотрите, может ли ваш сканер штрих-кода эмулировать последовательный порт и просто читать данные непосредственно из последовательного порта в ваше приложение.

Это чище и дешевле, чем глобальный крючок для клавиатуры. Когда я смотрел на это некоторое время назад, я обнаружил, что большинство USB-сканеров штрих-кодов могут эмулировать последовательный порт, это - cinch для чтения данных последовательного порта на большинстве языков программирования. Я, случается, делал свое на Java, я опубликовал пример в ответе на вопрос this.

2

Вы можете настроить сканер для использования настроек USB-HID (POS). Ваше техническое описание штрих-кода для устройства сканера должно иметь его. Я использую этот проект для тестирования моих сканеров. http://www.codeproject.com/Articles/18099/A-USB-HID-Component-for-C

+0

Я просто хотел бы пояснить, что после столь многого оглядываясь и видя, что практически все рекомендуют серийный порт USB как «более чистый» и менее «дорогой», и не понимая, что есть горячее подключаемое решение, которое может творить чудеса (fsck вам COM-порт с вашими необработанными разъединениями и откажитесь поделиться своими портами!), я наконец нашел ваш ответ! –