Перенаправление подключений

Раздел для разработчиков по взаимодействию с ЛЭРС УЧЕТ, созданию собственных внешних модулей, экспорту/импорту данных и т.д.

Модератор: Модераторы

Ответить
Аватара пользователя
kristow
Сообщения: 48
Зарегистрирован: 22 янв 2016, 11:27

Перенаправление подключений

Сообщение kristow » 25 июл 2018, 15:38

Добрый день.
В LERS есть вами написанный модуль "Перенаправление подключений".
Отличный модуль, удобно использовать в разовых опросах.

Хочу написать консольное приложение на C#, которое будет выполнять подобный функционал:
1) Получаем точку учета по уникальному номеру, который задается в свойствах точки учета.

Код: Выделить всё

MeasurePoint measurePoint = await server.MeasurePoints.GetByNumberAsync(10);
2) Получить "Подключения" устройства. Если их больше одного, то выбрать канал GPRS и установить соединение.

Код: Выделить всё

measurePoint.Device // по документации как я понял должен выводить подключения, а выдает null
// Далее 
RemoteConsole remote = new RemoteConsole(server, ???); // что вписывается вторым параметром? и как его получить из текущей точки подключения?
RemoteConsoleConnectParams connectParams = new RemoteConsoleConnectParams();
remote.Connect(connectParams);
3) Выполнить обмен данными

Код: Выделить всё

CommandSettings commandSettings = new CommandSettings("Read_A", 10, 8, 20, 20);
byte[] read_A = remote.SendCommandAndReceiveResponse([23, 03, 00, 33, 00, 01, 72, 87], commandSettings); // VS ругается на byte[] data = Как правильно записывать запрос?
Иван Славный
Инженер техподдержки
Инженер техподдержки
Сообщения: 6672
Зарегистрирован: 02 мар 2016, 05:45

Re: Перенаправление подключений

Сообщение Иван Славный » 26 июл 2018, 08:11

Вы можете ознакомиться с исходным кодом внешнего модуля "ВКТ-5: Удалённый пульт" (VKT5_RemoteConsole) и взять его в качестве примера. Там рассмотрены все эти моменты.
20 и 21 июля 2020. IX обучающий семинар в Москве. Подробнее ...
Аватара пользователя
Антон Чичков
Администратор
Администратор
Сообщения: 5390
Зарегистрирован: 16 мар 2010, 07:04
Откуда: Хабаровск

Re: Перенаправление подключений

Сообщение Антон Чичков » 26 июл 2018, 09:20

Извините, сотрудник техподдержки не до конца понял ваш вопрос. Исходный модуль ВКТ-5 вам не поможет, поскольку он использует базовую форму из Lers.UI, в которой все объекты создаются за вас.

Конкретно по вашим вопросам.

1. После получения точки учёта по номеру вызовите метод:

Код: Выделить всё

await measurePoint.RefreshAsync(MeasurePointInfoFlags.Equipment);
2. После обновления у точки учёта появится свойство Device, которое нужно передать в конструктор RemoteConsole.
3. У вас, похоже, ошибка в синтаксисе C#. Массив запроса должен создаваться так:

Код: Выделить всё

new byte[] { 23, 03, 00, 33, 00, 01, 72, 87 }
То есть:

Код: Выделить всё

remote.SendCommandAndReceiveResponse(new byte[] { 23, 03, 00, 33, 00, 01, 72, 87 }, commandSettings);
20 и 21 июля 2020. IX обучающий семинар в Москве. Подробнее ...
Аватара пользователя
kristow
Сообщения: 48
Зарегистрирован: 22 янв 2016, 11:27

Re: Перенаправление подключений

Сообщение kristow » 26 июл 2018, 09:50

Спасибо за ответ.
Получил Device.
А как получить список модемов для данного Device? :smu:sche_nie:

Далее пишу вот так, правильно?
По документации не совсем понимаю что нужно прописать в параметры Connect и Port ?
Про параметр Port как я понял можно указать 0, если активирован авто опрос, а если нет, то указывается номер подключения для данного устройства?

Код: Выделить всё

RemoteConsole remote = new RemoteConsole(server, measurePoint.Device);
RemoteConsoleConnectParams connectParams = new RemoteConsoleConnectParams();
connectParams.UseCommLinkLayer = true;
connectParams.Connection = ;
connectParams.Port = ;
connectParams.StartMode = Lers.Common.PollManualStartMode.Force;
remote.Connect(connectParams);
CommandSettings commandSettings = new CommandSettings("Read_A", 10, 8, 20, 20);
byte[] read_A = remote.SendCommandAndReceiveResponse(new byte[] { 23, 03, 00, 33, 00, 01, 72, 87 }, commandSettings);
Аватара пользователя
Антон Чичков
Администратор
Администратор
Сообщения: 5390
Зарегистрирован: 16 мар 2010, 07:04
Откуда: Хабаровск

Re: Перенаправление подключений

Сообщение Антон Чичков » 26 июл 2018, 16:42

У устройства может быть несколько подключений. Все они находятся в коллекции Equipment.PollSettings.Connections. Вам нужно выбрать подключение, через которое будет установлен канал связи с устройством.
Порт можно задать null, тогда будет выбран любой доступный.
20 и 21 июля 2020. IX обучающий семинар в Москве. Подробнее ...
Ответить