Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Подключение отключенного крейта

Вы не вошли.

 Поиск | Регистрация | Вход 

10.11.2015 15:16:11
#1

Участник
Здесь с 13.05.2015
Сообщений: 9

Подключение отключенного крейта

Здравствуйте! Возник такой вопрос: если во время работы с крейтом пропадает связь (в LTR Manager крейт перейдет в состояние "отключен"), то методом _LTRNative.LTR_ConnectAllAutoIPCrates(ref servTLTR) хочу подключить крейт обратно, однако ничего не выходит, хотя флаг автоподключения установлен (в LTR Manager крейт остается в отключенном состоянии).
Пишу на C#.
IP-адрес сервера указан в структуре верно, выставлен управляющий канал.
Нужно ли сначала установить соединение с сервером (_LTRNative.LTR_OpenEx(ref servTLTR, TIMEOUT))?
Пробовал и так, и так - не выходит.

10.11.2015 18:17:33
#2

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,338

Re: Подключение отключенного крейта

Здравствуйте.
Для начала стоит проверить, если после пропадания связи в LtrManager нажать правой кнопкой по списку адресов и выбрать "Автосоединение с крейтам" - в этом случае подключение проходит или нет?
Это даст понять - крейт не позволяет после этого установить соединение или все же Вы что-то делаете не так в своей программе?
А состояние именно "отключен", а не "ошибка"?

10.11.2015 18:18:53
#3

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,338

Re: Подключение отключенного крейта

А также хотелось бы знать, появляются ли при этом какие-то сообщения в журнале ltrd (одно из окон LtrManager)

10.11.2015 19:42:56
#4

Участник
Здесь с 13.05.2015
Сообщений: 9

Re: Подключение отключенного крейта

Я просто отключал крейт в LTR Manager, галочка автоподключения установлена оставалась. Получалось, что был всего один крейт, и тот отключен. Даже просто установить соединение с ltrd уже не получается (например, чтобы запросить список крейтов), видимо и запрос на автоподключение не проходит.
В журнале пишется что-то вроде "попытка работать с незарегистрированным крейтом". Завтра более точное описание добавлю.

10.11.2015 21:03:13
#5

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,338

Re: Подключение отключенного крейта

Понятно. Чтобы иметь возможность подключиться к ltrd когда нет крейтов, надо в качестве серийного номера крейта использовать специальную строку  "#SERVER_CONTROL" (пустой серийный номер означает, что нужно установить соединение с первым крейтом и если его нет, то Open/OpenEx вернет ошибку).

В последней версии ltrModulesNet в принцие есть для удобства класс ltrsrvcon для управляющего соединения с ltrd и класс ltrcrate, который скрывает это  и содержат только функции которые можно применить либо к соединению с ltrd, либо с крейтом (см пример с этими классами http://www.lcard.ru/download/examples/l … elist.zip), либо заполнить этот номер вручную, чтобы не менять уже существующий код. Вот как это делается в ltrsrvcon:

public virtual _LTRNative.LTRERROR Open(uint saddr, ushort sport)
{
    string str = "#SERVER_CONTROL";
    char[] arr = str.ToCharArray();
    int i;
    for (i = 0; (i < arr.Length) && (i < 15); i++)
        hnd.csn[i] = (byte)arr[i];
    hnd.csn[i] = 0;
    hnd.cc = 0;
    hnd.saddr = saddr;
    hnd.sport = sport;

    return _LTRNative.LTR_Open(ref hnd);
}

public virtual _LTRNative.LTRERROR Open()
{
    return Open(_LTRNative.SADDR_DEFAULT, _LTRNative.SPORT_DEFAULT);
}
11.11.2015 07:55:23
#6

Участник
Здесь с 13.05.2015
Сообщений: 9

Re: Подключение отключенного крейта

Спасибо! Заработало (сделал через "#SERVER_CONTROL")!