Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Спасибо! Заработало (сделал через "#SERVER_CONTROL")!
Я просто отключал крейт в LTR Manager, галочка автоподключения установлена оставалась. Получалось, что был всего один крейт, и тот отключен. Даже просто установить соединение с ltrd уже не получается (например, чтобы запросить список крейтов), видимо и запрос на автоподключение не проходит.
В журнале пишется что-то вроде "попытка работать с незарегистрированным крейтом". Завтра более точное описание добавлю.
Здравствуйте! Возник такой вопрос: если во время работы с крейтом пропадает связь (в LTR Manager крейт перейдет в состояние "отключен"), то методом _LTRNative.LTR_ConnectAllAutoIPCrates(ref servTLTR) хочу подключить крейт обратно, однако ничего не выходит, хотя флаг автоподключения установлен (в LTR Manager крейт остается в отключенном состоянии).
Пишу на C#.
IP-адрес сервера указан в структуре верно, выставлен управляющий канал.
Нужно ли сначала установить соединение с сервером (_LTRNative.LTR_OpenEx(ref servTLTR, TIMEOUT))?
Пробовал и так, и так - не выходит.
Как раз хотелось бы измерить постоянную составляющую в цепи ICP-датчика. Спасибо за разъяснение.
Добрый день! На 24-м модуле есть такой режим - ICP-тест, который позволяет измерить напряжение без отсечения постоянной составляющей, т.е. мы можем определить, подключен ли датчик, правильно ли он подключен, либо на линии к.з.
Программно на C# модуль можно настроить на такое измерение:
//переключаем модуль в тестовый режим
api24.TestMode = true;
//настраиваем каналы
ltr24api.CHANNEL_MODE channelMode = new ltr24api.CHANNEL_MODE(true, ltr24api.AdcRange.ICP_Range_5, false, true);
api24.ChannelMode[0] = channelMode;
api24.ChannelMode[1] = channelMode;
api24.ChannelMode[2] = channelMode;
api24.ChannelMode[3] = channelMode;
т.е. TestMode - true, ICPMode - true, AC - X: ICP-тест
Возможно ли организовать что-то подобное на 22-м модуле? Из описания функция ltr22api я не понял этого.
Спасибо! Путем долгих поисков, проб и ошибок у меня вышло почти то же самое. Возможно кому-то пригодится.
public static unsafe void GetCratesStatus(_LTRNative.TLTR tLTR)
{
unsafe
{
//максимальное число крейтов
const uint max_entires = 16;
//IP-адрес сети (192.168.1.0)
uint ip_net = 0xC0A80100;
//маска подсети (255.255.255.0)
uint ip_mask = 0xFFFFFF00;
//количество найденных крейтов, соответствующих сетевым настройкам
uint entires_found;
//количество записей в массиве infoArray (возвращаемое процедурой)
uint entires_returned;
//выделение памяти
int structSize = Marshal.SizeOf(typeof(_LTRNative.TIPCRATE_ENTRY));
IntPtr info_array = Marshal.AllocHGlobal(structSize);
Marshal.StructureToPtr(typeof(_LTRNative.TIPCRATE_ENTRY), info_array, true);
//запрашиваем список крейтов
_LTRNative.LTR_GetListOfIPCrates(ref tLTR, max_entires, ip_net, ip_mask, out entires_found, out entires_returned, info_array);
//массив для сохранения списка
_LTRNative.TIPCRATE_ENTRY[] cratesArray = new _LTRNative.TIPCRATE_ENTRY[entires_found];
//заполняем массив
for (int index = 0; index < entires_found; index++)
cratesArray[index] = (index == 0) ? (_LTRNative.TIPCRATE_ENTRY)Marshal.PtrToStructure(info_array, typeof(_LTRNative.TIPCRATE_ENTRY))
: (_LTRNative.TIPCRATE_ENTRY)Marshal.PtrToStructure(info_array + structSize, typeof(_LTRNative.TIPCRATE_ENTRY));
//освобождаем память
Marshal.FreeHGlobal(info_array);
}
}
Добрый день! Подскажите, пожалуйста, как правильно реализовать функцию LTR_GetListOfIPCrates.
//максимальное число крейтов
const uint max_entires = 16;
//IP-адрес сети (192.168.1.0)
uint ip_net = 0xC0A80100;
//маска подсети (255.255.255.0)
uint ip_mask = 0xFFFFFF00;
//количество найденных крейтов, соответствующих сетевым настройкам
uint entires_found;
//количество записей в массиве infoArray (возвращаемое процедурой)
uint entires_returned;
//массив для сохранения списка
_LTRNative.TIPCRATE_ENTRY[] cratesArray = new _LTRNative.TIPCRATE_ENTRY[max_entires];
//указатель на массив
IntPtr info_array = new IntPtr();
_LTRNative.LTR_GetListOfIPCrates(ref tLTR, max_entires, ip_net, ip_mask, out entires_found, out entires_returned, info_array);
Не многу понять, как связать cratesArray и info_array, пытался взять адрес cratesArray и передать его в указатель, но C# не позволяет такого сделать, поэтому просто проинициализировал как new IntPtr(), в результате запуска entires_found = 4, out entires_returned = 0 и info_array = 0.
Спасибо, действительно, видел этот документ. А могу ли я программно получить число 1,2 и т.д.? GetCrateInfo вроде такой информации не даёт.
Добрый день, только начинаю работать с системой LTR. Не могу ни где найти информацию - как определить количество слотов для модулей в крейте?
Страницы 1