Считать штрих код без поля ввода

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Считать штрих код без поля ввода

Сообщение gopstop2007 »

Подскажите уважаемые, может кто сталкивался, в какие event-ы нужно добавить вставки, чтобы считать штрих код сканером подключенным в клавиатурном режиме и без дополнительного поля.
Есть например только таблица, сканируем штрих код, например: 044052678911 в конце которого еще <13> (CR) и чтобы он без лишних телодвижений считался и добавился в таблицу.
Используется код

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

l_barcode = CLIPBOARD()
Спасибо заранее, за Ваше внимание.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Считать штрих код без поля ввода

Сообщение Игорь Столяров »

В случае сканера в разрыв клавиатуры - нужно ожидать события нажатия клавиши начала кода (???) в Prop:AlertKey
и далее получать из буфера клавиатуры последовательность цифр (или символов) до завершающего символа кода.
По принципу работы - это чем-то похоже на обработку ввода Locator Browse.

Гипотетически наверно такое сделать можно, но на практике всё-таки проще получить сразу весь код со сканера
в скрытое поле ввода и обработать завершение его ввода по событию Prop:Accepted этого поля. Я так думаю. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4559
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Считать штрих код без поля ввода

Сообщение finsoftrz »

С точки зрения интерфейса, клавиатурный ввод обычно ассоциируется с конкретным экранным контролом. Поэтому лучше оставить поле ввода, обеспечив передачу фокуса в него после открытия окна и сканирования. Если на окне только один list, то можно навесить alert и обрабатывать по аналогии с инкрементным локатором. Но по соображениям стандартизации интерфейса я бы так не стал делать. Без поля ввода можно использовать подключение сканера по сом порту и слушать его по таймеру в окне. Это решение хорошее, если сканер не нужно использовать в других программах, использующих только клавиатурный ввод.
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Считать штрих код без поля ввода

Сообщение kreator »

Поддержу Игоря Столярова и finsoftrz. Лучше оставить Entry поле. Я сделал и так и так. В таймере читаю com-порт, а обработка штрих-кода на Entry поле. Чтобы не писать два одинаковых обработчика.
We are hard at work… for you. :)
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Считать штрих код без поля ввода

Сообщение gopstop2007 »

Спасибо за нужную информацию,сам использую entry поле, просто подумалось - а вдруг... :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Считать штрих код без поля ввода

Сообщение Игорь Столяров »

gopstop2007 писал(а): 07 Ноябрь 2019, 22:26сканируем штрих код и чтобы он без лишних телодвижений считался и добавился в таблицу.
За неимением лучшего - Up-нем тему ! :)

Можно зайти на решение вопроса как делают в 1С. Там штрих-код всегда считывается сканером через F7.
Поэтому просто в сканере программируется префикс к считываемому коду как скан-код F7,потом мы в нужном окне ждём HOTKEY F7,
по нему открываем окно с полем и получаем в него штрих-код. Окно сразу закрывается, возвращая в BROWSE считанный код и т.д.

В таком решении есть скрытый плюс. Для EAN-13 неактуально, но для символьно-цифровых кодов (та же маркировка в Data Matrix) -
при использовании "клавиатурных" сканеров (USB HID), нужно делать перекодировку в зависимости от текущей раскладки клавиатуры и
нажатой клавиши CapsLock. Так вот проще всё это делать в одном общем окне для считывания всех штрих-кодов … :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4559
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Считать штрих код без поля ввода

Сообщение finsoftrz »

Чисто интуитивно, я бы не пошел по такому пути.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Считать штрих код без поля ввода

Сообщение Игорь Столяров »

Ну из неприятных вещей - только необходимость специально "по 1-эсовски" программировать сканер (что делается несложно).
Зато достигается желаемый результат, особенно если спрятать (HIDE) окно ввода штрих-кода.

Т.е. юзер работает с обычным списком, берёт сканер и считывает код, код добавляется в список. Всё.
Хорошая программа, хороший сканер — что еще надо человеку, чтобы встретить старость? ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
porutchik
Активист
Сообщения: 150
Зарегистрирован: 01 Февраль 2009, 5:35

Считать штрих код без поля ввода

Сообщение porutchik »

а почитать книжку сканера? там есть управляющие символы - сканируешь их и меняешь поведение сканера
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Считать штрих код без поля ввода

Сообщение Игорь Столяров »

porutchik писал(а): 01 Декабрь 2019, 7:07а почитать книжку сканера?
Это всегда полезно делать. Ведь именно в этой книжке написано, что префиксы и суффиксы скан-кода
программируются с помощью специальной утилиты настройки сканера, а не считыванием скан-кодов … ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
porutchik
Активист
Сообщения: 150
Зарегистрирован: 01 Февраль 2009, 5:35

Считать штрих код без поля ввода

Сообщение porutchik »

Игорь Столяров писал(а): 01 Декабрь 2019, 7:17помощью специальной утилиты настройки сканера, а не считыванием скан-кодов
у меня почему-то был именно такой
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Считать штрих код без поля ввода

Сообщение Игорь Столяров »

Ну может у Вас более продвинутая модель, а у меня бюджетные.
В любом случае, так или иначе (через утилиту или считыванием "зебры") можно настроить префикс считываемого скан-кода,
для открытия окна куда этот код будет приниматься и обрабатываться. Что и делается в 1С, но можно реализовать и в Clarion.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4559
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Считать штрих код без поля ввода

Сообщение finsoftrz »

Игорь Столяров писал(а): 01 Декабрь 2019, 6:17Ну из неприятных вещей - только необходимость специально "по 1-эсовски" программировать сканер (что делается несложно).
Зато достигается желаемый результат, особенно если спрятать (HIDE) окно ввода штрих-кода.

Т.е. юзер работает с обычным списком, берёт сканер и считывает код, код добавляется в список. Всё.
Хорошая программа, хороший сканер — что еще надо человеку, чтобы встретить старость? ;)
Во-первых, программировать сканер специально для работы в одной программе, когда он подключается к компьютеру с мультипрограммной средой, выглядит несколько нелогично.
Во-вторых, сканер в данном случае эммулирует нажатие на клавиатуре. С точки зрения интерфейса, результат должен попадать в поле ввода. Это ожидаемо для пользователя и соответствует стандартному подходу.
Кажется, что это все не так принципиально, реализовать можно действительно по разному. Но такие вот нюансы характеризуют стиль конкретного разработчика и продукта.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Считать штрих код без поля ввода

Сообщение Игорь Столяров »

Разрешите не согласиться по пунктам.
finsoftrz писал(а): 01 Декабрь 2019, 13:41мультипрограммной средой, выглядит несколько нелогично
Сканер подключается на рабочем месте продавца, где работает одна программа, а чаще всего это вообще одно окно программы. :)
finsoftrz писал(а): 01 Декабрь 2019, 13:41Это ожидаемо для пользователя и соответствует стандартному подходу
Для пользователя ожидаемо получить значение кода. (точка) И его не должно волновать, что ввод этого кода зависит от раскладки
клавиатуры и состояния нажатия управляющих клавиш. Вопрос преобразования - решает кассовая программа. В этом плане COM сканер
проще - он всегда возвращает одной и то же. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4559
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Считать штрих код без поля ввода

Сообщение finsoftrz »

Ну, Игорь, это уже манипуляция. :-)
Нигде не было написано, что речь про кассовую программу. Кассовый софт отдельная тема для разговора. Тем более, специализированный, а не "окно кассира" в контексте учетной системы. Там вообще считается, что сканеры должны подключаться через com порты, а не в разрыв клавиатуры. И клавиатура не должна иметь алфавита. И так далее. Могу много про это писать, но мне лениво и к теме не относится.
Когда вспомнили про желтых, то у меня даже ассоциации не возникло с кассовым софтом. Так как на 1с нет профессиональных кассовых программ. Когда такое нужно, то чаще работают с фронтолом, у них это мейнстрим.
C6/C11, ШВС, tps/btrieve.
Ответить