gifts2017

Работа с промышленными сканерами штрихкодов Symbol из 1С по протоколу SNAPI через Zebra Scanner SDK

Опубликовал Сан Саныч (herfis) в раздел Оборудование - Сканер штрих-кода

Промышленные сканеры Symbol - штука недешевая. Зато имеют надежное исполнение, абсолютно всеядные и универсальные, беспроводные, а самое интересное - имеют расширенные возможности управления через собственный протокол SNAPI (ну, есть и попроще у них сканеры, но я про самые вкусные - беспроводные и со SNAPI). Эти возможности позволяют реализовать эффективные сценарии работы. Одна проблема - нигде не смог найти примеры для работы из 1С по этому протоколу. Все стандартные протоколы поддерживаются, но ведь смак именно в расширенных возможностях! Поэтому пришлось копаться самому...

Насчет эффективных сценариев, простейший пример: работник склада идет со сканером в дальний шумный угол и начинает сканирование. А программа дает ему обратную связь! Т.е. если товар по каким-то причинам не проходит - можно подавать непосредственно на сканер разные звуковые и световые сигналы, сигнализирующие о характере проблемы или вообще заблокировать сканирование, чтобы работник вернулся к компьютеру и разобрался с проблемой перед продолжением сканирования. Очень удобно. Одна проблема - не смог найти готовых примеров работы из 1С.

Начал гуглить более глубоко. И (внезапно!) оказалось, что у производителя есть такая штука, как Zebra Scanner SDK. Это готовый набор (внимание!) com-компонент и примеров кода, для работы с любыми их сканерами и по любым протоколам, в том числе и по протоколу SNAPI! Просто, судя по всему, на 1С это никто не натягивал. А примеры кода и готовые демо-приложения есть на C++, C# и даже Java. Вроде как для linux тоже есть, но я в ту сторону не копал. Скорее всего там обычные библиотеки.
Оставался больной вопрос - не уткнется ли 1С в какие-то ограничение использования, а главное - получится ли подписаться на внешнее событие при сканировании штрих-кода. Не без проблем в процессе, но в итоге все получилось!
Рабочую обработку прикладываю за 10sm (хоть она и простейшая, но мало кому надо) и сразу извиняюсь за неприятный сюрприз - код полностью в английской нотации. Не знаю, зачем я это сделал. Смешанный язык резал глаз и хотелось глянуть, как 1С выглядит для буржуев (вполне себе нативно выглядит).
В качестве компенсации и кому дорого, просто опишу два момента, над которыми пришлось попотеть - подключение и подписка на событие. Остальное все тривиально и по документации.
Подключение (да-да, это код 1С):
    try
        CoreScanner = new COMObject("CoreScanner.CoreScanner");
    except
        Message("Error driver search: " + ErrorDescription());
        failure = true;
        return;
    endtry;
    
    Status = -1;
    ScannerTypes = new COMSafeArray("VT_I2", 1);     // array of integer(x2 byte), size=1
    ScannerTypes.SetValue(0, 1);                     // 1 - all scanner types
    CoreScanner.Open(0, ScannerTypes, 1, Status);
    if Status <> 0 then
        Message("Error scanner connection: " + Status + " " + ErrorCodes[Status]);
    endif;

Подписка на событие сканирования (тоже код 1С):

    AddHandler CoreScanner.BarcodeEvent, BarCodeScanned;
    
    Status = -1; Response = "";
    
    CoreScanner.ExecCommand(ScannerCommands["REGISTER_FOR_EVENTS"],
        StrTemplate("<inArgs><cmdArgs><arg-int>%1</arg-int><arg-int>%2</arg-int></cmdArgs></inArgs>",
            1, // number of events
            ScannerEvents["SUBSCRIBE_BARCODE"]),
        Response, Status);
        
    if Status <> 0 then
        Message("Error subscribing to barcode scanning event: " + Status + " " + ErrorCodes[Status]);
    endif;

Где ErrorCodes, ScannerEvents, ScannerCommands - это просто соответствия 1С с кодами/названиями. Нужные значения можно взять из документации Zebra Scanner SDK (ну или готовые из обработки). BarCodeScanned - это как раз название процедуры 1С (принимающей два параметра), которая будет автоматически вызываться при сканировании штрихкода. Все остальные приемы работы с библиотекой - тривиальны.

Скачать файлы

Наименование Файл Версия Размер
ScannerTestSymbolSNAPIZebra.epf
.epf 9,36Kb
25.10.16
0
.epf 9,36Kb Скачать

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа