Требования к разработке драйверов для сканеров штрихкодов
Система программ 1С:Предприятие поддерживает обмен данными с различными моделями сканеров штрихкодов по согласованной технологии (рис.1).Введение. . Внешние события от драйвера
Обновлено: 14.02.2008
Введение
Система программ 1С:Предприятие поддерживает обмен данными с различными моделями сканеров штрихкодов по согласованной технологии (рис.1).

Рис.1
Конфигурация системы программ «1С:Предприятие 8» взаимодействует с обработками обслуживания сканеров штрихкодов.
Обработки обслуживания сканеров штрихкодов взаимодействуют с внешними компонентами для сканеров штрихкодов (драйверами для интеграции с «1С:Предприятие 8»).
Внешняя компонента (далее по тексту «драйвер») может взаимодействовать:
- непосредственно с моделью сканера штрихкодов;
- с программным обеспечением (АРМ), поставляемым вместе со сканером штрихкодов;
- с драйвером сканеров штрихкодов низкого уровня, написанным по технологии OLE for POS (OPOS).
Общие требования к драйверу:
Драйвер должен:
- быть разработан в виде внешней компоненты (описание механизма создания внешних компонент приведено в документе «Документация по технологии создания внешних компонент» на диске ИТС в разделе «Технология создания внешних компонент» Методической поддержки 1C:Предприятия 8.1.);
- обеспечить возможность реализации функционала в полном объеме для подключаемого вида оборудования
- предоставлять набор свойств и методов для настройки и управления драйвером в соответствии с опубликованными на диске ИТС в разделе «Работа с торговым оборудованием» Методической поддержки 1С:Предприятия 8.1 требованиями к виду представленного на сертификацию оборудования
- предоставлять русскоязычные и англоязычные названия свойств и методов (например, Порт- Port, Скорость - Speed, Подключить() - Open(), СобытиеОбработано() - EventProcessed() и др.);
- поддерживать множественные подключения (в соответствии с идеологией COM-технологии), а также поддерживать работу с несколькими устройствами, если позволяют бизнес-процессы, в которых используется данное оборудование;
- при возникновении ошибки в работе предоставлять подробное описание произошедшей ошибки, позволяющее пользователю понять причину возникновения ошибки и способ ее устранения;
- при возникновении внештатных ситуаций (некорректные действия пользователя, отсутствие запрашиваемого метода или функции, передача некорректных значений и др.) корректно обрабатывать их. Не должно быть аварийных завершений работы драйвера и прочих некорректных действий драйвера, которые могут привести к нарушению нормальной работы пользователя.
Описание работы с драйвером
Начало работы с драйвером
Система 1С:Предприятие (в дальнейшем "система") инициализирует соединение с драйвером и загружает его. Далее устанавливаются конфигурационные параметры, необходимые для работы. Подключение к устройству выполняется при начале операции с устройством торгового оборудования. После подключения устройства система готова к приему событий от драйвера.
После отправки события драйвер должен приостановить отправку следующего и ожидать команды сверху о возможности продолжения отправки событий. Если результат обработки события положительный, то драйвер инициирует отправку следующего события, в противном случае требуется перепосылка последнего события, того, после которого драйвер приостановился. То есть из старых событий необходимо хранить только последнюю сформированную строку для отправки (при этом в драйвере при поступлении новые данные должны буферизироваться и высылаться по мере освобождения системы). Пример последовательности такой:
• Отправка События 1;
• Получен ответ СобытиеОбработано(Истина);
• Отправка События 2;
• Получен ответ СобытиеОбработано(Истина);
• Отправка События 3;
• Получен ответ СобытиеОбработано(Ложь);
• Отправка События 3;
• Получен ответ СобытиеОбработано(Ложь);
• Отправка События 3;
• Получен ответ СобытиеОбработано(Истина);
• Отправка События 4;
• Получен ответ СобытиеОбработано(Истина);
Завершение работы
Отключение от устройства выполняется при окончании операции с устройством.
Соединение с драйвером закрывается только при завершении работы системы.
Описание свойств
|
Описание свойств | ||||
|---|---|---|---|---|
| Название (alias) |
Тип |
Доступность |
Описание | |
| Чтение |
Запись | |||
Описание методов
|
Описание методов | |||||
|---|---|---|---|---|---|
| Название (alias) |
Параметры |
Возвращаемое значение |
Описание | ||
|
Имя |
Тип |
Описание | |||
| ПолучитьНомерВерсии (GetVersion) | - | - | - | BSTR | Возвращает номер версии драйвера |
| ПолучитьОшибку(GetLastError) | ОписаниеОшибки (ErrorDescription) |
BSTR [OUT] | Описание ошибки | LONG | Возвращает код и описание последней произошедшей ошибки |
| Подключить (Open) | МассивЗначений (Valuesarray) |
IDispatch* |
Массив значений для настройки подключения | BOOL | Подключает сканер штрихкодов |
| ИДУстройства (DeviceID) | BSTR [OUT] | Идентификатор устройства | |||
| Отключить (Close) | ИДУстройства (DeviceID) | BSTR [IN] | Идентификатор устройства | BOOL | Отключает сканер штрихкодов |
| СобытиеОбработано (EventProcessed) | ИДУстройства (DeviceID) | BSTR [IN] | Идентификатор устройства | BOOL | Оповещает драйвер о том, что событие системой было получено. Параметр "ФлагСостояния" указывает на успешность обработки. |
| ФлагСостояния (StateFlag) | BOOL [IN] | Флаг обработки события | |||
| ТестУстройства (DeviceTest) | МассивЗначений (Valuesarray) |
IDispatch* |
Массив значений для настройки подключения |
BOOL |
Выполняет пробное подключение и опрос устройства. При успешном выполнении подключения в описании возвращается описание устройства. При отрицательном результате возвращается описание возникшей проблемы при подключении. |
| ДополнительноеОписание (additionalDescription) |
BSTR |
Описание результата выполнения теста | |||
Дополнительное описание:
"МассивЗначений" (пример значений для устройства, подключаемого на последовательном порту)
Тип данных "1С:Предприятия 8" - Массив.
| Наименование параметра | Наличие в структуре | Типы данных | Описание параметра |
|---|---|---|---|
| Порт (Port) | Обязательное | LONG | Номер последовательного порта (1 соответствует порту COM1) |
| Скорость (Speed) | Необязательно | LONG | Скорость последовательного порта, на которой подключается устройство (передается непосредственно значение 9600, 19200, 57600, 115200 и т.д.) |
| Четность (Parity) | Необязательно | LONG | Задает значение, определяющее метод контроля четности при работе с периферийным устройством по COM-порту (Значения: 0 - "Нет", 1 - "Нечетность", 2 - "Четность", 3 - "Установлен", 4 - "Сброшен") |
| БитыДанных (DataBits) | Необязательно | LONG | Задает значение, определяющее количество бит данных при работе с периферийным устройством по COM-порту (Значения: 7, 8) |
| СтопБиты (StopBits) | Необязательно | LONG | Задает значение, определяющее количество стоповых бит при работе с периферийным устройством по COM-порту (Значения: 1, 2) |
| Чувствительность (Sensitivity) | Необязательно | LONG | Задает чувствительность клавиатурного ввода при работе с периферийным устройством через клавиатурный порт |
| ПрефиксШК (BarcodePrefix) | Необязательно | BSTR | Устанавливает префикс штрихкода |
| СуффиксШК (BarcodeSuffix) | Обязательное | BSTR | Устанавливает суффикс штрихкода |
Внешние события от драйвера
Во
времяподключениядрайвервозвращаетпараметр "Идентификаторустройства". Данныйпараметриспользуетсявдальнейшемдрайверомдляуказанияисточникасобытия (устройства) приотправкесобытия, атакжеконфигурациямидляопределениясвязаннойссобытиемобработкиобслуживания. Идентификаторустройствадолженбытьуникальнымдлякаждогоподключения, дляэтогопредлагаетсявестисопоставление«Подключенноеустройство-Идентификаторустройства», добавляяновыестрокиприподключениикустройствуиудаляяприотключенииотнего. Т.е. драйверпривызовеметодаПодключить() долженсформироватьновыйидентификаторустройства (предлагаетсявкачествеименииспользовать GUID ввидупростотыегополученияпрограммнымпутем) ипередатьввыходномпараметре.
При наступлении событий в драйвере в систему можно посылать сообщение о возникновении внешнего события. При посылке сообщения о внешнем событии необходимо указать: источник события (Идентификатор устройства), наименование (тип) события и данные.
Описание аргументов событий
Имя события – "ЧтениеШтрихкода" ("BarcodeReading")
Данные – значение считанного штрихкода без префикса и суффикса. Для передачи данных используется тип данных "Строка" (BSTR).
Имя события – "ОшибкаВДрайвере" ("Error")
Данные – описание ошибки.
Событие наступает, если в процессе работы драйвера возникли ошибки.