Работаем с оборудованием Bizerba (Бицерба) из 1С

В публикации описано, как взаимодействовать с оборудованием Bizerba (этикетировщиками, весовыми терминалами и т.д.) из 1С при помощи компонент из пакета Connect.Brain

 

В интернете очень мало информации о взаимодействии с оборудованием фирмы Bizerba (ОБ). Немногочисленные ссылки приводят на Форум по программному обеспечению и оборудованию, а также на Внешнюю компоненту для взаимодействия 1С:Предприятия 8 с сервером Bizerba, которая обеспечивает работу с Бицербой через веб-сервис (смысл создания компоненты мне не понятен, т.к. Connect.Brain также предоставляет свой веб-сервис).

Итак, поехали.

1. Скачиваем Connect.Brain отсюда

2. Устанавливаем  Connect.Brain на все машины, с которых предполагается использование  ОБ. Не забываем установить галочку напротив «Developermode AddOn». Это позволит нам принять/отправить 50 телеграмм без лицензии. Лицензий понадобится столько, сколько у вас оборудования (поправьте меня, если это не так)

3. Настраиваем каждое ОБ : задаем IP, имя, активируем лицензию и т.д. Т.к. я не являюсь сервисным инженером, то не буду описывать этот шаг.

С установкой и настройкой закончили.

Обмен данным с ОБ возможен с помощью файлов, веб-сервиса, COM и д.р. Рассмотрим взаимодействие с ОБ через COM интерфейс, как наиболее удобное (по моему мнению).

После установки Connect.Brain нам доступны следующие COM объекты:

BCS.BCSComunnication — основной интерфейс для работы с ОБ: открытие устройства, отправка/получение теоеграмм

BCC.BCCCtrl.1 — тоже самое, что и BCS.BCSComunnication, только реализованоое как ActiveX

BCS.BCSInfo — получение информации об устройствах, лицензиях

BCTTools.Tools — вспомогательный интерфейс для парсинга телеграмм, конвертации веса

 

Также доступны интерфейсы BCS.BCSBcf, BCS.BCSComunnication2, BCS.BCSComunnication3, BCS.BCSConfig, BCS.BCSDiag, BCS.BCSLw, BCSLaunch.Launcher, BizInfo.BizInf, BizLogServ.CoLogger назначение которых мне не известно и в официальной документации не описано.

 

Для работы с ОБ нам понадобится его имя. Получить все доступное ОБ можно функцией GetDevice из интерфейса BCS.BCSInfo:

BCSInfo = Новый COMОбъект("BCS.BCSInfo");
Ответ = BCSInfo.Open("username1");
Устройства ="";
Количество =0;
Ответ = BCSInfo.GetDevice(Устройства, Количество);

После выполнения функции переменная «Устройства» будет содержать строку с параметрами устройств, «Количество» — количество активных устройств. Строка в моем случае такая: 

SECT01|SYSTEM1|PARA02|name|GLP4|PARA02|devCategory|2|PARA02|devType|19|PARA02|devicestate|0|PARA02|IsRemoteDevice|0|PARA02|IsUnicodeDevice|0|SECT01|SYSTEM2|PARA02|name|GLP5|PARA02|devCategory|2|PARA02|devType|19|PARA02|devicestate|0|PARA02|IsRemoteDevice|0|PARA02|IsUnicodeDevice|0|SECT01|SYSTEM3|PARA02|name|GLM_I_22|PARA02|devCategory|2|PARA02|devType|35|PARA02|devicestate|0|PARA02|IsRemoteDevice|0|PARA02|IsUnicodeDevice|0|SECT01|SYSTEM4|PARA02|name|GLP1|PARA02|devCategory|2|PARA02|devType|19|PARA02|devicestate|0|PARA02|IsRemoteDevice|0|PARA02|IsUnicodeDevice|0|SECT01|SYSTEM5|PARA02|name|GLP2|PARA02|devCategory|2|PARA02|devType|19|PARA02|devicestate|0|PARA02|IsRemoteDevice|0|PARA02|IsUnicodeDevice|0|SECT01|SYSTEM6|PARA02|name|GLP3|PARA02|devCategory|2|PARA02|devType|19|PARA02|devicestate|0|PARA02|IsRemoteDevice|0|PARA02|IsUnicodeDevice|0|

Формат списка и описание параметров можно посмотреть в описании: %ProgramFiles%BizerbaBCTHelpEnglishManual_connect.BRAIN_en.pdf

Нас же интересует только параметр name, в моем случае доступны устройства GLP4, GLP5, GLM_I_22, GLP1, GLP2, GLP3.


Теперь откроем устройство (функция Open, интерфейс BCS.BCSComunnication):

BCSComunnication = Новый COMОбъект("BCS.BCSComunnication");
ДобавитьОбработчик BCSComunnication.DataArrival, BCSDataArrival;
ДобавитьОбработчик BCSComunnication.RemoteDataArrival, BCSRemoteDataArrival;

Ответ = BCSComunnication.Open("username1", "GLP1", 1, 0, 0);

Т.к. устройство само будет извещать нас об отправке данных, то нужно добавить обработчики событий DataArrival и RemoteDataArrival. Их код будет ниже.


Теперь можно отправить команду на устройство (функция Send).

Хэндл = "";
Статус = 0;
Ответ = BCSComunnication.Send("A!XV00|GL19", "1", Хэндл, 100, Статус);

Эта команда («A!XV00|GL19») выберет на устройстве ПЛУ с номером 1 и загрузит все его данные. Все команды и их параметры описаны здесь: %ProgramFiles%BizerbaBCTHelpEnglishWebHelpGX Netindex_E.html


Принимать данные будем в функции BCSDataArrival. Там же будем их парсить при помощи функции ParseTelegram, интерфейса BctTools.Tools

Функция BCSDataArrival(Хэндл)

Данные = "";
Команда = "";
Статус = 0;
Ответ = BCSComunnication.Receive(Команда, Данные, Хэндл, 0, Статус);

МассивКоманд = Неопределено; // COMSafeArray
МассивДанных = Неопределено; // COMSafeArray
BCTTools = Новый COMОбъект("BctTools.Tools");
Ответ = BCTTools.ParseTelegram(Команда, Данные, МассивКоманд, МассивДанных);

КонецФункции

После этого в переменной МассивКоманд будет массив COMSafeArray, где каждый элемент представляет собой строку команды, а в переменной МассивДанных — массив соответствующих данных.


Поле работы с устройством его нужно закрыть:

Ответ = BCSComunnication.Close();

9 Comments

  1. sad12345

    Есть оборудование GLM-I, подключенное по сети.

    Используются USB-Ключи подключенные к экитеровщикам.

    Нужно подключиться к нему по сети.

    BCSInfo.Open отрабатывает нормально.

    BCSComunnication.Open выдает, что нет лицензий.

    Не можешь подсказать куда копать?

    Reply
  2. Йожкин Кот

    (1) Не подскажу. Пинайте своего сервис-инженера

    Reply
  3. sad12345

    С лицензиями вроде разобрался. А нет ли какой-нибудь обработки с этим функционалом?

    Reply
  4. Йожкин Кот

    Пока нет, времени нет написать.

    Reply
  5. korefano

    Добрый день.

    На текущий момент есть ли готовая обработка?

    Reply
  6. Йожкин Кот

    (5) Обработки нет — все основные моменты в публикации описаны. Если что не понятно, можете задать вопросы в личку.

    Reply
  7. ZLENKO

    Не пойму подходит этот _connect.BRAIN ( http://www.bizerba.com/ru_ru/products/industry_software/industry_software_brain­/_connect.brain/_connectbrain.html )для весов KH II 800 ( http://www.bizerba.com/en/products/retail_scales/pc_scales_k_class_ii/kh_ii_800­/kh_ii_800.html ) или нет?

    Reply
  8. mmxd

    Не получилось ловить события через BCSDataArrival 🙁

    Пакет с GLP отправляется, а 1С не видит событие. Brain Diagnostics видит пакеты, принимает, а через 1С не получилось. Пробовал и в модуле формы, и в модуле обработки, и в общий модуль подставлял — не обрабатывает хоть ты тресни.

    Пробовал уже перейти на обычные формы и там отлавливать, но ничего не получилось. Пришлось переписывать на С#

    Reply
  9. Йожкин Кот

    (8) Написал в личку, но сюда тоже продублирую.

    Если платформа с 8.3.7 до 8.3.10, то событие не ловится — ошибка платформы. Исправлена только в 8.3.11 и выше. Либо можно использовать 8.3.6 и ниже, там этой ошибки нет.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *