Вариант интеграции с весами по com-порту через http-сервис

21.03.24

Интеграция - Весы

Демонстрируется вариант интеграции 1С с весами по com-порту через реализацию отдельного http-сервиса.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Чтение данных из сервиса работы с весами
.zip 10,33Kb
4
4 Скачать (1 SM) Купить за 1 850 руб.

Задача

На одном из проектов понадобилась интеграция 1С с напольными весами МИДЛ, работающими по com-порту, которые переведены в режим постоянной передачи данных, подключенной к Windows-системе. Решение, которое первое приходит в голову реализовать/найти соответствующую нативную компоненту под 1С. Однако, решил реализовать отдельный веб-сервис, в сторону этого подхода склоняло еще и то, что по сути работа с весами связана на 99% процентов со считыванием данных с порта, то есть тут взаимодействие с портом минимально. Таким образом, по факту нужен сервис, который просто будет считывать данные с порта и дальше выставлять их по http. Соответственно интеграция будет строиться через http-сервис.

Может показаться, что минусом такого решения является тот момент, что придется из 1С опрашивать циклично службу для получения интерактивной информации с весов, в случае компоненты это было бы просто внешнее событие для обработки на форме, однако на текущий момент с использованием асинхронных функций на клиенте цикличный опрос никак ощутимо не тормозит клиентское приложение, поэтому в целом это не является проблемой.

Вариант решения

Необходимо реализовать службу, которая по http будет управлять com-портом и отдавать результат взвешивания. Служба реализовывалась на С#, беглый анализ примеров кода показал, что процесс считывания реализуется достаточно ясно, причем через встроенный в .Net класс SerialPort. Http-сервис так же реализуется через встроенный класс HttpListener, на текущий момент реализация простого http-сервиса практически на любом языке задача достаточно легко реализуемая. Примеров того и другого очень много, получивший вариант реализации можно увидеть на github, ниже описаны основные моменты:

Сервис будет принимать всего четыре команды, три Post - start, stop, reset и одна Get -  get.

  1. start - принимает в теле запроса строку вида "4;9600", где 4 - номер com-порта, 9600 - скорость работы с портом. Устанавливается соединение с портов на выходе в теле в виде строки результат;
  2. stop - не принимает параметры на входе, разъединяется соединение с портом;
  3. reset - не принимает параметры на входе, сбрасывает считанное значение в 0;
  4. get - возвращает в теле ответа последнее считанное значение из порта в виде строки.

Весы по умолчанию из сборки работают на 8119 порту.

Ключевые моменты реализации достаточно ясно и понятно воспринимаются, всю сложность скрывают внутренние библиотеки:

 
 чтение с порта
 
 http-сервис

 

Взаимодействие с 1С

Взаимодействие описывается через http-запросы, примеры ниже.

 
 Примеры

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

 
 Пример поллинга

 

Тестирование

Так как в момент реализации под рукой не было весов, разработка велась удаленно, то оказалось тестировать вполне можно тестировать функционал на сканере штрихкодов, которой работает через виртуальный com-порт, по факту принцип его работы такой же - считанное значение выставляет в порт, откуда его можно считывать. После, в тестовой эксплуатации, уже непосредственно на самих весах шло тестирование, решение отлично себя показало далее и в промышленной эксплуатации в связке с 1С: Комплексная автоматизация 2.5, конечно не обошлось без сюрпризов, весы иногда передавали значение, которое к числу невозможно преобразовать, но это уже решается на стороне 1С. Саму службу можно устанавливать через стандартную команду sc create.

 
 Установка службы

 

К публикации приложена обработка-пример и сборка, которая реализует взаимодействие с весами. Сам проект на github.

См. также

Весы Оптовая торговля Розничная торговля Системный администратор Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Драйвер электронных весов предназначен для подключения торговых весов фирмы CAS всех моделей, а также весов АТОЛ MARTA к различным конфигурациям 32-разрядной или 64-разрядной платформы 1С v.8.3. Драйвер разработан по стандарту "1С: Совместимо". Уникальность драйвера заключается в том, что он прост в подключении, надежен в работе и оптимален по цене.

2400 руб.

19.12.2017    70118    418    131    

150

Весы Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Драйвер электронных весов Физтех Т11 (x86-64). Внешняя компонента Native API 1С. 1С Совместимо. Версия требований к разработке драйверов 3.9 Компонента предназначена для подключения к конфигурациям с БПО. Тестировалась на конфигурациях ERP, Управление нашей фирмой с БПО 3.2.2.25

3600 руб.

07.03.2024    996    2    0    

3

Весы Пользователь Платформа 1С v8.3 1С:Розница 2 Россия Абонемент ($m)

Обработка для работы с весами в программе Далион, которая использует бесплатный драйвер МАССА-К Driver-R.

3 стартмани

31.10.2024    460    1    Lichi001    1    

3

Весы Платформа 1С v8.3 1С:Управление торговлей 11 Россия Платные (руб)

Исправление ошибки нового драйвера весов Штрих-Принт (ШТРИХ-М:Весы с печатью этикеток ШТРИХ-ПРИНТ NG), когда пре выгрузки весового товара на весы он его выгружает как штучный. А так же исправление ошибки весов при выгрузки "Нет связи".

3600 руб.

15.10.2024    571    0    0    

1

Весы Программист Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Абонемент ($m)

Предлагается пример создания рабочего файла, который понимает загрузчик loader для весов с печатью этикеток "Штрих-Принт".

3 стартмани

16.09.2024    755    4    aximo    1    

3
Оставьте свое сообщение