Процедуры на языке 1С для работы с весами под управлением терминала МАССА:
1) Проверка подключения весов с терминалом МАССА
2) Разовое взвешивание
3) Подключение режима взвешивания
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)
Ниже приведено описание некоторых процедур на языке 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 (т.е. не происходит постоянного переподключения весов).





(0) отличная статья!
откуда узнали о процедурах на языке 1С для связи с терминалом?
(1) Rustig, — тут есть описание драйвера с примерами для Delphi, переписал их на 1С.
Почему-то постоянно получаю Ошибка чтения веса: ReadWeight() = 2. Как будто вес не стабилен, хотя с весами все в порядке.
Еще склоняюсь что что-то не правильно в этом месте
ПодключитьВнешнююКомпоненту(«C:1СScalesMassaK.dll», «Весы», ТипВнешнейКомпоненты.COM);
Scales = Новый COMОбъект(«ScalesMassaK.Scale»);
Так как исходники немного устарели
Ну и при регистрации библиотеки ошибка идет, пробовал на разных компах, а по ссылке ничего не скачивается