gifts2017

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

Опубликовал Dmitry Malyshev (SaperVodichka) в раздел Оборудование

Процедуры на языке 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 (т.е. не происходит постоянного переподключения весов).




См. также

Подписаться Добавить вознаграждение

Комментарии

1. г. Казань Рустем Гумеров (Rustig) 30.07.14 09:09
(0) отличная статья!
откуда узнали о процедурах на языке 1С для связи с терминалом?
2. Dmitry Malyshev (SaperVodichka) 30.07.14 09:51
(1) Rustig, http://www.massa.ru/terminali-R/download/driver.php - тут есть описание драйвера с примерами для Delphi, переписал их на 1С.
intehof; Rustig; +2 Ответить
3. Андрей Ромашов (Zixxx) 24.03.16 21:55
Почему-то постоянно получаю Ошибка чтения веса: ReadWeight() = 2. Как будто вес не стабилен, хотя с весами все в порядке.

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

ПодключитьВнешнююКомпоненту("C:\1С\ScalesMassaK.dll", "Весы", ТипВнешнейКомпоненты.COM);
Scales = Новый COMОбъект("ScalesMassaK.Scale");

Так как исходники немного устарели
4. Андрей Ромашов (Zixxx) 24.03.16 21:56
Ну и при регистрации библиотеки ошибка идет, пробовал на разных компах, а по ссылке ничего не скачивается
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа