Пример работы с весами под управлением терминала МАССА через драйвер ScalesMassaK v1.1

Процедуры на языке 1С для работы с весами под управлением терминала МАССА:
1) Проверка подключения весов с терминалом МАССА
2) Разовое взвешивание
3) Подключение режима взвешивания
Для работы весов под управлением терминалов фирмы МАССА http://www.massa.ru возможно использование драйвера для получения событий с весов.
Ниже приведено описание некоторых процедур на языке 1С для связи с терминалом.
Порядок действий:
1) Ставим драйвер скачивая его со страницы http://www.massa.ru/terminali-R/download/driver.php
2) Описание возможностей драйвера с примерами для Delphi также есть на странице http://www.massa.ru/terminali-R/download/driver.php
3) Создаем обработку с использованием процедур ниже
В обработке должны быть определены:
— переменная модуля формы обработки:
    Перем Scales;
— реквизиты обработки:
    COMport, тип Число (5,0)
    ИнтервалАвтоВзвешивания, тип Число (15,0)
    Вес, тип Число (15,3)

Примеры кода:


//Используем для проверки водключения весов к COM порту
Процедура ТестПодключенияВесов()

Попытка
Scales = Новый COMОбъект("ScalesMassaK.Scale");
Scales.Connection = "COM" + Формат(COMport, "ЧГ=");
res = Scales.OpenConnection();
Если res = 0 Тогда
res = Scales.CloseConnection();
Сообщить("Тест подключения весов по " + "COM" + Формат(COMport, "ЧГ=") + " успешно пройден!");
Иначе
Сообщить("Ошибка подключения к весам: "  + "COM" + Формат(COMport, "ЧГ=") + ", OpenConnection() = " + res);
КонецЕсли;
Исключение
Сообщить("Ошибка работы с весами (неизвестная):" + ОписаниеОшибки());
КонецПопытки;

КонецПроцедуры

//Используем для разового взвешивания (если нужно происходит подключение к весам), полученный с весов вес возвращается в реквизит "Вес" обработки
Процедура ВыполнитьВзвешиваниеНаВесах()

//Подключение к весам
Попытка
Если Scales = Неопределено Тогда
Scales = Новый COMОбъект("ScalesMassaK.Scale");
Scales.Connection = "COM" + Формат(COMport, "ЧГ=");
res = Scales.OpenConnection();
Если res <> 0 Тогда
Scales = Неопределено;
Сообщить("Ошибка подключения к весам: "  + "COM" + Формат(COMport, "ЧГ=") + ", OpenConnection() = " + res);
Возврат;
КонецЕсли;
КонецЕсли;
Исключение
Scales = Неопределено;
Сообщить("Ошибка работы с весами (неизвестная):" + ОписаниеОшибки());
Возврат;
КонецПопытки;

Попытка
res = Scales.ReadWeight();//Получение веса
Если res = 0 Тогда

res = Scales.Division; //Обработка размерности одного деления весов
КоэффПересчета = 1;
Если res = 0 Тогда //милиграммы
КоэффПересчета = 0.000001;
ИначеЕсли res = 1 Тогда //граммы
КоэффПересчета = 0.001;
ИначеЕсли res = 2 Тогда //килограммы
КоэффПересчета = 1;
КонецЕсли;

res = Scales.Weight;

ВесНаВесахСтабилен = Scales.Stable;
ЗначениеВесаСВесов = КоэффПересчета * Scales.Weight;

Если ВесНаВесахСтабилен = 1 Тогда //Вес на весах стабилен
Вес = ЗначениеВесаСВесов;
Иначе //вес на весах неустойчив
Если Вопрос("Вес на весах ещё не стабилизировался. Все равно установить вес " + ЗначениеВесаСВесов + " кг?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда
Вес = ЗначениеВесаСВесов;
КонецЕсли;
КонецЕсли;
Иначе
Сообщить("Ошибка чтения веса: ReadWeight() = " + res);
КонецЕсли;
Исключение
Сообщить("Ошибка работы с весами (неизвестная):" + ОписаниеОшибки());
КонецПопытки;

КонецПроцедуры

Для подключения режима взвешивания на весах требуется подключать в форме обработчики ожидания, которые периодически будут запрашивать вес с весов

ПодключитьОбработчикОжидания("ВыполнитьВзвешиваниеНаВесах", ИнтервалАвтоВзвешивания);
ОтключитьОбработчикОжидания("ВыполнитьВзвешиваниеНаВесах");

При этом подключение к весам запоминается в переменной модуля формы обработки Scales (т.е. не происходит постоянного переподключения весов).

4 Comments

  1. Rustig

    (0) отличная статья!

    откуда узнали о процедурах на языке 1С для связи с терминалом?

    Reply
  2. sapervodichka

    (1) Rustig, http://www.massa.ru/terminali-R/download/driver.php — тут есть описание драйвера с примерами для Delphi, переписал их на 1С.

    Reply
  3. Zixxx

    Почему-то постоянно получаю Ошибка чтения веса: ReadWeight() = 2. Как будто вес не стабилен, хотя с весами все в порядке.

    Еще склоняюсь что что-то не правильно в этом месте

    ПодключитьВнешнююКомпоненту(«C:1СScalesMassaK.dll», «Весы», ТипВнешнейКомпоненты.COM);

    Scales = Новый COMОбъект(«ScalesMassaK.Scale»);

    Так как исходники немного устарели

    Reply
  4. Zixxx

    Ну и при регистрации библиотеки ошибка идет, пробовал на разных компах, а по ссылке ничего не скачивается

    Reply

Leave a Comment

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