Этот пример исследует операции чтения ASCII и операции записи с объектом VISA. Используемый инструмент был осциллографом Tektronix® TDS 210.
Поддержка объектов VISA семь интерфейсов: последовательный, GPIB, VXI, GPIB-VXI, TCPIP, USB и RSIB. Этот пример исследует операции чтения ASCII и операции записи с помощью объекта VISA-GPIB. Однако операции чтения ASCII и операции записи для VISA-GPIB, VISA-VXI, VISA-GPIB-VXI, VISA-TCPIP, VISA-SERIAL и объектов VISA-USB идентичны друг другу. Поэтому можно использовать те же команды. Единственной разницей является имя ресурса, заданное в конструкторе VISA.
Операции чтения ASCII и операции записи для последовательного ВИЗОЙ объекта идентичны операциям чтения ASCII и операциям записи для объекта последовательного порта. Поэтому, чтобы изучить, как выполнить операции чтения ASCII и операции записи для последовательного ВИЗОЙ объекта, необходимо обратиться к примеру по Чтению-записи ASCII Последовательного порта.
Операции чтения ASCII и операции записи для объекта VISA-RSIB идентичны операциям чтения ASCII и операциям записи для VISA-GPIB, VISA-VXI, VISA-GPIB-VXI, VISA-TCPIP, и объекты VISA-USB, кроме объекта VISA-RSIB не поддерживает свойства EOSCharCode и EOSMode.
Эти функции используются при чтении и записи текста:
Функция | Цель |
---|---|
fprintf | Запишите текст в инструмент. |
fscanf | Считайте данные из инструмента и отформатируйте как текст. |
Эти свойства сопоставлены с чтением и записью текста:
Свойство | Цель |
---|---|
ValuesReceived | Задает общее количество значений, считанных из инструмента. |
ValuesSent | Задает общее количество значений, отправленных в инструмент. |
InputBufferSize | Задает общее количество байтов, которые могут быть поставлены в очередь во входном буфере когда-то. |
OutputBufferSize | Задает общее количество байтов, которые могут быть поставлены в очередь в буфере вывода когда-то. |
EOSMode | Конфигурирует режим завершения Конца Строки. |
EOSCharCode | Задает терминатор строки Конца Строки. |
EOIMode | Включает или отключает утверждение режима EOI в конце операции записи. |
Необходимо создать объект VISA-GPIB. В этом примере объект создается с помощью ni
драйвер и строка ресурса VISA, показанная ниже.
v = visa('ni', 'GPIB0::2::INSTR');
Прежде чем можно будет выполнить операцию чтения или операцию записи, необходимо соединить объект VISA-GPIB с инструментом с fopen
функция.
fopen(v);
Если объект был успешно соединен, его Status
свойство автоматически сконфигурировано к open
.
v.Status ans = open
Вы используете fprintf
функционируйте, чтобы записать данные о ASCII в инструмент. Например, the'Display:Contrast'
команда изменит контрастность дисплея осциллографа.
fprintf(v, 'Display:Contrast 45');
По умолчанию, fprintf
функция действует в синхронном режиме. Это означает тот fprintf
блокирует командную строку MATLAB®, пока одно из следующего не происходит:
Все данные записаны
Тайм-аут происходит, как задано Timeout
свойство
По умолчанию fprintf
функционируйте данные о ASCII записей с помощью %s\n
формат. Можно также задать формат команды, записанной путем обеспечения третьего входного параметра fprintf
. Принятые символы преобразования формата включают: d, i, o, u, x, X, f, e, E, g, G, c, и s. Например:
fprintf(v, '%s', 'Display:Contrast 45');
OutputBufferSize
OutputBufferSize
свойство задает максимальное количество байтов, которые могут быть записаны в инструмент целиком. По умолчанию, OutputBufferSize
512
.
v.OutputBufferSize ans = 512
Если команда задана в fprintf
содержит больше чем 512 байтов, ошибка возвращена, и никакие данные не записаны в инструмент.
EOIMode, EOSMode и EOSCharCode
По умолчанию линия Конца или идентифицирует (EOI) утверждается, когда последний байт записан в инструмент. Этим поведением управляет EOIMode
свойство. Когда EOIMode
установлен в on
, линия EOI утверждается, когда последний байт записан в инструмент. Когда EOIMode
установлен в off
, линия EOI не утверждается, когда последний байт записан в инструмент.
Все случаи \n
в команде, записанной в инструмент, заменяются EOSCharCode
значение свойства, если EOSMode
установлен в write
или read&write
.
ValuesSent
ValuesSent
свойство обновляется количеством значений, записанных в инструмент. Обратите внимание на то, что EOSMode
по умолчанию не установлен ни в один. Поэтому
EOSCharCode
не отправляется как последний байт записи.
fprintf(v, 'Display:Contrast 45'); v.ValuesSent ans = 57
Очистите любые данные во входном буфере прежде, чем переместиться в следующий шаг.
flushinput(v);
Вы используете fscanf
функционируйте, чтобы считать данные о ASCII из инструмента. Например, команда осциллографа 'Display:Contrast?'
возвращает контрастность дисплея осциллографа:
fprintf(v, 'Display:Contrast?'); data = fscanf(v) data = 45
fscanf
блоки до одного из следующего происходят:
Линия EOI утверждается
Терминатор строки получен, как задано EOSCharCode
свойство
Тайм-аут происходит, как задано Timeout
свойство
Входной буфер заполнен
Конкретное количество значений получено
По умолчанию, fscanf
функционируйте данные о чтениях с помощью '%c'
формат. Можно также задать формат данных, считанных путем обеспечения второго входного параметра fscanf
. Принятые символы преобразования формата включают: d, i, o, u, x, X, f, e, E, g, G, c, и s. Например, следующая команда возвратит напряжение как десятичное число:
fprintf(v, 'Display:Contrast?'); data = fscanf(v, '%d') data = 45 isnumeric(data) ans = 1
InputBufferSize
InputBufferSize
свойство задает максимальное количество байтов, которые можно считать из инструмента. По умолчанию, InputBufferSize
512
.
v.InputBufferSize ans = 512
ValuesReceived
ValuesReceived
свойство указывает на общее количество значений, считанных из инструмента. Обратите внимание, что последнее полученное значение является переводом строки.
fprintf(v, 'Display:Contrast?'); data = fscanf(v) data = 45 v.ValuesReceived ans = 9
EOSMode и EOSCharCode
Отключать передачу данных на основе получения EOSCharCode
, необходимо установить EOSMode
свойство к read
или read&write
и EOSCharCode
свойство к коду ASCII, для которого должна завершить работу операция чтения. Например, если вы устанавливаете EOSMode
к read
и EOSCharCode
к 10
, затем один из способов, которыми завершает работу чтение, - когда символ перевода строки получен.
Стандартный ответ на вертикальный запрос усиления находится в экспоненциальном представлении.
fprintf(v, 'CH1:Scale?') data = fscanf(v) data = 1.0E0
Теперь сконфигурируйте объект VISA-GPIB отключить операцию чтения, когда символ 'E' будет получен. Первое чтение завершает работу, когда символ 'E' получен.
set(v, 'EOSMode', 'read') set(v, 'EOSCharCode', double('E')) fprintf(v, 'CH1:Scale?') data = fscanf(v) data = 1.0E
Если вы выполняете вторую операцию чтения, она завершает работу, когда линия EOI утверждается.
data = fscanf(v) data = 0
Если вы закончены с объектом VISA-GPIB, отключаете его от инструмента, удаляете его из памяти и удаляете его из рабочей области.
fclose(v); delete(v); clear v