В интернете очень мало информации о взаимодействии с оборудованием фирмы 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%\Bizerba\BCT\Help\English\Manual_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%\Bizerba\BCT\Help\English\WebHelp\GX Net\index_E.html
Принимать данные будем в функции BCSDataArrival. Там же будем их парсить при помощи функции ParseTelegram, интерфейса BctTools.Tools
Функция BCSDataArrival(Хэндл) Данные = ""; Команда = ""; Статус = 0; Ответ = BCSComunnication.Receive(Команда, Данные, Хэндл, 0, Статус); МассивКоманд = Неопределено; // COMSafeArray МассивДанных = Неопределено; // COMSafeArray BCTTools = Новый COMОбъект("BctTools.Tools"); Ответ = BCTTools.ParseTelegram(Команда, Данные, МассивКоманд, МассивДанных); КонецФункции
После этого в переменной МассивКоманд будет массив COMSafeArray, где каждый элемент представляет собой строку команды, а в переменной МассивДанных - массив соответствующих данных.
Поле работы с устройством его нужно закрыть:
Ответ = BCSComunnication.Close();