Страница: 1 | 2 |
Вопрос: Работа с сканером штрих кода?
Добавлено: 10.08.06 11:29
Автор вопроса: Sergey
Такой вопрос на форме есть поля для поиска по базе данных и есть поле для работы со сканером штрихкода тоесть я становлюсь на это поле сканирую штрихкод (там расшифровываю его и производится поиск в базе данных) так вот как можно перехватить на форме данные со сканера ведь не заставлять же пользователя перед сканированием обязательно становится на поле для работы со сканером штрих кода.
Ответы
Всего ответов: 21
Номер ответа: 1
Автор ответа:
Bombardier
ICQ: 42305746
Вопросов: 2
Ответов: 67
Web-сайт:
Профиль | | #1
Добавлено: 10.08.06 11:58
фишка в том, что сканер не определяется как какое-то специальное устройство, все модели с точки зрения компьютера - просто клавиатуры, при сканировании просто передается текст штрих-кода как нажатия клавиш и возврат каретки после...
Номер ответа: 2
Автор ответа:
Sergey
Вопросов: 5
Ответов: 10
Профиль | | #2
Добавлено: 10.08.06 12:11
Ну так в этом вся проблема. Я вот думаю а если через Form_KeyDown Form_KeyUp енто дело отлавливать там всегда 13 цифр и как ты говориш возврат каретки только вот мозги до кучи собрать не могу что-бы это красиво оформить.
Номер ответа: 3
Автор ответа:
avdey
ICQ: 219571279
Вопросов: 34
Ответов: 486
Профиль | | #3
Добавлено: 10.08.06 12:12
2Bombardier
Ты сам-то понял что сказал...
2Sergey
Я так понял, что тебе надо когда юзер начинает сканировать прога ставила фокус на нужное поле...
Посмотри в папке с дровами от ентого сканера, там где-то должен лежать *.OCX (многие производители периферических устройств поставляют OCX для своих устройств), подрубаешь его к проекту и... там че нето уже можно наваять... наверно)))))))))
Номер ответа: 4
Автор ответа:
Sergey
Вопросов: 5
Ответов: 10
Профиль | | #4
Добавлено: 10.08.06 12:40
Правильно допустим на форме есть Text1 и Text2 фокус стоит на Text2 но при сканировынии данные должны попасть в Text1.
Номер ответа: 5
Автор ответа:
Bombardier
ICQ: 42305746
Вопросов: 2
Ответов: 67
Web-сайт:
Профиль | | #5
Добавлено: 10.08.06 13:27
2avdey
я то как раз понял, так как софта который со сканерами ШТРИХ-КОДА работает много софта написал, нет там никаких драйверов, они просто в клавиатурный порт подключаются (как правило спец кабелем, в разрыв с клавиатурой) самые навороченные модели даже управляются просто сканированием спец кодов из мануала. Есть еще вариант сканеров с USB портами, но они определяются как HID устройство - по сути та-же клавиатура
Номер ответа: 6
Автор ответа:
_ICE_
ICQ: 354-671-214
Вопросов: 18
Ответов: 103
Профиль | | #6
Добавлено: 10.08.06 14:02
Да всё очень просто, есть два вида сканеров, одни подключаются к какому-нить порту, другие - напрямую в разрыв клавиатуры. У нас распространены именно вторые и работать с ними как со сканерами невозможно. Поэтому построй свою форму так, чтобы она автоматически определяла в какое поле должен быть ввод, используя события GotFocus и методы SetFocus для всех элементов управления формы. Вариант насчет счета 13 цифр - некрасиво.
Во-первых некрасиво с точки зрения программирования,
во-вторых до того, как произойдет ввод 13-ти цифр введется 1, 2, 3 ... цифры. Если они будут введены не в поле ввода штрих-кода, то как определить будут ли вводится еще цифры и ждать ли их, а может нужно уже начать обрабатывать введенные цифры, если введен не штрих-код?
в-третьих вводить можно не только штрих-коды, но и дисконтные карты со штрих-кодами, а они могут иметь не 13 цифр, мне попадалиь с 19-ю цифрами.
В общем фигня, по-этому советую построить форму ввода кода товара так, чтобы поле ввода кода было единственным видимым. Ввели штрих-код - показываем поле ввода оплаченной суммы или еще чего-то, и так далее.
И вообще в конце-концов есть свойство формы KeyPreview, если установить его в True, то любые символы, вводимые в пределах формы сначала вызывают событие KeyDown самой формы, а потом - элемента управления, куда был произведен ввод. Так можно централизованно отлавливать всю инфу, вводимую с клавиатуры.
Номер ответа: 7
Автор ответа:
_ICE_
ICQ: 354-671-214
Вопросов: 18
Ответов: 103
Профиль | | #7
Добавлено: 10.08.06 14:10
Насчет видимых полей - создай какую-нить переменную, которая будет хранить текущее состояние формы. В смысле: 1 - Ожидание ввода кода, 2 - ввод суммы, 3 - оформление проводки и др., и когда введен штрих-код переводи состояние формы в вид ввода суммы, потом - в вид оформления проводки по базе, после чего возвращаем в состояние 1. Таким образом ты всегда сможешь определить что именно у тебя сейчас вводится. Я делаю так: если форма находится в состоянии 1, то любое нажатие на клаву перехватывается формой и если поле ввода штрих-кода не в фокусе, то
TextBox1.SetFocus
TextBox1.Text = Символ, введенный с клавиатуры.
Так первый же символ в этом состоянии переводит фокус ввода в поле ввода штрих-кода. И так далее, вводим весь товар, проводимый за один раз. Заканчивая заказ оператор должен нажать эскейп, и форма переводится в состояние 2, показываются дополнительные поля и т.д.
Номер ответа: 8
Автор ответа:
_ICE_
ICQ: 354-671-214
Вопросов: 18
Ответов: 103
Профиль | | #8
Добавлено: 10.08.06 14:14
И еще фишка в том, что определить в фокусе поле ввода или нет нельзя (во-всяком случае я не умею), поэтому нужна булевская переменная TextBox1OnFocus, по умолчанию False, а при событиях TextBox1_GotFocus и TextBox1_LostFocus соответствующим образом меняющая свое значение. Т.о. если TextBox1OnFocus = True, то поле ввода в фокусе, и наоборот.
Номер ответа: 9
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #9
Добавлено: 10.08.06 15:05
Я сам подключал ручной сканер к базе 1С. Точно это было через COM-порт. Через клавиатурный не видел.
Номер ответа: 10
Автор ответа:
Bombardier
ICQ: 42305746
Вопросов: 2
Ответов: 67
Web-сайт:
Профиль | | #10
Добавлено: 10.08.06 15:11
согласен, есть модели и на com и на всякую экзотику типа специфичных IBM-овских интерфейсов для кассовых терминалов, просто большинство сейчас продаваемых сканеров именно с клавиатурным интерфейсом так сказать в целях заботы об удобстве пользователей
Номер ответа: 11
Автор ответа:
_ICE_
ICQ: 354-671-214
Вопросов: 18
Ответов: 103
Профиль | | #11
Добавлено: 10.08.06 15:15
Да просто они и на самом деле удобнее. Нам допустим не навязывали, а предложили: вот есть такие и такие, но через клаву удобнее - без лишних проводов, порты не заняты и работают без всяких дров, поэтому мы и выбрали через клаву да и большинство сейчас выбирает. А насчет фокусов ввода - это задача очень даже решаемая.
Номер ответа: 12
Автор ответа:
Bombardier
ICQ: 42305746
Вопросов: 2
Ответов: 67
Web-сайт:
Профиль | | #12
Добавлено: 10.08.06 16:07
можно еще проверить введенные данные на корректность, потому как каждый штрихкод содержит контрольную цифру, алгоритмы подсчета в открытом доступе. Если совпало, значит данные именно со сканера и это код, если нет то вероятнее всего от фонаря настучали по клаве )))
Номер ответа: 13
Автор ответа:
_ICE_
ICQ: 354-671-214
Вопросов: 18
Ответов: 103
Профиль | | #13
Добавлено: 10.08.06 16:17
Да вот это как раз и не обязательно, ведь сразу после ввода любая подобная система должна выполнить поиск по своей базе данных регистрацию этого кода, и если нет кода, то незачем и проверять - проводка-то все равно не пройдет
Номер ответа: 14
Автор ответа:
SyavX
Вопросов: 25
Ответов: 149
Профиль | | #14
Добавлено: 12.08.06 11:09
CyRax, Bombardier, могли бы вы поделиться частью исходников в которых описана работа со сканером штрих-кода... Судя по всему код у вас проверенный, рабочий, может пригодится...
Буду рад, если на мыло вышлите
Thx
Номер ответа: 15
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #15
Добавлено: 12.08.06 13:00
на работе разрабатывал ПО для работы с QR кодами. Вероятно в текстовое поле вбивает код не сам драйвер а приложение что идет в комплекте с драйверами. TI4000 кажись у мня сканер на работе валяется, так там он подключается к USB порту, но в драйвере весь вывод перенаправляется на виртуальный COM порт, с коего и читаются данные. Если их считывать вручяную, все ок... но какие-то чижики упростили мне работу, написали длл-ку, что отсылает данные в виде оконного сообщения.
ЗЫ
могу че-нить отослать, но оно на дельфи