ahmed_sa Ответов: 1

Считывание штрих кода дополнительные значения цифр в C#


при считывании сканера штрих-кодов c# и получении значения считывания в переменной
МСГ это значение по этой позиции как 3300002266/р на отладку
но при чтении в блокноте или текстовом поле он читает правильно 30026
почему эти дополнительные цифры считываются и как сделать так, чтобы они считывались правильно, как 30026
мой код, как показано ниже
мои данные сканера считывателя, как показано ниже
Barcode read 2d for Items 

Barcode Device DataLogic Lite QW2100

MODEL QY2100

CLASS QY2120-BK

S/N G17079019


Что я уже пробовал:

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            TimeSpan elapsed = (DateTime.Now - _lastKeystroke);
            if (elapsed.TotalMilliseconds > 100)
                _barcode.Clear();

            // record keystroke & timestamp
            _barcode.Add(e.KeyChar);
            _lastKeystroke = DateTime.Now;
            //		e.KeyChar	52 '4'	char

            // process barcode
            if (e.KeyChar == 13 && _barcode.Count > 0)
            {


                string msg = new String(_barcode.ToArray());
                //  MessageBox.Show(msg);
                label1.Text = msg;
                _barcode.Clear();
            }
        }

1 Ответов

Рейтинг:
0

Dave Kreskowiak

Ну, я могу сказать вам, что ваша идея о временном интервале, чтобы определить, является ли это сканер штрих-кода или человек на клавиатуре, - полная чушь. Windows-это общая система, и ваш код может не получить контроль над процессором в течение периода времени, который ваш код ищет, по существу убивая ваш штрих-код, даже если сканер все еще "печатает" его.

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

Что касается двойных символов, то вы не устанавливаете свойство Handled args события в True, чтобы сказать элементу управления, чтобы он не обрабатывал событие нажатия клавиши. По сути, вы позволяете событию ключа события произойти дважды, один раз в вашем собственном коде и один раз с помощью элемента управления, который имеет фокус.


ahmed_sa

Спасибо за ответ
но как предотвратить дубликат на цифре из кода можете ли вы сказать мне по деталям пожалуйста помогите мне
и можете ли вы дать мне ссылку или более подробно объяснить свою идею нет если это применимо я ее реализую

Richard Deeming

Как сказал Дэйв, набор то Handled собственность[^] к true чтобы предотвратить добавление ключей дважды.

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    ...
    e.Handled = true;
}