Как прочитать значение с простого USB-устройства?

У меня есть чрезвычайно простое USB-устройство. Драйвер не предоставляется, и инструкции заключаются в том, чтобы открыть редактор и манипулировать устройством (давайте не будем путать проблему, обсуждая устройство), чтобы увидеть результат.

Конечно же, если я открою Блокнот в Windows и манипулирую устройством, в Блокноте появится текстовая строка.

Хорошо, похоже, что он пишет на stdin. Теперь я хотел бы написать программу Delphi, чтобы принять этот ввод и действовать в соответствии с ним...

Как мне лучше поступить?

Похоже, что форма не получает события KeyDown/KeyUp/KeyPress. Очень жаль, поскольку это позволило бы устройству «перебить» меня. Но, может быть, мне нужно провести опрос? Время от времени (как часто?) я могу пытаться читать из stdin, но что, если читать нечего?

Я надеюсь, что объяснил это понятно. Любой совет?


Обновление: ой, мой плохой - я не получал события KeyDown/KeyUp/KeyPress, потому что я забыл установить KeyPreview формы в True. Но я задаю вопрос Грегу, потому что он пытался помочь, и потому что HID выглядит интересно. Спасибо, Грег.


person Mawg says reinstate Monica    schedule 16.07.2011    source источник
comment
Если я открою Блокнот и манипулирую устройствами, в блокноте появится текстовая строка. Вы имеете в виду, что вы открываете файл на устройстве с помощью диалогового окна открытия файла, а содержимое файла, отображаемое в блокноте, представляет собой строку, которую вы хотите? Пожалуйста, будьте более точны. Если это так, просто откройте TFileStream на имени устройства и прочитайте его.   -  person mj2008    schedule 16.07.2011
comment
Я думаю, что лучшее, что вы можете сделать, это прочитать документацию на USB-устройство.   -  person kludg    schedule 16.07.2011


Ответы (1)


Похоже, ваше устройство использует класс USB HID (Human Interface Device) и ведет себя как клавиатура. Таким образом, вы будете читать с клавиатуры точно так же, как обычно, манипулировать устройством любым подходящим образом (сканировать штрих-код и т. д.), и нажатия клавиш будут проходить так, как если бы они были напечатаны.

person Greg Hewgill    schedule 16.07.2011
comment
+1 Спасибо, звучит хорошо. Я поищу компонент Delphi HID или пример исходного кода. - person Mawg says reinstate Monica; 16.07.2011
comment
Хотя при первом взгляде на HID возникает вопрос, не является ли он излишеством для этого приложения — просто чтение с клавиатуры? В любом случае, я буду читать больше о HID, так как это выглядит интересно. Спасибо. - person Mawg says reinstate Monica; 16.07.2011
comment
ой, мой плохой - я не получал события KeyDown/KeyUp/KeyPress, потому что я забыл установить KeyPreview формы в True. Но я награждаю вас вопросом, потому что вы пытались помочь, и потому что HID выглядит интересно. Спасибо. - person Mawg says reinstate Monica; 16.07.2011