Чтение и запись данных о ASCII Используя VISA

Этот пример исследует операции чтения 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

Запись данных о ASCII

Вы используете 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');

Свойства записи ASCII

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);

Чтение данных о ASCII

Вы используете 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

Свойства чтения ASCII

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