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

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

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

  1. Получаем точку учета по уникальному номеру, который задается в свойствах точки учета.
MeasurePoint measurePoint = await server.MeasurePoints.GetByNumberAsync(10);
  1. Получить “Подключения” устройства. Если их больше одного, то выбрать канал GPRS и установить соединение.
measurePoint.Device // по документации как я понял должен выводить подключения, а выдает null
// Далее 
RemoteConsole remote = new RemoteConsole(server, ???); // что вписывается вторым параметром? и как его получить из текущей точки подключения?
RemoteConsoleConnectParams connectParams = new RemoteConsoleConnectParams();
remote.Connect(connectParams);
  1. Выполнить обмен данными
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 = Как правильно записывать запрос?

Вы можете ознакомиться с исходным кодом внешнего модуля “ВКТ-5: Удалённый пульт” (VKT5_RemoteConsole) и взять его в качестве примера. Там рассмотрены все эти моменты.

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

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

  1. После получения точки учёта по номеру вызовите метод:
await measurePoint.RefreshAsync(MeasurePointInfoFlags.Equipment);
  1. После обновления у точки учёта появится свойство Device, которое нужно передать в конструктор RemoteConsole.
  2. У вас, похоже, ошибка в синтаксисе C#. Массив запроса должен создаваться так:
new byte[] { 23, 03, 00, 33, 00, 01, 72, 87 }

То есть:

remote.SendCommandAndReceiveResponse(new byte[] { 23, 03, 00, 33, 00, 01, 72, 87 }, commandSettings);

Спасибо за ответ.
Получил 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);

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