Символы завершения в NI-VISA

Overview

Различные шины, основанные на сообщениях, используют символы завершения для указания на конец передачи сообщения. Вам обычно не нужно использовать символы завершения для типов ресурсов VISA, которые соответствуют полному протоколу 488.2 (GPIB Instr, VXI/GPIB-VXI Instr, USB Instr и TCPIP Instr), потому что реализация протокола также имеет собственный механизм для указания на конец сообщения. При использовании других типов ресурсов VISA (прибор с последовательной связью, USB Raw и TCPIP Socket) Вам нужно сообщить VISA, как завершаются сообщения.

Символы завершения могут применяться как для входящих, так и для исходящих сообщений. Двумя распространенными символами завершения являются Line Feed (Перевод строки, отображение кода '\ n', десятичное число ASCII 10 или шестнадцатеричное 0x0A) и Carriage Return (Возврат каретки, отображение кода '\ r', десятичное число ASCII 13 или шестнадцатеричное 0x0D).

С завершением связаны четыре основных свойства NI-VISA. Два относятся к настройкам сообщений, а два других - к настройкам последовательной связи. Свойства сообщений: Termination Character(Символ завершения) и Termination Character Enabled(Символ завершения включен). Свойства последовательной связи: Serial End Modes for Reads(Режимы завершения для чтения) и Serial End Modes for Writes(Режимы завершения для записи). Мы подробно обсудим каждое свойство, а затем обсудим особые случаи.

Contents

Termination Character (TermChar)


Это свойство представляет собой 8-разрядное целое число без знака (unsigned 8-bit integer). Поэтому, если Вы не знаете значение ASCII для Вашего символа завершения, для задания свойства лучше всего сделать приведение типа данных, как показано выше. Используйте это значение свойства как символ завершения как для чтения, так и для записи. Установка этого значения свойства не влияет на то, включено ли его использование.

Хотя TermChar не ограничен последовательной связью, при обмене данными по шинам с полным протоколом 488.2 Вы можете захотеть использовать другие механизмы завершения, как обсуждалось во введении. Например, при обмене данными через GPIB стандартом является использование для завершения аппаратной линии EOI.

Примечание: VISA Configure Serial Port.vi устанавливает это свойство через параметр termination char(символ завершения), для которого по умолчанию используется Line Feed (перевод строки, 0x0A = '\ n' = LF).

Termination Character Enabled (TermChar En)




Если для параметра установлено значение True, это свойство говорит VISA прекращать чтение при обнаружении символа завершения. Обратите внимание, что это не ограничено последовательной передачей; Вы можете использовать это свойство для прекращения чтения на других шинах.

Важно: Это свойство игнорируется и не возвращает ошибку, если для Serial End Modes for Reads (см. ниже) задано значение Term Char.

Это свойство не влияет на символ завершения для записи.

Примечание: VISA Configure Serial Port.vi устанавливает это свойство через параметр Enable Termination Char, который по умолчанию равен True.

Serial End Modes for Reads (ASRL End In)


Это свойство указывает метод, используемый для завершения операции чтения из буфера программного обеспечения только для последовательной связи. Допустимые значения:

Значение
Описание
None (0) Чтение не останавливается, когда встречен символ завершения.
Last Bit (1) Чтение останавливается, как только принят символ с высоким уровнем в последнем бите.
TermChar (2)
(По умолчанию)
Чтение останавливается, когда обнаружен символ завершения. Это значение по умолчанию.


Важно: Если значение установлено на TermChar (2), значение свойства Termination Character Enabled игнорируется.

Если достигается количество байтов (указанное в VISA Read) или тайм-аут (свойство VISA), чтение прекращается независимо от того, какое значение установлено для этого свойства.

Это свойство можно отключить, установив для свойства Suppress End Enabled (Подавление завершения, Suppress End En) значение true.

Примечание: VISA Configure Serial Port.vi устанавливает это свойство как None (нет), если ввод Enable Termination Char задан как False; если ввод Enable Termination Char задан как True, он устанавливает его как значение TermChar.

Serial End Modes for Write (ASRL End Out)



Это свойство указывает метод, используемый для завершения операций записи. Допустимые значения:

Значение
Описание
None (0)
(По умолчанию)
При записи символ завершения не добавляется.
Last Bit (1) Операция записи отправляет все, кроме последнего символа, с низким уровнем последнего бита, и передает последний символ с высоким уровнем последнего бита.
TermChar (2) Значение символа завершения добавляется в конец всех записей.
Break (3) После каждой записи отправляется перерыв последовательной передачи. Перерыв последовательной передачи - это непрерывная серия значений «пробел», часто используемая для сообщения прибору либо о прекращении выполняемой операции, либо о сбросе любых данных в выходном буфере. Используйте этот метод с осторожностью.


Вы можете встретить старые драйверы приборов, добавляющие символ завершения перед VISA Write. Это было связано с тем, что более старые версии VISA не поддерживали это свойство, поэтому пользователям приходилось явно добавлять символы завершения. Это более не требуется, так как установка этого свойства делает это за Вас.

Вы можете отключить это свойство, установив для свойства Send End Enabled (Включение завершения при отправке, Send End En) значение false.

Примечание: VISA Configure Serial Port.vi не устанавливает это свойство. Вы должны установить его через узел свойств, как показано на рисунке выше.

Связь ASCII


При выполнении передачи данных ASCII в начале процедуры инициализации приложения или драйвера задайте свойства завершения и другие параметры связи по шине. Настройки символов завершения должны соответствовать конфигурации Вашего прибора. Помните, что некоторые приборы имеют настраиваемые параметры. Обратитесь к руководству пользователя для Вашего конкретного прибора.

Рекомендация: Для более надежных приложений, которые могут работать с несколькими шинами, всегда поддерживайте синхронизацию между Termination Character Enabled и Serial End Modes for Reads (то есть, когда Вы включаете/отключаете одну, также задайте другую).

Двоичная связь


При выполнении двоичной связи чтение может завершиться преждевременно, если одно из значений двоичных данных имеет такое же двоичное представление, как и символ завершения. Поэтому отключите символ завершения, задав для параметра Termination Character Enabled значение False и для Serial End Modes for Reads значение None (0), как показано ниже. Вы должны использовать другой метод прекращения чтения, такой как аппаратная линия или подсчет байтов.


Примечание: Поскольку обычно Вам не нужно включать символы завершения при использовании типов ресурсов VISA, которые соответствуют полному протоколу 488.2 (GPIB Instr, VXI/GPIB-VXI Instr, USB Instr и TCPIP Instr), двоичная связь проще, потому как Вам не нужно беспокоиться о предварительном отключении настроек символа завершения.

Приборы, использующие несколько символов завершения


Некоторые приборы отправляют несколько символов завершения, таких как Carriage Return (перевод строки) и Line Feed (возврат каретки) (отображение кода '\r\n' или шестнадцатеричное ASCII 0x0D0A). Поскольку VISA допускает только один символ завершения, Вы должны найти альтернативное решение. Сначала проверьте, является ли последовательность завершения для прибора конфигурируемой. Если нет, то Вы можете настроить VISA на завершение по последнему символу и использовать функцию Scan from String, чтобы извлечь из текущего сообщения другие символы. На следующем рисунке показан код, который работает для завершения '\r\n' или '\n'.


Примечание: Для использования этой конфигурации свойство Display Style (Стиль отображения) должен быть установлен на коды с обратной косой чертой ('\'). Для получения дополнительной информации о отображении кодов с обратной косой чертой ('\') см. Отображение кодов обратной косой черты ('\') - Справка LabVIEW.