Этот пример исследует бинарные операции чтения и операции записи с объектом VISA. Используемый инструмент был осциллографом Tektronix® TDS 210.
Этот пример исследует бинарные операции чтения и операции записи с помощью объекта VISA-GPIB. Однако бинарные операции чтения и операции записи для VISA-GPIB, VISA-VXI, VISA-GPIB-VXI, VISA-TCPIP и объектов VISA-USB идентичны друг другу. Поэтому можно использовать те же команды. Единственной разницей является имя ресурса, заданное в конструкторе VISA.
Бинарные операции чтения и операции записи для последовательного ВИЗОЙ объекта идентичны бинарным операциям чтения и операциям записи для объекта последовательного порта. Поэтому, чтобы изучить, как выполнить бинарные операции чтения и операции записи для последовательного ВИЗОЙ объекта, необходимо обратиться к Двоичному примеру по Чтению-записи Последовательного порта.
Бинарные операции чтения и операции записи для объекта VISA-RSIB идентичны бинарным операциям чтения и операциям записи для VISA-GPIB, VISA-VXI, VISA-GPIB-VXI, VISA-TCPIP, и объекты VISA-USB, кроме объекта VISA-RSIB не поддерживает EOSCharCode
и EOSMode
свойства.
Эти функции используются при чтении и записи двоичных данных:
Функция | Цель |
---|---|
fread | Считайте двоичные данные из инструмента. |
fwrite | Запишите двоичные данные в инструмент. |
Эти свойства сопоставлены с чтением и записью двоичных данных:
Свойство | Цель |
---|---|
ValuesReceived | Задает общее количество значений, считанных из инструмента. |
ValuesSent | Задает общее количество значений, отправленных в инструмент. |
InputBufferSize | Задает общее количество байтов, которые могут быть поставлены в очередь во входном буфере одновременно. |
OutputBufferSize | Задает общее количество байтов, которые могут быть поставлены в очередь в буфере вывода одновременно. |
EOSMode | Конфигурирует режим завершения Конца Строки. |
EOSCharCode | Задает терминатор строки Конца Строки. |
Необходимо создать объект VISA-GPIB. В этом примере объект создается с помощью ni
драйвер и строка ресурса VISA, показанная ниже.
v = visa('ni', 'GPIB0::2::INSTR');
Прежде чем можно будет выполнить операцию чтения или операцию записи, необходимо соединить объект VISA-GPIB с инструментом с fopen
функция.
fopen(v);
Если объект был успешно соединен, его Status
свойство автоматически сконфигурировано к open
.
v.Status ans = open
Вы используете fwrite
функционируйте, чтобы записать двоичные данные в инструмент. Например, следующая команда отправит синусоиду в инструмент. По умолчанию, fwrite
функция действует в синхронном режиме. Это означает тот fwrite
блокирует командную строку MATLAB®, пока одно из следующего не происходит:
Все данные записаны
Тайм-аут происходит, как задано Timeout
свойство
По умолчанию fwrite
функционируйте пишут двоичные данные с помощью uchar
точность. Однако другая точность может также использоваться. Для списка поддерживаемой точности смотрите страницу ссылки на функцию для fwrite
.
Примечание
При выполнении операции записи необходимо думать о передаваемых данных в терминах значений, а не байтов. Значение состоит из одного или нескольких байтов. Например, один uint32
значение состоит из четырех байтов.
OutputBufferSize
OutputBufferSize
свойство задает максимальное количество байтов, которые могут быть записаны в инструмент целиком. По умолчанию, OutputBufferSize
512
.
v.OutputBufferSize ans = 512
Сконфигурируйте размер буфера вывода объекта к 3 000. Отметьте OutputBufferSize
может быть сконфигурирован только, когда объект не соединяется с инструментом.
fclose(v); v.OutputBufferSize = 3000; fopen(v);
Запись двоичные данные Int16
Теперь запишите форму волны как int16 массив.
fprintf(v, 'Data:Destination RefB'); fprintf(v, 'Data:Encdg SRPbinary'); fprintf(v, 'Data:Width 2'); fprintf(v, 'Data:Start 1'); t = (0:499) .* 8 * pi / 500; data = round(sin(t) * 90 + 127); fprintf(v, 'CURVE #3500');
Обратите внимание на то, что одно int16 значение состоит из двух байтов. Поэтому следующая команда запишет 1 000 байтов.
fwrite(v, data, 'int16')
ValuesSent
ValuesSent
свойство указывает на общее количество значений, записанных в инструмент, поскольку объект был соединен с инструментом.
v.ValuesSent ans = 576
Вы используете fread
функционируйте, чтобы считать двоичные данные из инструмента.
По умолчанию, fread
функционируйте данные о чтениях с помощью uchar точности и блоков командная строка MATLAB, пока одно из следующего не произойдет:
Тайм-аут происходит, как задано Timeout
свойство
Входной буфер заполнен
Конкретное количество значений читается
Линия EOI утверждается
Терминатор строки получен, как задано EOSCharCode
свойство (если задано)
По умолчанию fread
функционируйте считывает двоичные данные с помощью uchar
точность. Однако другая точность может также использоваться. Для списка поддерживаемой точности смотрите страницу ссылки на функцию для fread
.
Примечание
При выполнении операции чтения необходимо думать о полученных данных в терминах значений, а не байтов. Значение состоит из одного или нескольких байтов. Например, один uint32
значение состоит из четырех байтов.
InputBufferSize
InputBufferSize
свойство задает максимальное количество байтов, которые можно считать из инструмента. По умолчанию, InputBufferSize
512
.
v.InputBufferSize ans = 512
Сконфигурируйте размер входного буфера объекта к 5 100. Отметьте InputBufferSize
может быть сконфигурирован только, когда объект не соединяется с инструментом.
fclose(v); v.InputBufferSize = 5100; fopen(v);
Чтение двоичные данные Int16
Теперь считайте ту же форму волны на канале 1 как int16 массив.
fprintf(v, 'Data:Source CH1'); fprintf(v, 'Data:Encdg SRIbinary'); fprintf(v, 'Data:Width 2'); fprintf(v, 'Data:Start 1'); fprintf(v, 'Curve?')
Обратите внимание на то, что одно int16 значение состоит из двух байтов. Поэтому следующая команда считает 2 400 байтов.
data = fread(v, 1200, 'int16');
ValuesReceived
ValuesReceived
свойство указывает на общее количество значений, считанных из инструмента.
v.ValuesReceived ans = 1200
Поскольку мы не могли считать все значения, очистите входной буфер.
flushinput(v);
EOSMode и EOSCharCode
Для VISA-GPIB, объектов, терминатор строки задан путем установки EOSMode
объекта свойство читать и установка
EOSCharCode
объекта свойство к коду ASCII для символа получено. Например, если
EOSMode
свойство собирается читать и EOSCharCode
свойство установлено в 10, затем один из способов, которыми завершает работу чтение, - когда символ перевода строки получен.
Сконфигурируйте терминатор строки объекта GPIB к букве E.
set(v, 'EOSMode', 'read'); set(v, 'EOSCharCode', double('E'));
Теперь считайте канал 1 частота сигнала.
fprintf(v, 'Measurement:Meas1:Source CH1') fprintf(v, 'Measurement:Meas1:Type Freq') fprintf(v, 'Measurement:Meas1:Value?')
Примечание: то, что первое чтение завершает работу из-за EOSCharCode
будучи обнаруженным, в то время как второе чтение завершает работу из-за утверждаемой линии EOI.
data = fread(v, 30); char(data)' Warning: The EOI line was asserted or the EOSCharCode was detected % before SIZE values were available. ans = 9.9E data = fread(v, 30); char(data)' Warning: The EOI line was asserted or the EOSCharCode was detected % before SIZE values were available. ans = 37
Если вы закончены с объектом VISA-GPIB, отключаете его от инструмента, удаляете его из памяти и удаляете его из рабочей области.
fclose(v); delete(v); clear v