Сканер rs232 как настроить

Сканер rs232 как настроить

Главное меню

Статья про то, как избавиться от внешнего блока питания.

Сканеры есть с интерфейсом RS-232 и клавиатурным. Есть также сканеры с инерфейсом USB, но, по крайней мере все те, что мне попадались, фактически были либо USB HID устройством (т.е. фактически клавиатурным, но с разъемом USB, либо RS-232 сканером, к которому производитель добавил преобразователь USB-COM (USB Virtual COM port).

При использовании с компьютером и программой 1C предпочтительно использование сканера с интерфейсом RS-232 или USB Virtual COM. Дело в том, что штатная компонента для работы со сканером штрихкодов (по крайней мере текущая версия 8.0.8.4) «клавиатурные» сканеры вообще не поддерживает. То есть работать «клавиатурный» сканер конечно будет, но с рядом ограничений (должно быть активно окно программы 1С, в нем активна форма с активным поле ввода данных). Иными словами, оператор перед каждым сканированием штрихкода должен выполнять определенное действие (активизировать поле ввода), что снижает производительность труда.

С RS-232 сканерами такого не происходит, так как их работа обеспечивается компонентой 1С:Сканер штрихкода. Она работает самостоятельно, поэтому главное — чтобы 1С была вообще запущена. Штрихкоды будут обрабатываться, даже если активно другое приложение.

Но COM порт имеет одну особенность: в отличие от клавиатурного и USB портов, он не предусматривает подачу на подключенное устройство питания. Конечно можно брать питание от одной из сигнальных линий, но этого хватает только для совсем маломощных устройств, вроде компьютерных мышек. Поэтому к COM сканеру всегда прилагается внешний блок питания, а интерфейсный кабель сканера содержит разветвитель, куда этот блок питания подключается.

Вот если блок питания был нормального размера, то его еще можно было бы потерпеть. А то обычно прилагаются такие, что хоть за голову хватайся. Например, в комплекте к достаточно дорогому Metrologic (теперь — Honeywell) MS1690 (стоимостью на 01.06.2010 порядка 13 т.р.) идет блок питания не иначе как из стратегических запасов времен войны в Въетнаме, да и кабель 220V у него такой что можно электроплиту подключать. (Для сравнения — справа обычный блок питания от сотового телефона, выдающий такое же напрядение: 5V и даже больший ток: 1А против 0.65А у метролоджиковского):

Этот блок питания нередко откровенно «мешается» на рабочем месте пользователя. Особенно плохая ситуация получается, когда сканер надо подключить к ноутбуку, и приходится использовать еще и кабель-переходник USB-COM. К тому же ноутбук стоит на столе а не под столом — в результате перед нами уже 4 кабеля — кабель сканера, кабель USB-COM, кабель к блоку питания и кабель 220V самого блока питания.

Вобщем увидев всю эту кучу проводов на своем столе я сразу озадачился тем, каким образом от этого блока питания избавиться. Изучив параметры сканера (5,2V, макс. потребляемый ток 400 ма, средний 150 ма) возникла мысль вывести двумя проводками питание из переходника USB-COM, припаять к нему штекер, который и воткнуть вместо блока питания сканера. Немного смутила меня правда разводка на этом разъеме — «плюс» почему-то был снаружи (уж не сидит ли он на земле?), но прозвонив интерфейсный кабель сканера, а успокоился — земля была там, где ей и положено быть — на минусе.

Читайте также:  Плита дарина комбинированная с электрической духовкой не работает духовка

И тут я обнаружил в приведенной в инструкции схему одну интересную вещь — а именно разводку разъема RS-232 интерфейсного кабеля (53-53000-3) сканера:

Контакт Назначение
1 Ground
2 RS232 Transmit Output
3 RS232 Receive Output
4 DTR Input/Light Pen Source
5 Power/Signal Ground
6 —
7 CTS Input
8 RTS Output
9 +5V

То есть +5V уже заботливо подключено Метролоджиком / Ханивеллом в разъем COM порта на 9 ножку. Иными словами, достаточно подключить +5V на эту же ножку со стороны компьютера — и блок питания больше не нужен.

В моем случае сканер подключался к переходнику USB-COM:

Я разобрал этот переходник и припаял проводок между +5V от USB и этой самой 9й ножкой.

Отключил сканер от блока питания, подключил к переходнику, воткнул переходник в USB — заморгали светодиоды и сканер пропищал, подтверждая свою готовность к работе.

Ну, Metrologic MS1690 — устройство достаточно редкое, а как быть с популярными MS51xx Eclipse или MS95xx Voyager? Судя по документации — точно также.

Возможно ли что что-нибудь повредится ли что-нибудь в компьютере от подачи +5 В на 9ю ногу COM-порта? Думаю, что это маловероятно, т.к. когда Вы подключаете блок питания сканера, то эти самые +5V все равно попадают туда (с блока питания сканера). А вот другие устройства к переделанному разъему наверное подключать не стоит.

Примечательно, что напрямую про возможность питания от COM ни в инструкции к MS1690, ни в инструкции к MS95xx вообще ничего не сказано.

Обновлено 11.04.2015 20:03

Все права защищены 2021
Перепечатка информации возможна только при наличии
согласия администратора и активной ссылки на источник!

Источник

Работа с последовательным (COM, RS-232) портом из 1С:Предприятие 7.7 и 8.0

Последовательный порт на практике служит для подключения к компьютеру считывателей штрих-кодов, электронных весов, а также другого внешнего оборудования.

Статья описывает работу с последовательным портом в 1С:Предприятие 7.7 и 8.0.
Приведен пример исходного кода внешней компоненты (Delphi 6), которая заменяет типовую компоненту scanopos.dll, и умеет работать с двумя или более сканерами.

Интерфейс RS-232 был разработан в 1969 году рядом крупных промышленных корпораций и опубликован Ассоциацией электронной промышленности США (Electronic Industries Association — EIA). (http://ru.wikipedia.org/wiki/RS-232).

HyperTerminal

Программа HyperTerminal позволяет просматривать, что приходит на COM-порт.
Пуск-Программы-Стандартные-Связь-HyperTerminal

Программа Portmon для Windows

Автор: Марк Руссинович (Mark Russinovich)
Программа Portmon предназначена для отслеживания и отображения всей активности последовательных и параллельных портов в системе.
Скачать Portmon

Приобретение правильного сканера

Меня очень часто спрашивают: почему не работает сканер штрихкодов в 1С.

Штрихкодовые сканеры различаются интерфейсом подключения.
В частности, сканеры USB могут

  • имитировать клавиатуру (это проявляется тем, что штрихкод считывается в блокноте),
  • имитировать интерфейс RS-232
  • работать по USB без имитации чего-либо.

Все три варианта часто различаются шнуром, который реализует тот или иной интерфейс.

Для 1С наименее всего подходят клавиатурные сканеры: считанный штрихкод не попадет в процедуру ОбработкаВнешнегоСобытия.
Поэтому, если есть такая возможность, лучше заменить такой сканер на RS-232 или USB (имитация RS-232).
См. также раздел «Поддержка сканеров с клавиатурным интерфейсом» в конце этой статьи.
О подключения сканера штрих-кода через COM-порт — см. статью Книга знаний: v8: Подключение сканера штрих-кодов к 1С через COM-порт.

Существуют и более старые (не USB) варианты сканеров, которые подключаются «в разрыв клавиатуры».
Напишу еще раз: приобретения клавиатурных или имитирующих клавиатуру сканеров для работы в 1С следует избегать.

Эмуляция COM-порта при наличии USB-соединения

Имеется возможность представить порт USB «под именем» свободного COM-порта, например, при помощи драйвера (FTDI, сайт http://www.ftdichip.com), и работать с ним как с новым COM-портом.

Стандартные установки последовательного порта

Для своих опытов я использовал кабель для соединения портов COM1 и COM2.
Вы можете спаять такой кабель по схеме http://subscribe.ru/archive/tech.electronics/200104/21033223.html),
или приобрести его на рынке примерно за 70 рублей.

Читайте также:  Не работает кнопка открытия багажника мазда 3

Чувствительность к «горячему» подключению

Следует отметить, что COM и LPT-порты чувствительны к «горячему» подключению — соединяя включенные устройства, вы можете спалить порты (или что-то еще).
Поэтому перед подключением устройства я рекомендую отключать их от сети питания, и только потом их выполнять их электрическое соединение.
USB этим недостатком не страдает, и дозволяет «горячее» подключение устройств.

Посылка тестовых данных в COM-порт

Имея тестовый кабель, вы уже можете экспериментировать с внешними компонентами для 1С:Предприятие.
Посылку тестовых данных в порт я производил из пакетного (.BAT) файла MS-DOS. Содержимое моего файла test.bat:

mode com2 baud=9600 parity=n data=8 stop=1
type c:\test.txt >com2

В файле c:\test.txt введите несколько символов (например, 1234567890) и завершите — обязательно! — их символом перевода строки (нажатием Enter).

Программа, подключенная к другому концу кабеля, может быть тестовой программой TestComPort.exe (скачайте комплект, приведенный в конце статьи;
в программе надо выбрать порт — в данном случае COM1, нажать Открыть, и уже можно посылать в нее символы при помощи BAT-файла, в большом окне вы увидите принятые текстовые строки), конфигурацией для 1С:Предприятие, приложенной в этом же архиве, или стандартной конфигурацией наподобие «1С:Торговля и Склад», где активизирована работа со сканером, подключенным в последовательный порт (внешняя компонента scanopos.dll).

Получение внешнего события в 1С:Предприятие

Внешнее событие, например, со сканера, с другого внешнего оборудования, или просто сгенерированное программно, приходит в 1С (как 7.7, так и 8.0) в предопределенную процедуру
ОбработкаВнешнегоСобытия().

Эта процедура может располагаться в глобальном модуле или модуле формы 1С:Предприятие 7.7 или 8.0. Процедура принимает три входящих параметра: Источник, Событие и Данные.
Это три текстовые строки, которые могут принимать произвольные значения — в качестве Источника можно установить имя внешней компоненты, в качестве события — строку-идентификатор события, например, «BarCodeValue», а в качестве данных — данные от устройства, например, считанный штрихкод.

Инициализация внешней компоненты

Код процедуры ПриНачалеРаботыСистемы() в тестовой конфигурации выглядит следующим образом:

Первый запуск конфигурации необходимо производить под правами администратора или привилегированного пользователя Windows.
Это необходимо для любых внешних компонент или OLE-объектов, чтобы компонента (DLL) могла «прописать» себя в системный реестр Windows.

Пример работы с COM-портом

Рассмотренные ниже примеры работы с последовательным (COM-) портом будут использовать средства Windows API (системные функции CreateFile и т.д.). Для компиляции примеров потребуется Delphi версии 6 (впрочем, вы легко сможете переделать примеры под любой язык программирования, который поддерживает вызовы Windows API).

В конце статьи приведена ссылка, по которой вы можете скачать работающие примеры кода внешней компоненты (vk_rs232.dll) и упрощенного тестового примера (TestComPort.exe, который содержит 120 строк тестового кода). Рассмотренная в качестве примера внешняя компонента для 1С:Предприятие
умеет читать текстовые строки из последовательного порта, и представлять их как событие считывания штрихкода «BarCodeValue». Поэтому компоненту можно без изменений использовать, например, в конфигурации «Торговля и Склад» в качестве замены для штатной компоненты для считывания штрихкодов. Также компонента умеет записывать «встречные» данные в последовательный порт, если это необходимо для работы с устройствами (для сканеров штрих-кодов это не нужно).

Пример расчитан на передачу в устройство или из устройства текстовых строк, разделенных символами 13,10, что характерно, например, для сканеров штрихкодов.
Я использую фиксированные настройки ,
а также фиксированные настройки таймаута (чтение «отваливается» через относительно короткий промежуток времени, чтобы избежать зависания).
Вы можете переделать эти умолчания под ваше оборудование и требования к программному обеспечению.

Настройка сканера

Вы можете настроить сканер на те или иные завершающие коды (#13#10 и другие), а также изменить его настройки при помощи установочных штрихкодов, которые обычно поставляются в комплекте устройства.

Читайте также:  Lost alpha не работает пнв

Общая идеология работы с RS-232 в системе Windows

В MS-DOS (и ранних версиях Windows, включая 95 и 98), работа с последовательными портами часто производилась напрямую через порты ввода-вывода командами Ассемблера IN и OUT. Этот способ не поддерживают современные операционные системы, начиная с Windows NT. В них остается (надо сказать, довольно древняя) возможность работы с этими портами как с файлами.

Например, достаточно открыть файл с именем «COM1», чтобы можно было писать в него данные для внешнего устройства, и читать из него данные от этого устройства (входной и выходной поток данных не пересекаются).

Настройки параметров и таймаутов COM-порта производятся при помощи функций SetCommState и SetCommTimeOuts соответственно. Ссылка на работающий пример кода, который показывает эту идею более развернуто, приведена в конце статьи.

Конечно, есть возможность работать с COM-портом и «более простыми средствами» — вплоть до открытия файла с именем «COM2», записи строк в этот файл и чтения встречных данных от устройства из этого же файла.

Внешняя компонента, по сравнению с этим «простым» решением, добавляет возможность генерировать события считывания данных (например, штрихкодов со сканера) в асинхронном режиме, когда 1С не «замирает» до очередного считывания штрихкода, и не «крутится» в бесконечном цикле чтения, а получает внешние события, и реагирует на них в предопределенной процедуре ОбработкаВнешнегоСобытия(). Это удобно для пользователя, и не заставляет его нажимать на клавиатуре лишние клавиши перед считыванием штрихкода.

В качестве официальной справки по различным функциям Windows используйте MSDN, который можно приобрести на DVD или на 3-х CD. В качестве «источника и составной части» он входит в комплект средств разработки от Microsoft, или приобретается отдельно. Кроме того, MSDN выложен в интернете, и как правило, находится в первых строках запросов в поисковике Google по контрастному запросу наподобие «SetCommState».

Поддержка двух или более сканеров (08.03.2006)

Компонента теперь использует потоки (объект TThread) вместо таймера. Компонента содержит тестовый пример для работы с двумя объектами (например, двумя сканерами).

Настройка конца строки (12.07.2006)

Компонента понимает свойство КонецСтроки (в англоязычном написании — EOL).
По умолчанию — Симв(13)+Симв(10) в качестве последовательности, которая отделяет один штрихкод от другого.

Поддержка сканеров с клавиатурным интерфейсом (20.09.2006)

Компонента поддерживает перехват событий клавиатуры.

Это позволяет использовать сканеры с клавиатурным интерфейсом. Однако, нажатия на клавиши не подавляются. Строка очищается при каждой паузе между нажатиями на клавиши длительностью более 1 секунды. Событие генерируется по нажатию на клавишу Enter.
(есть другой способ подключения сканера штрих-кода в разрыв клавиатуры — см. статью Книга знаний: v8: Сканер ШК в разрыв клавиатуры в стандартных конфигурациях (ТиС, УТ))

Глубина буфера событий

Компонента позволяет выставить глубину буфера событий (свойство ГлубинаБуфераСобытий).
Это значит, что если компьютер занят рассчетами, а в это время приходят новые события, то они будут накапливаться только в пределах этого буфера (последующие события будут потеряны).

iEvent := nil;
pConnection.QueryInterface(IID_IAsyncEvent,iEvent);
iEvent.SetEventBufferDepth(300); //глубина буфера событий

Заключение

Мы рассмотрели работу с последовательным портом RS-232 из 1С:Предприятие. Различие между версиями 1С:Предприятие 7.7 и 8.0 в данном случае несущественно — внешние компоненты совместимы и могут использоваться в обеих версиях системы. Вы можете посылать данные в порт или считывать их из порта, чтобы управлять внешним устройством или принимать данные от него по протоколу RS-232. При помощи тестового кабеля, который соединяет два COM-порта, вы можете имитировать работу с оборудованием, даже не имея самого устройства в наличии.

Скачать тестовую конфигурацию и исходный код внешней компоненты вы можете по этой ссылке и этой.

Источник

Оцените статью