Процедуры на языке 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,http://www.massa.ru/terminali-R/download/driver.php — тут есть описание драйвера с примерами для Delphi, переписал их на 1С.
Почему-то постоянно получаю Ошибка чтения веса: ReadWeight() = 2. Как будто вес не стабилен, хотя с весами все в порядке.
Еще склоняюсь что что-то не правильно в этом месте
ПодключитьВнешнююКомпоненту(«C:1СScalesMassaK.dll», «Весы», ТипВнешнейКомпоненты.COM);
Scales = Новый COMОбъект(«ScalesMassaK.Scale»);
Так как исходники немного устарели
Ну и при регистрации библиотеки ошибка идет, пробовал на разных компах, а по ссылке ничего не скачивается