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

Вариант перезапуска сбора данных LTR

Вы не вошли.

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

02.11.2024 19:25:31
#1

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

Вариант перезапуска сбора данных LTR

Вопрос вариантах о перезапуска процесса сбора данных при сбое:
Собираем данные в нескольких потоках с модулей LTR114, LTR212-M3.
Допустимо ли в потоках сбора (см.далее) данных для модулей LTR114 и LTR212-M3 после выхода из циклов сбора данных в потоках сбора данных выполнять только LTR114_Stop или LTR212_Stop и после этого не закрывая поток возвращаться на подготовку цикла и далее повторный запуск цикла сбора
данных; а LTR114_Close и LTR212_Close выполнять только в основном потоке при закрытии программы после остановки всех потоков сбора данных?

В настоящее время алгоритм выглядит так:
1) Сначала загружаем настройки для модулей LTR114 и LTR212 в главном потоке.
Функции настройки LTR114:
LTR114_Init,LTR114_Open,LTR114_GetConfig, LTR114_CreateLChannel,LTR114_SetADC
Функции настройки LTR212:
LTR212_Init,LTR212_Open,LTR212_CreateLChannel,LTR212_SetADC

2) Далее создаем потоки для сбора данных отдельно для каждого модуля.

2-LTR114) Поток для LTR114
Подготовка цикла:
    LTR114_Calibrate,LTR114_Start
Цикл:
    LTR114_Recv,LTR114_ProcessData
После цикла (при сбое):
    LTR114_Stop,LTR114_Close

2-LTR212) Поток для LTR212
Подготовка цикла:
    LTR212_Start,LTR212_CalcTimeOut
Цикл:
    LTR212_Recv,LTR212_ProcessData
После цикла (при сбое):
    LTR212_Stop,LTR212_Close
Потоки завершаем.
Перезапускаем при сбое программу целиком.

В новом проекте добавится модуль LTR12.

07.11.2024 04:35:36
#2

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

Re: Вариант перезапуска сбора данных LTR

В принципе перезапуск сбора работающего модуля через Stop/Start отдельных модулей должен работать без закрытия/открытия соединения. При сбое тут уже вопрос, из-за чего сбой и что при нем происходит с модулями, будет ли достаточно для выхода из этой ситуации перезапуска сбора или потребуется дополнительно переконфигурация (через SetAdc) или сброс модуля и соединения (через Close/Open).
У Вас то сбой как проявляется (с точки зрения результатов функций)? В одном модуле или сразу во всех от одного крейта? Вы пробовали перезапуск через Stop/Start или Stop/SetADC/Start? Если перезапуск не получился, то как это проявляется с точки зрения результатов выполнения функций? Не пропадают ли модули судя по журналу LTR Manger в момент сбоя?

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

08.11.2024 15:14:26
#3

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

Re: Вариант перезапуска сбора данных LTR

Сбой обычно происходил после длительной работы в одном из потоков. Обычно в функции LTR114_ProcessData. Закрывали после этого все потоки и выходили из приложения, после чего запускали с самого начала. Программа должна была работать постоянно, что мы обеспечивали ее перезапуском.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск