views:

144

answers:

2

Como faço para saber se é ou o meu teclado que é USB ou o meu leitor de barcode que também é USB ?

No delphi preciso saber quem enviou os dados ?


How do I know whether it is my keyboard or my USB barcode reader which is sending keystrokes to me program?

In Delphi, I need to know who sent the data?

(courtesy of Google Translate)

+2  A: 

Your barcode reader is probably presenting itself as a keyboard driver to Windows and so it's a little tricky (by default in Windows, there's no way to tell, if there's two keyboards attached, which keyboard sends a particular keystroke).

It might be doable using Windows Raw Input, which presents each device separately, but I don't have an example of using raw input in Delphi on hand.


Como Quem saber ESTÁ enviando Dados NA USB? Seu leitor de código de barras é, provavelmente, apresentando-se como um driver de teclado para o Windows e por isso é um pouco complicado (por padrão no Windows, não há nenhuma maneira de saber, se há dois teclados em anexo, que o teclado envia um keystroke particular).

Pode ser feita usando Windows Input-primas, que apresenta cada dispositivo separadamente, mas eu não tenho um exemplo do uso de entrada prima em Delphi na mão.


Also courtesy of Google translate

Dean Harding
Wow, the Google translation is pretty good.
NullUserException
@rock A human translation:O seu leitor de código de barras provavelmente está se identificando como um teclado para o Windows, então é um pouco complicado. No Windows, quando há dois teclados conectados, não é possível determinar qual deles enviou o keystroke.Talvez seja possível usando Windows Raw Input, que apresenta cada dispositivo separadamente, mas não tenho um exemplo em Delphi agora.
NullUserException
+3  A: 

Program your barcode reader to include prefix and postfix characters to the string, eg. STX + barcode + ETX. That string is basically impossible to create accidentally on keyboard. Then you can filter the input in the code.

Harriv