- Как сканер с COM портом заставить работать “в разрыв клавиатуры”
- Через программу ComKey
- сканер штрих кодов COM-порт или разрыв клавиатуры?
- Установка префикса для сканера MINDEO CS2190 для работы с 1С в режиме разрыва клавиатуры
- Мой опыт подключения сканеров штрих-кода в RDP
- Проброс COM- портов
- Настройка сканера ШК в 1С
- Режим разрыва клавиатуры
- Режим COM- порта
- Настройка префикса штрих-кода
- Дополнительные замечания
- v7: Подключение сканера ШК в разрыв клавиатуры.
Как сканер с COM портом заставить работать “в разрыв клавиатуры”
Интерфейс сканера штрихкодов “в разрыв клавиатуры” работает как эмулятор клавиатуры и набирает кнопки, соответствующие символам сканируемого штрихкода. То есть, если в Windows запустить блокнот и отсканировать штрихкод, то мы увидим его в рабочей области блокнота. Работа и настройка с интерфейсом проста и не требует установки доп драйверов. А некоторые программы работают только через “разрыв клавиатуры”. Неудобство же заключается в том что необходимо следить за текущей раскладкой клавиатуры (должна соответствовать штрихкоду) и курсор должен находится в поле ввода штрихкода.
Работа в режиме COM порта более надежна, но зачастую требует предварительной установки драйверов и настройки для программ, в том числе и 1с.
Сканеры штрихкодов не всегда имеют интерфейс “в разрыв клавиатуры”, но можно заставить их работать в этом режиме.
Через программу ComKey
Скачиваем и запускаем программу – она появляется в трее:
По правой кнопки мыши вызывается меню настроек, где указывается Порт и Скорость,которые соответствуют установленному сканеру
Если все указано верно, то сканер работает в разрыв клавиатуры.
Теперь остается добавить ярлык в папку Автозагрузки Windows. Но у меня выявилась проблема: порт и скорость не сохранялись после перезагрузки.
Эти параметры на время сеанса программа хранит в HKEY_CURRENT_USER\Software\RKD\ComKey\SettingsПараметры Baud (REG_DWORD) – скорость
Значение Baud | Скорость |
00000001 | 110 |
00000002 | 300 |
00000003 | 600 |
00000004 | 1200 |
00000005 | 2400 |
00000006 | 4800 |
00000007 | 9600 |
00000008 | 14400 |
00000009 | 38400 |
и Port (REG_DWORD) – Порт.
Значение Port | Порт |
00000001 | COM1 |
00000002 | COM2 |
00000003 | COM3 |
00000004 | COM4 |
Сделал Bat файл, который прописывает параметры и потом запускает ComKey :
сканер штрих кодов COM-порт или разрыв клавиатуры?
Приветствую!
Уважаемые форумчане, подскажите, как лучше настроить сканер, чтобы удобнее было им пользоваться?
я правильно понимаю, что если настроить через COM-порт, то сканировать будет возможно только в поля, предназначенные для этого конфигурацией?
а если настроить как клавиатуру, то то будет возможно считать данные в любое поле (поиска и т.д.)?
или я заблуждаюсь?
>Вы в торговом оборудовании создаете строчку с вашим сканером, указываете нужный порт, тестируете устройство, если все ОК
именно так и сделал.
при тестировании всё ОК
поскольку сам не 1с-ник, но помочь людям надо!
есть у 1с какие-нибудь доки, какие формы в комплексной автоматизации поддерживают работу со штрих кодами?
(14) Физический COM-порт сам никогда не меняется, если только его руками не поменяешь.
А вот виртуальный USB=>COM, частентко, есть такая болячка в винде.
Лечение:
<запрет переопределения USB устройств>
определяем VID и PID устройства через диспетчер устройств — сведения — ид оборудования
например: USB\VID_11CA&PID_0207&REV_0100
в реестре: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags
добавляем параметр — IgnoreHWSerNumXXXXYYYY=hex:01, где XXXX = VID, а YYYY = PID
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags]
«IgnoreHWSerNum11CA0207″=hex:01
Установка префикса для сканера MINDEO CS2190 для работы с 1С в режиме разрыва клавиатуры
Инструкция по установке префикса для сканера MINDEO CS2190 для работы с 1С Предприятие в режиме разрыва клавиатуры.
Рассмотрим настройку сканера MINDEO CS2190 с USB кабелем для работы с 1С Предприятие в режиме разрыва клавиатуры или имитации клавиатуры.
Сам сканер легко подключается к компьютеру в любой порт USB, и Windows быстро и легко сама устанавливает необходимые драйвера. После чего сканер готов работе, и это можно проверить сканированием в блокнот. Но для работы сканера с 1С, которая находится еще удаленно на терминале, придется немного изменить настройки сканера.
Сканер MINDEO CS2190 может имитировать подключение в след. вариациях:
- В режиме HID keyboard
- В режиме USB virtual COM (виртуальный порт COM)
Настройка.
1. Для включения режима клавиатура, необходимо просканировать след. штрихкод:
2. Далее необходимо включить имитацию задержки ввода символов, тк при передаче данных сканером окно ввода штрихкода быстро закрывалось. Для соединения с 1С по RDP мне было достаточно 40 мс. Сканируем сканером это значение:
Примечание: альтернативный вариант вызова задержки: несколько раз вызвать нажатие клавиши F7
3. Для вызова в 1С окна ввода штрихкода, необходимо в качестве префикса штрихкода передавать символ нажатия клавиши F7. Добавим данный префикс. Сканируем последовательно сверху вниз:
Далее сканируем закрывающую операцию:
4. Сканер после ввода штрихкода автоматически имитирует нажатие Enter, поэтому суффикс к штрихкоду добавлять не требуется. Но на всякий случай опишу как это сделать с данным сканером:
сканируем последовательно сначала первую колонку, затем вторую
Полная таблица ASC кодов символов, если нужно вызвать нажатие другой любой клавиши или символа:
После проведенных манипуляций, сканер при сканировании будет сначала нажимать кнопку F7, затем заполнять сканируемый штрихкод и нажимать Enter.
Имея такой алгоритм ввода, можно без труда в 1С написать соответствующие обработчики на создание новой номенклатуры при ненайденном штрихкоде и реализовать автозаполнения документа в 1С.
Полная документация по сканеру доступна с офф. сайта производителя.
Мой опыт подключения сканеров штрих-кода в RDP
Мне пришлось настраивать подключение порядка 10 сканеров штрих-кода по RDP . Использовались Cipher Lab 1000, 1266 и 1562.
Раньше никогда этого не делал, поэтому делюсь опытом.
Проброс COM- портов
Сканер подключается к компьютеру или непосредственно в реальный COM -порт или в USB , но даже в этом случае он занимает виртуальный COM -порт ( VCOM ).
Проброс портов делается элементарно, нужно в свойствах RDP подключения указать галочку «Использовать порты».
Настройка сканера ШК в 1С
Существует два способа подключения сканера штрих-кода к 1С – через работы в режиме разрыва клавиатуры и через COM -порт.
Режим разрыва клавиатуры
В режиме разрыва клавиатуры сканер просто набирает клавиши, которые соответствуют символам штрих-кода. Не требуется никаких драйверов, чтобы сканер заработал в 1С.
Во всех типовых конфигурациях по кнопке F 7 открывается окно ввода штрих-кода. Поэтому достаточно сканеру запрограммировать префикс F 7 и все, он будет поддерживаться 1С.
Если конфигурация дорабатывалась и в некоторых участках забыли прописать типовую поддержку F 7, проще дописать эту поддержку. Но в качестве альтернативы можно использовать драйвер Атол старых версий, где выбрать в качестве порта «Разрыв клавиатуры».
Новые версии драйверов Атол платные, а бесплатные делают 10-секундную задержку перед обработкой штрих-кода.
Способ прост для подключения, но неудобен в работе.
- Нужно следить, чтобы была включена правильная раскладка клавиатуры.
- При использовании префикса курсор должен стоять внутри таблицы, иначе F 7 не срабатывает.
- Буквы при наборе в RDP часто теряются, и сканер считывает усеченные штрих-коды.
Поэтому лучше все же, если используется разрыв клавиатуры, не использовать драйвер Атол (это лишние потери времени и символов), а просто запрограммировать префикс F 7.
В моем случае был интересный глюк – буквы на некоторых штрих-кодах преобразовывались в верхний регистр. Я долго мучался, но мне подсказали, что нужно включить режим посимвольной передачи штрих-кода, а не пакетный, который стоял по умолчанию.
Режим COM- порта
Работает более быстро и надежно. Событие в 1С подхватывается независимо от раскладки клавиатуры и текущего активного элемента в форме.
Настраивается просто – указывается COM -порт и все.
Драйвер Атол можно использовать только старых версий. Для сканера это не имеет особого смысла, поэтому лучше применять бесплатный драйвер Scanopos от 1с.
Но я столкнулся с ситуацией, когда в некоторых комбинациях компьютеров и сканер атоловский драйвер подключал сканер только один раз, а потом COM -порт оказывался занятым, а драйвер scanopos вообще вешал терминальную сессию. Причем такая проблема возникала только на дорогих сканерах. Просто CipherLab 1000 работал нормально.
Случайно нашел тему об этом и решение тут. Там один комментатор писал, что когда он заменил scanopos предложенной версией этой компоненты, то чуть не заплакал – все заработало.
Действительно, я скачал компоненту и даже в моих проблемных связках все заработало. Автор утверждает, что проблема возникает, когда сканер подключен не в реальный COM -порт, а в виртуальный ( VCOM ).
Конечно, немного странно использовать noname -решение, но оно работает, а сканер в COM удобнее для пользователя, чем в разрыв клавиатуры, поэтому почему бы и нет. Может быть, через 2 года, когда эта версия станет неактуальна, 1с починит свой scanopos для нормальной работы с VCOM по RDP .
Но возникла другая проблема – в 1С от сканера не доходил первый символ 0 штрих-кода. Видимо, драйвер преобразовывал штрих-код в число и терял ноль.
Я достаточно много времени потратил на поиск решения, но все решилось просто – достаточно установить любой префикс и прописать этот префикс в подключении торгового оборудования. Я использовал для общности F7.
Настройка префикса штрих-кода
Чтобы настроить префикс F 7 пришлось помучаться.
У всех сканеров код этой клавиши разный, поэтому я заглянул в таблицу шестнадцатеричных кодов:
Но ошибся и вместо шестнадцатиричного 15 (десятичтного 21) запрограммировал префикс 51. Потом понял, что не то, когда сканер в разрыв клавиатуры не нажимал F 7.
Сама процедура программирования префиксов тоже описана не явно, пришлось писать себе памятку, переводя язык инструкции на нормальный человеческий:
1. Считать ШК «Вход в конфигурирование»
2. Считать ШК «Установка префикса»
3. Считать ШК с цифрами «1», «5» для клавиши F7
4. Считать ШК «Validate»
5. Считать ШК «Update»
В моем случае я пропускал Validate , а без этого префикс не ставился.
Дополнительные замечания
Ездить каждый раз к пользователям сканеров не получалось. Поэтому я научил одного сотрудника на месте распечатывать нужные страницы из руководства и сканировать нужные мне последовательности команд.
Есть специальная программа Scan Master , которая может назначать префикс и делать другие настройки для разных моделей сканеров. Но она работает только со сканерами, подключенными через COM , а не в разрыв клавиатуры.
Для проверки, работает или нет сканер, можно использовать все же драйвер Атол, программа «Драйвер устройств ввода». Нажать «Настройка свойств» — «Поиск оборудования», и далее просканировать любой штрих-код. Если сканер подключен нормально, будет отображен штрих-код.
v7: Подключение сканера ШК в разрыв клавиатуры.
Есть сканеры Motorola LS1203 которые работают в режиме эмуляции КОМ порта. Но юзеры открывают по 2-3 копии 1С на раб месте ( им так нужно ) под разными пользователями. Соответственно дает сканировать только в копии которую открыли первой, а в остальных нет.
Пришел к выводу, что проблему можно решить подключением сканера в режиме разрыва клавиатуры, так как клавиатуру монопольно занять как КОМ порт не получится.
Долбился я день, у меня уже начинает подгорать, директор чувствую с дня на день, пристроится с сзади.
7.70.009 ( Бух-Торг-Скл-Зарпл-Кадры-для Украины.)
ваш вариант с 3 открытыми копиями 1с и 1 сканером не взлетит никак стандартно
точнее надо смотреть драйвер клавиатурного сканера чистит ли буфер или могут 3 драйвера по очереди отработать — но такой вариант вам 100% тоже не нужен ибо тогда во всех 2-3 1С произойдет считывание ШК
В общем у меня ощущение что я что-то делаю не так, причем кардинально. В самой 1 с нет настоек клавы или выбора порта, все настройки которые доступны есть только здесь
http://s009.radikal.ru/i310/1507/56/634ccaf7dd29.jpg
ДУмаю я в корне лох.
// ===============================
Процедура ПриОткрытии()
Форма.ПанельИнструментов(0);
КонецПроцедуры
Данные = ШтрихКод;
Если ШтрихКодИмеетПрефикс=1 Тогда
Если Найти(«MPJS»,Лев(Данные,1))<>0 Тогда
// Штрих-код определяет товар
Данные=Сред(Данные,2,СтрДлина(Данные)-1);
Иначе
глКомментарий(«Формат считанного штрих-кода не предназначен для товаров»);
КонецЕсли;
КонецЕсли;
Лев2 = Лев(Данные,2);
Если Лев2 = «22» Тогда
// Используется свой внутренний штрих-код товара
// Штрих-код построен по коду товара и весу
ЗначДлинаКодаТМЦ = ?(глДлинаКодаТМЦ > 10, 10, глДлинаКодаТМЦ);
Если Тов.НайтиПоКоду(Сред(Данные,3,ЗначДлинаКодаТМЦ))=0 Тогда
Сообщить(«Товар с кодом «+Сред(Данные,3,ЗначДлинаКодаТМЦ)+» не найден»);
Возврат;
КонецЕсли;
Если ЗначДлинаКодаТМЦ Garykom
Вот тебе без всяких драйверов — вставляешь в нужную форму следующий код:
//переменные перехвата клавиатурного ШК
Перем ВСХ, спНажатыхКлавиш, ПропустиьСимвол,БуферШК;
Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши, Alt, Shift, Ctrl, Символ, ФСО)
Если ФСО=0 тогда Возврат; КонецЕсли; //легкий антидубль — формекс иногда подглючивает
//самопальный драйвер клавиатурного сканера
Если Форма.АктивныйЭлемент()=»ШКод» тогда Возврат; КонецЕсли; //тут фильтр по реквизитам формы, где ловить штриход ненужно
Если Форма.Закладки.ТекущаяСтрока()<>1 тогда Возврат; КонецЕсли; //тут фильтр по закладкам
Если (КодСимв(Символ)>47) и (КодСимв(Символ) 1 тогда Возврат; КонецЕсли; //тут фильтр по закладкам
Если Форма.АктивныйЭлемент()=»ШКод» тогда Возврат; КонецЕсли; //тут фильтр по реквизитам формы, где ловить штриход ненужно
Если (КодСимв(Символ)>47) и (КодСимв(Символ) Злопчинский