Ребята может быть вопрос покажется глупым и все же.
Одно устройство определяется в Windows 10 как Virtual Com Port. После запуска и во время работы никаких нареканий нет, передача данных по этому порту между приложением на LabVIEW и устройством происходит нормально. Если закрыть приложение и попытаться его снова запустить, то соединения с устройством не происходит. Не помагает даже выдергивание шнурка USB и втыкание его обратно. Единственный способ запустить приложение снова, это перезагрузка windows. Вопрос, возможно ли каким либо образам, без перезагрузки заставить windows переиницилизировать виртуальный com порт? Спасибо.
Программная реинициализация USB
-
- professor
- Сообщения: 3394
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Программная реинициализация USB
Это происходить только с ЛВ?
Если другим терминалом попробовать? Может, программа не закрывает порт и он недоступен другим становится?
Если другим терминалом попробовать? Может, программа не закрывает порт и он недоступен другим становится?
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Программная реинициализация USB
Возможно так и есть, тогда вопрос как перед запуском получить статус порта и если он открыт, то его закрыть (средствами LabVIEW) чтобы его могло использовать устройство?
Я понимаю что правильно будет перед выходом из приложения закрыть все использованные им порты. Ну а если вследствие каких либо причин порт остался отркытым (например произошедшей ошибки) Попутный вопрос использование Close VISA.vi будет достаточно, что бы порт закрыть?
P.S. Дело осложняется тем, что в среде LabVIEW работает все без запинки. Проблема проявляется на другой машине в скомпилированом в *.exe файле
Я понимаю что правильно будет перед выходом из приложения закрыть все использованные им порты. Ну а если вследствие каких либо причин порт остался отркытым (например произошедшей ошибки) Попутный вопрос использование Close VISA.vi будет достаточно, что бы порт закрыть?
P.S. Дело осложняется тем, что в среде LabVIEW работает все без запинки. Проблема проявляется на другой машине в скомпилированом в *.exe файле
-
- professor
- Сообщения: 3394
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Программная реинициализация USB
Ну если вам лень вызвать Close VISA.vi, то проблема именно в этом :)P.S. Дело осложняется тем, что в среде LabVIEW работает все без запинки. Проблема проявляется на другой машине в скомпилированом в *.exe файле
В ЛВ есть настройка "автоматически закрывать VISA сессию", вероятно, в ехе этого не происходит.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Программная реинициализация USB
Да, для .exe надо ключик соответствующий добавить в .ini: viewtopic.php?p=67767#p67767
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Программная реинициализация USB
Я правильно поняла, кроме птички в Tools -> Options -> Environment -> Automatically close VISA sessions, нужно прописать в файле ini который после компиляции имеет такое же имя как и exe "cleanupVisa=True"?
И еще, для полной уверенности так сказать. Последовательность следующая. Запускается моя программа, инициализурует блок питания (включает), который подает питание на устройство, после этого открывается VISA и начинается работа. Выключение должно происходить в обратном порядке, здесь ключевое слово должно. Что произойдет (как отреагирует Windows и LabVIEW) если питание с устройства пропадет прежде, чем закроется VISA? Передачи данных в этот момент нет, ошибки никакой не возникает, но порт то был открыт. Закроется ли VISA без проблем и ошибок без устройства на другой стороне?
P.S. Наверное глупость спросила, но отец говорил, что глупых вопросов в программировании не бывает
И еще, для полной уверенности так сказать. Последовательность следующая. Запускается моя программа, инициализурует блок питания (включает), который подает питание на устройство, после этого открывается VISA и начинается работа. Выключение должно происходить в обратном порядке, здесь ключевое слово должно. Что произойдет (как отреагирует Windows и LabVIEW) если питание с устройства пропадет прежде, чем закроется VISA? Передачи данных в этот момент нет, ошибки никакой не возникает, но порт то был открыт. Закроется ли VISA без проблем и ошибок без устройства на другой стороне?
P.S. Наверное глупость спросила, но отец говорил, что глупых вопросов в программировании не бывает
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Программная реинициализация USB
В IDE после установки галочки ключ пропишется в labview.ini автоматически. Но в RTE (т.е., в EXE) все опции по дефолту и ключ нужно вносить руками в App.ini. Ну, то есть, опции среды из labview.ini сами не переносятся в App.ini.
Если физическая связь пропала, то на блоках VISA Read/Write возникнет таймаут. А дальше зависит от того, как в программе реализована обработка этого случая. Или закрывается существующая сессия через VISA Close и программа пытается заново подключиться. Или программа выкидывает окно об ошибке и принудительно завершается (а ля нажатие на Abort). Зависит от программиста. Но если в меню стоит птичка, то Abort программы в любом виде будет завершать все открытые VISA-сессии. Я обычно ставлю всегда эту опцию, так сказать, для успокоения совести :) Хуже от неё точно не будет, я по кр. мере проблем не ощущал. Кстати, по той ссылке, что я выше приводил, есть инфа о мониторе открытых сессий (инструментарий ). Утилита полезна как раз для таких случаев.
Конечно закроется, сессия же в памяти процесса, а не в проводах. Если сомневаетесь, можете поэкспериментировать в NI-MAX. Все терминалы, что я встречал, без проблем завершают подключение, даже без связи с удалённой стороной.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 4 Ответы
- 607 Просмотры
-
Последнее сообщение Borjomy_1
-
- 4 Ответы
- 450 Просмотры
-
Последнее сообщение Eugene543210
-
- 4 Ответы
- 192 Просмотры
-
Последнее сообщение Embedder74