Автоматическое определение порта устройства с VISA
-
- assistant
- Сообщения: 120
- Зарегистрирован: 05 сен 2019, 21:01
- Версия LabVIEW: 2019
- Контактная информация:
Автоматическое определение порта устройства с VISA
Добрый день!
У меня есть USB устройство с определенными характеристиками (такие как скорость передачи данных, ширина отдельного пакета - всё в соответствии протоколом общения с устройством) и название устройства под которым видит его система (Windows 10). Распознается устройство как COM-порт.
Как сделать так, чтобы не я занимался определением порта устройства при запуске программы VI, а сам VI его определял автоматически (например, подцепляя параметры устройства из файла и по ним производя поиск) ?
У меня есть USB устройство с определенными характеристиками (такие как скорость передачи данных, ширина отдельного пакета - всё в соответствии протоколом общения с устройством) и название устройства под которым видит его система (Windows 10). Распознается устройство как COM-порт.
Как сделать так, чтобы не я занимался определением порта устройства при запуске программы VI, а сам VI его определял автоматически (например, подцепляя параметры устройства из файла и по ним производя поиск) ?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Автоматическое определение порта устройства с VISA
Нужно получить номер порта по его имени из Диспетчера устройств?
Если так, то...
Простое решение: http://labviewportal.org/viewtopic.php?p=73401#p73401 : http://labviewportal.org/viewtopic.php?p=73514#p73514 Для учёбной задачи некоторыми нюансами этого метода можно пренебречь.
Альтернативные варианты (если важна надёжность):
http://labviewportal.org/viewtopic.php?p=73437#p73437
http://labviewportal.org/viewtopic.php?p=73465#p73465
http://labviewportal.org/viewtopic.php?p=73472#p73472
Перед использованием рекомендую полностью прочитать тему.
Если так, то...
Простое решение: http://labviewportal.org/viewtopic.php?p=73401#p73401 : http://labviewportal.org/viewtopic.php?p=73514#p73514 Для учёбной задачи некоторыми нюансами этого метода можно пренебречь.
Альтернативные варианты (если важна надёжность):
http://labviewportal.org/viewtopic.php?p=73437#p73437
http://labviewportal.org/viewtopic.php?p=73465#p73465
http://labviewportal.org/viewtopic.php?p=73472#p73472
Перед использованием рекомендую полностью прочитать тему.
-
- assistant
- Сообщения: 120
- Зарегистрирован: 05 сен 2019, 21:01
- Версия LabVIEW: 2019
- Контактная информация:
Re: Автоматическое определение порта устройства с VISA
[quote=="dadreamer"]Нужно получить номер порта по его имени из Диспетчера устройств?
Если так, то...
Простое решение: http://labviewportal.org/viewtopic.php?p=73401#p73401 : http://labviewportal.org/viewtopic.php?p=73514#p73514 Для учёбной задачи некоторыми нюансами этого метода можно пренебречь.
Альтернативные варианты (если важна надёжность):
http://labviewportal.org/viewtopic.php?p=73437#p73437
http://labviewportal.org/viewtopic.php?p=73465#p73465
http://labviewportal.org/viewtopic.php?p=73472#p73472
Перед использованием рекомендую полностью прочитать тему.[/quote]
Спасибо за полезные ссылки, посмотрел. Хотел в простом случае написать программу и понять, как работает сама VISA F - но получилась ошибка.
У меня два COM устройства различающиеся только port description (то самое имя в диспетчере) и bound rate. У первого bound rate = 9600, у второго 115200. (См. рисунки).
Но, при использовании VISA F - она оба находит по bound rate == 9600, при 115200 выдает ошибку. Можете сказать, в чем причина ?
Если так, то...
Простое решение: http://labviewportal.org/viewtopic.php?p=73401#p73401 : http://labviewportal.org/viewtopic.php?p=73514#p73514 Для учёбной задачи некоторыми нюансами этого метода можно пренебречь.
Альтернативные варианты (если важна надёжность):
http://labviewportal.org/viewtopic.php?p=73437#p73437
http://labviewportal.org/viewtopic.php?p=73465#p73465
http://labviewportal.org/viewtopic.php?p=73472#p73472
Перед использованием рекомендую полностью прочитать тему.[/quote]
Спасибо за полезные ссылки, посмотрел. Хотел в простом случае написать программу и понять, как работает сама VISA F - но получилась ошибка.
У меня два COM устройства различающиеся только port description (то самое имя в диспетчере) и bound rate. У первого bound rate = 9600, у второго 115200. (См. рисунки).
Но, при использовании VISA F - она оба находит по bound rate == 9600, при 115200 выдает ошибку. Можете сказать, в чем причина ?
- Вложения
-
- test.vi
- (8.83 КБ) 135 скачиваний
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Автоматическое определение порта устройства с VISA
>> Но, при использовании VISA F - она оба находит по bound rate == 9600, при 115200 выдает ошибку. Можете сказать, в чем причина ?
Не смогу на 100% сказать, т.к. этим способом предпочитаю не пользоваться по причинам, изложенным в теме. Попробуйте поставить search mode = Include All Aliases. Обе скорости вы выставляли через MAX, потом проверяли в программе? MAX записывает эти данные в настроечный файл, VISA Find потом читает этот файл. Если по-прежнему не будет находить, значит, на скорость полагаться нельзя. По идее этот параметр не является стабильным, в отличие от идентификатора, потому что каждая программа, работающая с портом, выставляет собственные настройки. Скорее всего, MAX должен помнить собственные настройки, просто по какой-то причине они не установились. У меня дома нет NI-VISA, поставить и проверить пока не могу.
Не смогу на 100% сказать, т.к. этим способом предпочитаю не пользоваться по причинам, изложенным в теме. Попробуйте поставить search mode = Include All Aliases. Обе скорости вы выставляли через MAX, потом проверяли в программе? MAX записывает эти данные в настроечный файл, VISA Find потом читает этот файл. Если по-прежнему не будет находить, значит, на скорость полагаться нельзя. По идее этот параметр не является стабильным, в отличие от идентификатора, потому что каждая программа, работающая с портом, выставляет собственные настройки. Скорее всего, MAX должен помнить собственные настройки, просто по какой-то причине они не установились. У меня дома нет NI-VISA, поставить и проверить пока не могу.
-
- assistant
- Сообщения: 120
- Зарегистрирован: 05 сен 2019, 21:01
- Версия LabVIEW: 2019
- Контактная информация:
Re: Автоматическое определение порта устройства с VISA
[quote=="dadreamer"]>> Но, при использовании VISA F - она оба находит по bound rate == 9600, при 115200 выдает ошибку. Можете сказать, в чем причина ?
Не смогу на 100% сказать, т.к. этим способом предпочитаю не пользоваться по причинам, изложенным в теме. Попробуйте поставить search mode = Include All Aliases. Обе скорости вы выставляли через MAX, потом проверяли в программе? MAX записывает эти данные в настроечный файл, VISA Find потом читает этот файл. Если по-прежнему не будет находить, значит, на скорость полагаться нельзя. По идее этот параметр не является стабильным, в отличие от идентификатора, потому что каждая программа, работающая с портом, выставляет собственные настройки. Скорее всего, MAX должен помнить собственные настройки, просто по какой-то причине они не установились. У меня дома нет NI-VISA, поставить и проверить пока не могу.[/quote]
[quote=="dadreamer"]
Если по-прежнему не будет находить, значит, на скорость полагаться нельзя.[/quote]
Теперь VISA F выдает оба COM устройства (т.е и с bound rate = 9600).
>> идентификатор
Вы имеете ввиду Port description в NI MAX - т.е. название в диспетчере задач в качестве надежного определителя ?
Не смогу на 100% сказать, т.к. этим способом предпочитаю не пользоваться по причинам, изложенным в теме. Попробуйте поставить search mode = Include All Aliases. Обе скорости вы выставляли через MAX, потом проверяли в программе? MAX записывает эти данные в настроечный файл, VISA Find потом читает этот файл. Если по-прежнему не будет находить, значит, на скорость полагаться нельзя. По идее этот параметр не является стабильным, в отличие от идентификатора, потому что каждая программа, работающая с портом, выставляет собственные настройки. Скорее всего, MAX должен помнить собственные настройки, просто по какой-то причине они не установились. У меня дома нет NI-VISA, поставить и проверить пока не могу.[/quote]
[quote=="dadreamer"]
Если по-прежнему не будет находить, значит, на скорость полагаться нельзя.[/quote]
Теперь VISA F выдает оба COM устройства (т.е и с bound rate = 9600).
>> идентификатор
Вы имеете ввиду Port description в NI MAX - т.е. название в диспетчере задач в качестве надежного определителя ?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Автоматическое определение порта устройства с VISA
>> Вы имеете ввиду Port description в NI MAX - т.е. название в диспетчере задач в качестве надежного определителя ?
Да, или наименование из диспетчера устройств (Interface Information:Interface Description может отличаться от наименования порта из диспетчера). При одном условии - одновременно не должно быть подключено более одной аналогичной железки. Иначе придётся думать, как их различать между собой.
Да, или наименование из диспетчера устройств (Interface Information:Interface Description может отличаться от наименования порта из диспетчера). При одном условии - одновременно не должно быть подключено более одной аналогичной железки. Иначе придётся думать, как их различать между собой.
-
- assistant
- Сообщения: 120
- Зарегистрирован: 05 сен 2019, 21:01
- Версия LabVIEW: 2019
- Контактная информация:
Re: Автоматическое определение порта устройства с VISA
[quote=="dadreamer"]
Да, или наименование из диспетчера устройств (Interface Information:Interface Description может отличаться от наименования порта из диспетчера). При одном условии - одновременно не должно быть подключено более одной аналогичной железки. Иначе придётся думать, как их различать между собой.[/quote]
Можете подсказать, что можно сделать с тем, что все названия на русском языке (названия в VI, после исполнения вывод port description типа "устройство с последовательным интерфейсом USB") выводятся как абракадабра ?
Да, или наименование из диспетчера устройств (Interface Information:Interface Description может отличаться от наименования порта из диспетчера). При одном условии - одновременно не должно быть подключено более одной аналогичной железки. Иначе придётся думать, как их различать между собой.[/quote]
Можете подсказать, что можно сделать с тем, что все названия на русском языке (названия в VI, после исполнения вывод port description типа "устройство с последовательным интерфейсом USB") выводятся как абракадабра ?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Автоматическое определение порта устройства с VISA
dakishi, я бы порекомендовал вот это: http://labviewportal.org/viewtopic.php?p=64602#p64602 , но есть некоторые сомнения. У вас локаль в системе русская стоит? Запостите строку с кракозябрами сюда, чтобы я её мог скопировать. И назовите , который использовали.
-
- assistant
- Сообщения: 120
- Зарегистрирован: 05 сен 2019, 21:01
- Версия LabVIEW: 2019
- Контактная информация:
Re: Автоматическое определение порта устройства с VISA
[quote=="dadreamer"]dakishi, я бы порекомендовал вот это: http://labviewportal.org/viewtopic.php?p=64602#p64602 , но есть некоторые сомнения. У вас локаль в системе русская стоит? Запостите строку с кракозябрами сюда, чтобы я её мог скопировать. И назовите , который использовали.[/quote]
Язык ОС - англ, как и LabVIew.
Строка копируется сюда нормально: Устройство с последовательным интерфейсом USB (COM3)
VI Ваш - ListCOMs
Язык ОС - англ, как и LabVIew.
Строка копируется сюда нормально: Устройство с последовательным интерфейсом USB (COM3)
VI Ваш - ListCOMs
- Вложения
-
- List COMs - 2 (3).vi
- (58.22 КБ) 123 скачивания
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Автоматическое определение порта устройства с VISA
>> Язык ОС - англ, как и LabVIew.
В этом и проблема. Хотите поддержку русского языка - меняйте локаль на русскую.
https://www.isunshare.com/windows-10/ch ... ws-10.html У меня вот так отображается: Или работайте только с VISA.
В этом и проблема. Хотите поддержку русского языка - меняйте локаль на русскую.
https://www.isunshare.com/windows-10/ch ... ws-10.html У меня вот так отображается: Или работайте только с VISA.
-
- assistant
- Сообщения: 120
- Зарегистрирован: 05 сен 2019, 21:01
- Версия LabVIEW: 2019
- Контактная информация:
Re: Автоматическое определение порта устройства с VISA
[quote=="dadreamer"]
Или работайте только с VISA.[/quote]
Так вот она и через чистый VISA тоже самое делает.
Или работайте только с VISA.[/quote]
Так вот она и через чистый VISA тоже самое делает.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Автоматическое определение порта устройства с VISA
Просто на скриншоте выше по-русски было написано описание порта.
В таком случае не остаётся других вариантов, кроме предложенного. Я не знаю, как заставить систему понимать русский, если он не используется для локализации.-
- assistant
- Сообщения: 120
- Зарегистрирован: 05 сен 2019, 21:01
- Версия LabVIEW: 2019
- Контактная информация:
Re: Автоматическое определение порта устройства с VISA
[quote=="dadreamer"]Просто на скриншоте выше по-русски было написано описание порта.
Хорошо, спасибо за ответы! Возможно, можно просто скопировать абракадабру для поиска - это тоже символы, идентификаторы машины, просто в другой кодировке.
В таком случае не остаётся других вариантов, кроме предложенного. Я не знаю, как заставить систему понимать русский, если он не используется для локализации.[/quote]Хорошо, спасибо за ответы! Возможно, можно просто скопировать абракадабру для поиска - это тоже символы, идентификаторы машины, просто в другой кодировке.
-
- assistant
- Сообщения: 120
- Зарегистрирован: 05 сен 2019, 21:01
- Версия LabVIEW: 2019
- Контактная информация:
Re: Автоматическое определение порта устройства с VISA
Вопрос такой еще возник. Если VISA F выдает строку с описанием ресурса, то при подаче на VISA O выполняется неявное преобразование типов. Как в явном виде преобразовать String в Visa resource name ?
-
- assistant
- Сообщения: 120
- Зарегистрирован: 05 сен 2019, 21:01
- Версия LabVIEW: 2019
- Контактная информация:
Re: Автоматическое определение порта устройства с VISA
И, также я провел тест. Открыл с помощью VISA O ресурс на время с помощью вспомогательного VI и оставил работать. Этот же ресурс, пока этот VI работает, я открыл VISA O и получил дескриптор ресурса (программа поиска имён представленная мною перед вашем последним сообщением). Выходит - я могу получить доступ к ресурсу пока сессия для него открыта в другом месте т.е. прибор занят ?
Если убрать в property node (Intf Inst Name) игнорирование ошибок (помечено красным в углу как ?!) - будет то же самое.
Если убрать в property node (Intf Inst Name) игнорирование ошибок (помечено красным в углу как ?!) - будет то же самое.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 0 Ответы
- 506 Просмотры
-
Последнее сообщение Juri
-
- 2 Ответы
- 662 Просмотры
-
Последнее сообщение Borjomy_1
-
- 4 Ответы
- 246 Просмотры
-
Последнее сообщение Embedder74