IvanLis писал(а): ↑27 янв 2025, 20:48У меня нет камеры, да наверное не много людей на форуме, у кого она под руками.
У меня нет LV2021, я "старпер" и до сих пор работаю в LV2015 и пока не вижу крайней необходимости обновляться. В принципе у меня система Win7 32bit.
По этому могу только рекомендовать, как бы делал я.
1. Запускаем окно (процесс) main. В нем создаем цикл обработки (событийно-управляемый автомат). Регистрируем для обработки UserEvent: IsStop (событие остановки процесса CamReader) и IsFrame (событие получения кадра от CamReader). Туда добавляем TimeOut Event (выполняет роль WatchDog) например на 1000ms.
2. main запускает процесс CamReader (реентерабельный), который осуществляет все взаимодействие с камерой. Он к ней подключается и в цикле читает информацию, если пришел кадр, то отправляет в main (User Event - IsFrame). Если ошибка/исключение/вылет из цикла и т.д. отправляет в main (User Event - IsStop).
3. main постоянно контролирует, запущен ли процесс CamReader и если нет ("упал" - получено событие IsStop), то запускает другой экземпляр, а старый по возможности "убивает".
4. Если в течении 1сек от процесса CamReader нет данных, то считаем его "упавшим", убиваем и запускаем новый.
5. При остановке main, "убиваем" CamReader.
Т.е. у Вас фактически один процесс CamReader всегда работает и пытается подключиться к камере. Если подключился, то получает данные и перекидывает в main. Если подключиться не смог или данных нет, то процесс убивается и запускается новый, у которого есть 1 сек, что бы наладить связь с камерой. Если у него не получилось, то следующий.
Как то так .....
Задачу решил.
Добавил WatchDog, правда контролирует он изменение значение переменной из цикла захвата видео.
Ну и потом KILL процесса и восстановление соединения.
Камеры у меня подключены две, пришлось по каждой такое проделать.