чтение VISA
-
- beginner
- Сообщения: 11
- Зарегистрирован: 12 авг 2014, 08:06
- Версия LabVIEW: 2012
- Контактная информация:
чтение VISA
Здравствуйте!
При работе с АЦП столкнулась с проблемой. При отправке команды происходит опрос восьми каналов, и на выходе должны получить 8 строк, показывающие значения по каждому каналу, и строку «ок». Отправляя команду через программу Terminal на выходе видим
A0004C4D
A1004C4D
A200595B
A3006467
A4007074
A500797E
A600848A
A7008F96
OK.
Проделывая всю ту же операцию в программе LabVIEW через VISA на выходе получаем лишь одну строку, для получение всех строк требуется отправить 9 запросов. Каждая команда заканчивается возвратом каретки и переводом строки.
С чем это может быть cвязано?
При работе с АЦП столкнулась с проблемой. При отправке команды происходит опрос восьми каналов, и на выходе должны получить 8 строк, показывающие значения по каждому каналу, и строку «ок». Отправляя команду через программу Terminal на выходе видим
A0004C4D
A1004C4D
A200595B
A3006467
A4007074
A500797E
A600848A
A7008F96
OK.
Проделывая всю ту же операцию в программе LabVIEW через VISA на выходе получаем лишь одну строку, для получение всех строк требуется отправить 9 запросов. Каждая команда заканчивается возвратом каретки и переводом строки.
С чем это может быть cвязано?
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: чтение VISA
Покажите программу, скорее всего там однократное считывание из порта идет, а вам необходимо читать, пока не получите OKAnna73 писал(а):Проделывая всю ту же операцию в программе LabVIEW через VISA на выходе получаем лишь одну строку, для получение всех строк требуется отправить 9 запросов. Каждая команда заканчивается возвратом каретки и переводом строки.
С чем это может быть cвязано?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: чтение VISA
Попробуйте в качестве терминального символа заказать либо точку (.)
Последний раз редактировалось Borjomy_1 28 сен 2016, 13:15, всего редактировалось 1 раз.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: чтение VISA
А как это сделать?Borjomy_1 писал(а):Попробуйте в качестве терминального символа заказать ... терминальную строку целиком (OK.перевод строки)
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: чтение VISA
А вот так :)
- Вложения
-
- VISA Read while not OK.PNG (9.59 КБ) 2583 просмотра
-
- VISA Read while not OK.vi
- (16.59 КБ) 79 скачиваний
-
- beginner
- Сообщения: 11
- Зарегистрирован: 12 авг 2014, 08:06
- Версия LabVIEW: 2012
- Контактная информация:
Re: чтение VISA
спасибо большое за ответы.
в данном случае зная количество строк я отправляла нужное количество запросов. вопрос в том, что это очень замедляет сбор данных и возможно ли обойти этот момент.
в данном случае зная количество строк я отправляла нужное количество запросов. вопрос в том, что это очень замедляет сбор данных и возможно ли обойти этот момент.
-
- beginner
- Сообщения: 11
- Зарегистрирован: 12 авг 2014, 08:06
- Версия LabVIEW: 2012
- Контактная информация:
Re: чтение VISA
то же самое происходит с любым запросом где есть переход на другую строку. visa считывает 1 строку, а чтобы увидеть следующую нужно отправить еще один запрос. так и должно быть?
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: чтение VISA
Скорее не запрос.Это Функция чтения строки. (она не запрашивает, а считывает данные из буфера до признака конца строки). Так и должно быть. В принципе вы в цикле можете считывать строки после выдачи команды, в ожидании строки Ок, а результаты складывать. Т.е условием выхода из цикла будет то, что считанная строка по длине меньше строки с числом или соответствует строке "ОК." (это как вам нравится). Можно еще учесть реакцию на неправильную команду или то, что удаленное устройство не подключено. Таймаут следует, кстати, уменьшить. Если не подключено или ошибка, то программа зависнет на пару минут.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: чтение VISA
Anna73, после строки "ОК." тоже идёт Line Feed (0xA) или точка - последний символ? Просто у вас там на 9-й операции чтения указано считать 10 байт... Выведите ответ от прибора в виде Hex или \ кодов (ПКМ на индикаторе -> \ Codes Display или Hex Display). Ошибка по таймауту возникает после всех этих 9 чтений или нет?
-
- beginner
- Сообщения: 11
- Зарегистрирован: 12 авг 2014, 08:06
- Версия LabVIEW: 2012
- Контактная информация:
Re: чтение VISA
немного сбило, что в терминале считываются все данные. спасибо большое, теперь все понятно)
-
- beginner
- Сообщения: 11
- Зарегистрирован: 12 авг 2014, 08:06
- Версия LabVIEW: 2012
- Контактная информация:
Re: чтение VISA
это подпрограмма и в таком виде никаких ошибок не возникает. В данном случае удивило именно то, что надо считывать данные 9 раз подряд вместо одного.10 байт поставила как на всех остальных строках для удобства ( возможно количество байт надо уменьшить). после "ok" идет line feeddadreamer писал(а):Anna73, после строки "ОК." тоже идёт Line Feed (0xA) или точка - последний символ? Просто у вас там на 9-й операции чтения указано считать 10 байт... Выведите ответ от прибора в виде Hex или \ кодов (ПКМ на индикаторе -> \ Codes Display или Hex Display). Ошибка по таймауту возникает после всех этих 9 чтений или нет?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: чтение VISA
В данном случае всё логично. VISA Read настроен на работу с терминатором, который по умолчанию равен 0xA = \n = Line Feed. Как только в строке встречается такой символ, VISA Read прекращает работу и выдаёт строку в . Можно перенастроить это поведение, но не нужно, т.к. такой терминатор заложен в вашем протоколе. Число считываемых байт можно сделать и больше, хоть 4096, результат будет такой же. А вот меньше, чем реальный ответ от прибора, делать не стоит, т.к. будет считана лишь часть строки. А вот интересно, что ответит прибор, если каналов окажется подключено меньше, чем у вас заложено в программе? Если ответ окажется короче на 1 строку, то на последнем VISA Read может произойти таймаут. Потому, наверное, лучше не задавать число проходов VISA Read константой, а читать в While до тех пор, пока строка не окажется равна "ОК.", параллельно складируя результат в массив. Ну, а после цикла уже разбирать сам массив (смотреть размер, элементы).Anna73 писал(а):это подпрограмма и в таком виде никаких ошибок не возникает. В данном случае удивило именно то, что надо считывать данные 9 раз подряд вместо одного.10 байт поставила как на всех остальных строках для удобства ( возможно количество байт надо уменьшить). после "ok" идет line feeddadreamer писал(а):Anna73, после строки "ОК." тоже идёт Line Feed (0xA) или точка - последний символ? Просто у вас там на 9-й операции чтения указано считать 10 байт... Выведите ответ от прибора в виде Hex или \ кодов (ПКМ на индикаторе -> \ Codes Display или Hex Display). Ошибка по таймауту возникает после всех этих 9 чтений или нет?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 0 Ответы
- 503 Просмотры
-
Последнее сообщение Juri
-
- 2 Ответы
- 662 Просмотры
-
Последнее сообщение Borjomy_1
-
- 4 Ответы
- 242 Просмотры
-
Последнее сообщение Embedder74