Программная реинициализация USB

Простейшие вопросы в области инженерной разработки
Ответить
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Программная реинициализация USB

Сообщение jane_wild »

Ребята может быть вопрос покажется глупым и все же.
Одно устройство определяется в Windows 10 как Virtual Com Port. После запуска и во время работы никаких нареканий нет, передача данных по этому порту между приложением на LabVIEW и устройством происходит нормально. Если закрыть приложение и попытаться его снова запустить, то соединения с устройством не происходит. Не помагает даже выдергивание шнурка USB и втыкание его обратно. Единственный способ запустить приложение снова, это перезагрузка windows. Вопрос, возможно ли каким либо образам, без перезагрузки заставить windows переиницилизировать виртуальный com порт? Спасибо.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3394
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Программная реинициализация USB

Сообщение Artem.spb »

Это происходить только с ЛВ?
Если другим терминалом попробовать? Может, программа не закрывает порт и он недоступен другим становится?
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Программная реинициализация USB

Сообщение jane_wild »

Возможно так и есть, тогда вопрос как перед запуском получить статус порта и если он открыт, то его закрыть (средствами LabVIEW) чтобы его могло использовать устройство?
Я понимаю что правильно будет перед выходом из приложения закрыть все использованные им порты. Ну а если вследствие каких либо причин порт остался отркытым (например произошедшей ошибки) Попутный вопрос использование Close VISA.vi будет достаточно, что бы порт закрыть?

P.S. Дело осложняется тем, что в среде LabVIEW работает все без запинки. Проблема проявляется на другой машине в скомпилированом в *.exe файле
Artem.spb

Activity Автор
professor
professor
Сообщения: 3394
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Программная реинициализация USB

Сообщение Artem.spb »

jane_wild писал(а): 24 май 2021, 18:26 использование Close VISA.vi будет достаточно, что бы порт закрыть?
P.S. Дело осложняется тем, что в среде LabVIEW работает все без запинки. Проблема проявляется на другой машине в скомпилированом в *.exe файле
Ну если вам лень вызвать Close VISA.vi, то проблема именно в этом :)
В ЛВ есть настройка "автоматически закрывать VISA сессию", вероятно, в ехе этого не происходит.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Программная реинициализация USB

Сообщение dadreamer »

Artem.spb писал(а): 24 май 2021, 18:46В ЛВ есть настройка "автоматически закрывать VISA сессию", вероятно, в ехе этого не происходит.
Да, для .exe надо ключик соответствующий добавить в .ini: viewtopic.php?p=67767#p67767
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Программная реинициализация USB

Сообщение jane_wild »

Я правильно поняла, кроме птички в Tools -> Options -> Environment -> Automatically close VISA sessions, нужно прописать в файле ini который после компиляции имеет такое же имя как и exe "cleanupVisa=True"?

И еще, для полной уверенности так сказать. Последовательность следующая. Запускается моя программа, инициализурует блок питания (включает), который подает питание на устройство, после этого открывается VISA и начинается работа. Выключение должно происходить в обратном порядке, здесь ключевое слово должно. Что произойдет (как отреагирует Windows и LabVIEW) если питание с устройства пропадет прежде, чем закроется VISA? Передачи данных в этот момент нет, ошибки никакой не возникает, но порт то был открыт. Закроется ли VISA без проблем и ошибок без устройства на другой стороне?

P.S. Наверное глупость спросила, но отец говорил, что глупых вопросов в программировании не бывает :thank:
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Программная реинициализация USB

Сообщение dadreamer »

jane_wild писал(а): 24 май 2021, 21:55Я правильно поняла, кроме птички в Tools -> Options -> Environment -> Automatically close VISA sessions, нужно прописать в файле ini который после компиляции имеет такое же имя как и exe "cleanupVisa=True"?
В IDE после установки галочки ключ пропишется в labview.ini автоматически. Но в RTE (т.е., в EXE) все опции по дефолту и ключ нужно вносить руками в App.ini. Ну, то есть, опции среды из labview.ini сами не переносятся в App.ini.
jane_wild писал(а): 24 май 2021, 21:55Что произойдет (как отреагирует Windows) если питание с устройства пропадет прежде, чем закроется VISA?
Если физическая связь пропала, то на блоках VISA Read/Write возникнет таймаут. А дальше зависит от того, как в программе реализована обработка этого случая. Или закрывается существующая сессия через VISA Close и программа пытается заново подключиться. Или программа выкидывает окно об ошибке и принудительно завершается (а ля нажатие на Abort). Зависит от программиста. Но если в меню стоит птичка, то Abort программы в любом виде будет завершать все открытые VISA-сессии. Я обычно ставлю всегда эту опцию, так сказать, для успокоения совести :) Хуже от неё точно не будет, я по кр. мере проблем не ощущал. Кстати, по той ссылке, что я выше приводил, есть инфа о мониторе открытых сессий (инструментарий :labview: ). Утилита полезна как раз для таких случаев.
jane_wild писал(а): 24 май 2021, 21:55Передачи данных в этот момент нет, ошибки никакой не возникает, но порт то был открыт. Закроется ли VISA без проблем и ошибок без устройства на другой стороне?
Конечно закроется, сессия же в памяти процесса, а не в проводах. Если сомневаетесь, можете поэкспериментировать в NI-MAX. Все терминалы, что я встречал, без проблем завершают подключение, даже без связи с удалённой стороной.
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Программная реинициализация USB

Сообщение jane_wild »

to dadreamer
Спасибо, как всегда познавательно.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»