- Описание
- Подробнее
Описание
Сегодня сложно представить автоматизацию продаж без сканера штрихкода. Сканеры бывают разных видов. Самый простой из них – клавиатурный. При чтении штрихкода клавиатурный сканер эмулирует нажатие клавиш на клавиатуре. В этой видимой простоте понимания его работы кроется искушение его купить, ведь для подключения такого сканера не требуется драйвер, и если вспомнить, что к кнопкам на форме в 1С можно привязывать клавиши, то вырисовывается возможность использовать единый программный модуль и для работы пользователя со сканером, и с клавиатурой. Достаточно поместить на форму кнопки с цифрами и привязать к ним обработчик нажатия.
Но возникает два вопроса, первый – как определить, что работает сканер, а не пользователь мышкой нажимает кнопки? Второй связан с первым: как отследить окончания ввода данных со сканера?
Клавиатурный сканер – веселое устройство, особенно, если он дешевый, такой как Chiperlab 1000. Программы вроде 1С вообще не отличают сигналы от него и от клавиш на клавиатуре. При этом бывают чисто клавиатурные сканеры, и бывают usb-сканеров с возможностью подключения в разрыв клавиатуры. Со вторыми более-менее проще: достаточно поставить эмулятор com-порта, и за работу сканера начинает отвечать драйвер. Но чисто клавиатурный сканер такого сделать не позволяет, и для того, чтобы понять, откуда пришли данные, со сканера или с клавиатуры, и требуется бубен.
Будем исходить из того, что данные от сканера приходят пакетом, а промежуток между нажатием клавиш с клавиатуры вручную достаточно большой. Таким образом, мы можем допустить, если пользователь вводит цифры с интервалом менее 300 миллисекунд, то скорее всего он читает штрихкод сканером. Таким образом, нам достаточно отслеживать промежуток между «нажатием» кнопок на нашей форме, чтобы определить, что делает пользователь: вводит ли он данные мышьй, с клавиатуры, или пользуется сканером. Пока данные поступают с малым интервалом, будем записывать их в стек, а впоследствии обрабатывать.

