Scan from string Visa Com

Простейшие вопросы в области инженерной разработки
ujin
user
user
Сообщения: 94
Зарегистрирован: 28 июл 2019, 13:16
Версия LabVIEW: 19
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Scan from string Visa Com

Сообщение ujin »

использование терминирующего символа
Ваш пример хороший, но не использованы на 100% символы в посылке.
В этой посылке в качестве терминирующего символа строки используется 2 символа возврат каретки и перевод строки 0xA,0xD. В VISA только 1 символ.
А терминирующий символ всей посылки пустая строка + 0xA,0xD. С учетом предыдущих 0xA,0xD четыре байта.
В VISA я не видел возможность использования нескольких байт в качестве терминирующего символа.
Использование 2х символов для определения конца строки и 4х символов для посылки более надежно чем одного. Хотя в данном случае скорее всего не нужно.
С одним символом, без CRC и др. способов проверки посылки наверное можно использовать только для лабораторной работы.
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Scan from string Visa Com

Сообщение Kosist »

Терминирующий символ - это условность, которая помогает более легко получать данные. UART посылает 8 битов, и ему все равно на логику посылки. Понятно, что если известно что каждая посылка заканчивается пробелом + 0xA,0xD, то в качестве термин. символа логично выбрать последний символ цепочки.
CRC, спец. символы начала/конца посылки - это уже уровень протокола, он может, но не обязан быть связан с аппаратным уровнем.
Т.е. одну и ту же комманду можно передавать разными каналами - UART, TCP/IP, и т.д., при этом используя одинаковый "синтаксис" комманд. А к нему уже могут добавляться вещи, характерные для канала общения. Т.е. теоретически "тело" комманды которую посылают при помощи CAN и UART будет одинаковое, и парсинг можно делать одинаковым способом, но например CAN будет иметь больше дополнительных байтов - составляющих ее посылки.
Само собой, что может случится так, что термин. символ будет в "теле" посылки, а не в конце. В таком случае приложение должно обрабатывать принятую посылку - чтобы определить, полученная она целиком или нет. Но это нужно делать и с, и без термин. символа (если мы говорим о данных читаемых при помощи VISA Read).
Мы делили апельсин - много наших полегло...
ujin
user
user
Сообщения: 94
Зарегистрирован: 28 июл 2019, 13:16
Версия LabVIEW: 19
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Scan from string Visa Com

Сообщение ujin »

логично выбрать последний символ цепочки
Если будет указано количество байт на входе byte count и указано использование терминального символа, VISA Read остановится и по символу и по количеству байт и по таймауту?
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Scan from string Visa Com

Сообщение Kosist »

Выписка из документации функции VISA Read Details
This function might return less than the number of bytes requested if the function reaches the end of the buffer, reaches a termination character, or if a timeout occurs. The output error cluster indicates if a timeout has occurred.
Так что да, если будет прочитан термин. символ то VISA Read остановится и возвратит столько байтов сколько будет в буффере; но если будет таймаут - то выскочит ошибка.
Мы делили апельсин - много наших полегло...
ujin
user
user
Сообщения: 94
Зарегистрирован: 28 июл 2019, 13:16
Версия LabVIEW: 19
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Scan from string Visa Com

Сообщение ujin »

Спасибо за информацию.
Можно мой прием тогда нужно переделать с использованием терминального символа.
Посмотрел еще прием из библиотеки Modbus ASCII, с некоторых пор библиотека MODBUS открыта. Там так же остановки приема по терминальному символу VISA и далее проверка терминального символа 0xA 0XD
Вложения
Read ADU Packet.png
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

Re: Scan from string Visa Com

Сообщение Select »

После ряда экспериментов по работе с буфером я представлю на критику видеоролик своей, альтернативной версии кода.
LabView 14,18
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

Re: Scan from string Visa Com

Сообщение Select »

Сейчас это работает именно так, как хотел.
Несколько мешает начальное смещение символов в момент старта, пока буфер не заполнится ровным количеством символов.
Вложения
ADC.png
LabView 14,18
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

Re: Scan from string Visa Com

Сообщение Select »

Я подключил через селективный переключатель сенсор и последовательно в процессе опроса переключаю его по всем каналам, аппаратно меняю его параметры. Любой из 10 каналов можно в процессе программно отключить. Все работает в реальном времени, с параметрами в индикаторах могу выполнять любые логические действия. :drink:
Благодарю всех кто принимал участие в обсуждении.
LabView 14,18
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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