Форум: "WinAPI";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
ВнизСканер штрих-кодов Найти похожие ветки
← →
MU © (2006-11-30 17:31) [0]Добрый день.
Есть сканер штрихкодов, который по радиодоступу посылает считанные штрих коды в разрыв клавиатуры.
Задача состоит в том, чтобы отличить этот поток от обыкновенных параллельных нажатий на этом же компьютере.
что посоветуете? в какую сторону рыть?
← →
Array © (2006-11-30 17:36) [1]
> MU © (30.11.06 17:31)
да ни в какую... просто обрабатывать эти сообщения тока в том случае если зделан запрос на ввод штрих-кода сканером
или выкавырять клавиатуру...
← →
MU © (2006-11-30 17:38) [2]наверняка же есть различия между одним способом ввода и другим - сканкоды, признаки нажати-отпускания клавиш
← →
MU © (2006-11-30 17:50) [3]извините господа, меня ввели в заблуждение и я вас запутал.
сканер включается не в разрыв клавиатуры а через USB
← →
Array © (2006-11-30 17:58) [4]
> сканер включается не в разрыв клавиатуры а через USB
а с ним ПО какоенить ?
← →
MU © (2006-11-30 18:05) [5]это пока что теоретический вопрос. конкретной модели еще не знаю. просто хотел узнать, какие пути есть для решения задач. у кого есть опыт?
← →
Array © (2006-11-30 18:11) [6]
> это пока что теоретический вопрос
ну тогда Вам сюда
http://delphimaster.net/view/2-1164362132/
← →
MU © (2006-11-30 18:23) [7]да спасибо, (очень смешно!)
я думаю (надеюсь), что там будет драйвер для вирт. COM-порта и это решит все проблемы.
← →
ev (2006-11-30 19:18) [8]да, там обязательно должен быть драйвер либо использоваться стандартный
лично я купил USB + блютулз
использую блютулз, через него так же эмулируется обычный ком порт и с ним работаю :)
← →
tesseract © (2006-12-01 10:03) [9]Решил проблему следующим образом - если символы вводяться со скоростью больше, чем например символв в 10 мс, то это явно сканер и можно сгенерировать прерывание.
← →
Zladey © (2007-02-10 10:56) [10]А нельзя как то отличить этот сканер от клавиатуры... по прерываниям,например?
tesseract ©
А как вы определяете скорость ввода символов?
← →
fd979 © (2007-02-10 11:15) [11]Обычно сканеры штрих-кодов выдают сканированное значение в активный control. Им может быть твоя компонента из TЕdit.
У меня есть такой сканер - он так работает. Обрабатываю OnChange и все прекрасно.
← →
Zladey © (2007-02-10 12:01) [12]это понятно... задача в том чтобы отличить ввод со сканера от ввода с клавиатуры...
← →
fd979 © (2007-02-10 15:58) [13]А тебе, что обязально ввод с клавиатуры нужен? Сделай просто РидОнли и все.
← →
Zladey © (2007-02-12 09:06) [14]дело в том, что не на Edit у меня код.. для сом сканера... и на форме тоже... шрих кодом можно команду нажать Add или END на форме.. мне нужно различие... узнать что вводятся симфолы именно со сканера , а не с клавиатуры
← →
fd979 © (2007-02-12 09:22) [15]Поставь KeyPreview формы True (design-time)
Затем на OnKeyDown можешь проверять изменился ли текст, если да, то с клавиатуры. А при изменении со сканера OnKeyDown не всплывет.
← →
fd979 © (2007-02-12 09:23) [16]Кстати OnKeyDown формы...
← →
tesseract © (2007-02-12 10:09) [17]
> Затем на OnKeyDown можешь проверять изменился ли текст,
> если да, то с клавиатуры. А при изменении со сканера OnKeyDown
> не всплывет.
Глобальный хук ставить надо, а не onKeyDown формы. Оператор прифигеет каждый раз фокус на контрол ставить.
← →
Zladey © (2007-02-12 10:26) [18]Не могли бы вы обяснить что за " True (design-time) "
а то в объект инспекторе ставлю ... OnKeyDown ловит и сканер..........
← →
fd979 © (2007-02-12 11:07) [19]
> Глобальный хук ставить надо, а не onKeyDown формы. Оператор
> прифигеет каждый раз фокус на контрол ставить.
Как раз если поставить KeyPreview не надо будет фокус на контрол ставить.
> Не могли бы вы обяснить что за " True (design-time) "
У формы есть такое свойство KeyPreview. Открываешь Object İnspector и ставишь это свойство True.
Если OnKeyDown ловит и сканер, тогда:
Сначала сделай так. Пропиши вот это:procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
ShowMessage(IntToStr(Key));
end;
Запусти программу. Нажми на сканер. Если правда то, что ты говоришь, тогда сработает FormKeyDown и покажет тебе код клавиши сканера запомни это число.
Потом меняешь всю эту канитель на:procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If Key = Число которое ты запомнил Then
begin
Здесь случай когда сканер сработал
end
else
begin
Здесь случай когда клава
end
end;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.047 c