Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.22;
Скачать: CL | DM;

Вниз

Сканер штрих-кодов   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2007.07.22;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
2-1183108223
_Asph
2007-06-29 13:10
2007.07.22
QueryPerformanceFrequency


15-1181359354
MBo
2007-06-09 07:22
2007.07.22
Новый roadmap CodeGear


15-1182603423
Коллер
2007-06-23 16:57
2007.07.22
Уравнение прямой


15-1182431824
koha
2007-06-21 17:17
2007.07.22
В нашу сеть повадильсь кулхацкеры лазить


9-1156784627
Начинающий_1
2006-08-28 21:03
2007.07.22
OpenGL. Помогите оптимизировать код.