Работа со сканером штрих кодов

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Добрый день! Взялся ради интереса за написание небольшой програмульки по учету складского товара. Решил прикрутить в нее сканер штрих кодов. Сам сканер на руках не имею и попробовать с ним поработать не могу, иду методом "слепого сапера".
Есть некое понятие о сканерах, что они подключаются в один из 3-х возможных портов RS-232(COM), USB, PS/2. в случаях с USB возможен виртуальный COM порт. В целом все они могут работать как клавиатура. Т.е. имитировать нажатие клавиш.
Написал маленькую прогу по имитации нажатия клавиш (предполагая что так работает сканер штрих-кода)

Код: Выделить всё

procedure TForm1.BTStart1Click(Sender: TObject);
begin
timer1.Interval:=strtoint(Edit2.text)*1000; // в Edit указана задержка таймера
timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
ix:integer;
begin
timer1.Enabled:=false;
 for ix:=1 to edit1.GetTextLen do   // В Edit1 указан цифровой код который должны имитировать
  begin
   keybd_event(Ord(edit1.text[ix]),0,0,0);
   keybd_event(Ord(edit1.text[ix]),0,KEYEVENTF_KEYUP,0);
  end;

end;
Смысл такой - запускаю прогу, ввожу нужный мне код (который должен якобы получить сканер) и за 2-3 секунды задержки успеваю переключится в окно с основной программой где ожидаю этот код. Код получаю в InputBox сообщении и тут вопрос - как быть дальше - пользователь должен нажать ОК или сканер умеет послать код возврата каретки (Enter #13)? И правильной функцией ли я имитирую ввод клавиатуры? Похож ли он с тем принципом, что выдает сканер?

P.S.
А может у кого есть более интересное предложение по решению задачи с получением кода со сканера?
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Ответить