У меня 2D-сканер штрих-кода, настроенный как устройство ввода HID (действует как обычная клавиатура). Я планировал провести различие между вводом с клавиатуры пользователя и вводом сканера штрих-кода путем поиска префикса и суффикса, который сканер штрих-кода может добавить к отсканированным символам.
В настоящее время я настроил сканер штрих-кода для использования ASCII 0x02 ( Начало текста) в качестве префикса и 0x03 (Конец текста) в качестве суффикса.
Как я могу обнаружить эти специальные входы ASCII в C#? Я использую KeyEventHandler для обнаружения ключевых вводов в PreviewKeyDown, а также PreviewKeyUp.
Я пробовал:
public MainWindow()
{
this.PreviewKeyDown += new KeyEventHandler(PreviewKeyDownEventBarcodeScanner);
this.PreviewKeyUp += new KeyEventHandler(PreviewKeyUpEventBarcodeScanner);
}
private void PreviewKeyDownEventBarcodeScanner(object sender, KeyEventArgs e) {
int vkey = (int)KeyInterop.VirtualKeyFromKey(e.Key);
stringOfVKeyInputs += vkey.ToString() + " ";
stringOfKeyToTextInputs += e.Key.ToString();
}
К сожалению, ни один из 2 вариантов (сохраненных в 2 строках) на самом деле помог обнаружить специальные входные данные.
- e.Key.ToString () всегда просто выводит "System" для входов 0x02 или 0x03.
- KeyInterop.VirtualKeyFromKey (e.Key) дает 0x00 0x00 в качестве выхода для входа ASCII 0x02; и 0x00 0x00 0xD в качестве выхода для входа ASCII 0x03 (что плохо, потому что 0xD - это VKEY_RETURN).
Есть ли способ получить действительный код ASCII ввода?