Этот пример исследует операции чтения 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 =
45fscanf блоки до одного из следующего происходят:
Линия 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 =
1InputBufferSize
InputBufferSize свойство задает максимальное количество байтов, которые можно считать из инструмента. По умолчанию, InputBufferSize 512.
v.InputBufferSize
ans =
512ValuesReceived
ValuesReceived свойство указывает на общее количество значений, считанных из инструмента. Обратите внимание, что последнее полученное значение является переводом строки.
fprintf(v, 'Display:Contrast?');
data = fscanf(v)
data =
45
v.ValuesReceived
ans =
9EOSMode и 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