Операция записи с помощью fprintf
или fwrite
завершается, когда одному из этих условий удовлетворяют:
Заданные данные записаны.
Время задано Timeout
передачи свойства.
Кроме того, можно остановить асинхронную операцию записи в любое время с stopasync
функция.
Инструмент определяет, завершена ли операция записи на основе EOSMode
, EOIMode
, и EOSCharCode
значения свойств. Если EOSMode
сконфигурирован к любому write
или read&write
, каждое вхождение \n
в тексте команда заменяется символом Конца строки (EOS), заданным EOSCharCode
значение. Поэтому, когда вы используете fprintf
по умолчанию формат
%s\n
, все текстовые команды, записанные в инструмент, закончатся тем значением. EOSCharCode
по умолчанию значением является
LF
, который соответствует символу перевода строки. Символ EOS, требуемый вашим инструментом, будет описан в его документации.
Если EOIMode
on
, затем линия Конца или идентифицирует (EOI) утверждается, когда последний байт записан в инструмент. Последний байт может быть частью потока двоичных данных или текстового потока данных. Если EOSMode
сконфигурирован к любому write
или read&write
, затем последним записанным байтом является EOSCharCode
значение и линия EOI утверждаются, когда инструмент получает этот байт.
Операция чтения с fgetl
fgets
fread
fscanf
, или readasync
завершается, когда одному из этих условий удовлетворяют:
Линия EOI утверждается.
Терминатор строки задан EOSCharCode
свойство читается. Это может произойти только когда EOSMode
свойство сконфигурировано к любому read
или read&write
.
Время задано Timeout
передачи свойства.
Конкретное количество значений читается (fread
fscanf
, и readasync
только).
Входной буфер заполнен (если количество значений не задано).
В дополнение к этим правилам можно остановить асинхронную операцию чтения в любое время с stopasync
функция.
Эти функции используются при чтении и записи текста:
Функция | Цель |
---|---|
fprintf | Запишите текст в инструмент. |
fscanf | Считайте данные из инструмента и отформатируйте как текст. |
Эти свойства сопоставлены с чтением и записью текста:
Свойство | Цель |
---|---|
ValuesReceived | Задает общее количество значений, считанных из инструмента. |
ValuesSent | Задает общее количество значений, отправленных в инструмент. |
InputBufferSize | Задает общее количество байтов, которые могут быть поставлены в очередь во входном буфере одновременно. |
OutputBufferSize | Задает общее количество байтов, которые могут быть поставлены в очередь в буфере вывода одновременно. |
EOSMode | Конфигурирует режим завершения Конца Строки. |
EOSCharCode | Задает терминатор строки Конца Строки. |
EOIMode | Включает или отключает утверждение режима EOI в конце операции записи. |
Чтобы получить список опций, можно использовать на функции, нажать клавишу Tab после ввода функции на командной строке MATLAB®. Список расширяется, и можно прокрутить, чтобы выбрать свойство или значение. Для получения информации об использовании этой функции завершения вкладки "Дополнительно" смотрите Используя Заполнение клавишей Tab для Функций.
Следующий пример иллюстрирует, как связаться с инструментом GPIB путем записи и чтения текстовых данных.
Инструментом является Tektronix® TDS 210 двухканальный осциллограф. Поэтому многие используемые команды характерны для этого инструмента. Синусоида вводится в канал 2 из осциллографа, и ваше задание должно измерить напряжение от пика к пику входного сигнала:
Создайте инструментальный объект — Создают объект GPIB g
сопоставленный с Национальным контроллером Instruments® GPIB с параметром плат 0 и инструментом с первичным адресом 1.
g = gpib('ni',0,1);
Свяжите с инструментом — Подключение g
к осциллографу, и возвращают значения по умолчанию для EOSMode
и EOIMode
свойства.
fopen(g) get(g,{'EOSMode','EOIMode'}) ans = 'none' 'on'
Используя эти значения свойств, завершаются операции записи, когда последний байт записан в инструмент и операции чтения, завершенные, когда линия EOI утверждается инструментом.
Запишите и считайте данные — Запись *IDN?
команда к инструменту с помощью fprintf
, и затем считайте назад результат команды с помощью fscanf
.
fprintf(g,'*IDN?') idn = fscanf(g) idn = TEKTRONIX,TDS 210,0,CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04
Определите источник измерения. Возможные источники измерения включают канал 1 и канал 2 из осциллографа.
fprintf(g,'MEASUREMENT:IMMED:SOURCE?') source = fscanf(g) source = CH1
Осциллограф сконфигурирован, чтобы возвратить измерение в канал 1. Поскольку входной сигнал соединяется с каналом 2, необходимо сконфигурировать инструмент, чтобы возвратить измерение в этот канал.
fprintf(g,'MEASUREMENT:IMMED:SOURCE CH2') fprintf(g,'MEASUREMENT:IMMED:SOURCE?') source = fscanf(g) source = CH2
Можно теперь сконфигурировать осциллограф, чтобы возвратить напряжение от пика к пику, запросить значение этого измерения, и затем возвратить значение напряжения к программному обеспечению IEEE® с помощью fscanf
.
fprintf(g,'MEASUREMENT:MEAS1:TYPE PK2PK') fprintf(g,'MEASUREMENT:MEAS1:VALUE?') ptop = fscanf(g) ptop = 2.0199999809E0
Разъединитесь и вымойтесь — Когда вам больше не будет нужен g
, необходимо отключить его от инструмента и удалить его из памяти и из рабочей области IEEE.
fclose(g) delete(g) clear g
Свойства записи ASCII
По умолчанию линия Конца или идентифицирует (EOI) утверждается, когда последний байт записан в инструмент. Этим поведением управляет EOIMode
свойство. Когда EOIMode
установлен в on
, линия EOI утверждается, когда последний байт записан в инструмент. Когда EOIMode
установлен в off
, линия EOI не утверждается, когда последний байт записан в инструмент.
Линия EOI может также утверждаться, когда терминатор строки записан в инструмент. Терминатор строки задан EOSCharCode
свойство. Когда EOSMode
сконфигурирован к write
или read&write
, линия EOI утверждается когда EOSCharCode
значение свойства записано в инструмент.
Все случаи \n
в команде, записанной в инструмент, заменяются EOSCharCode
значение свойства, если EOSMode
установлен в write
или read&write
.
Эти функции используются при чтении и записи двоичных данных:
Функция | Цель |
---|---|
fread | Считайте двоичные данные из инструмента. |
fwrite | Запишите двоичные данные в инструмент. |
Эти свойства сопоставлены с чтением и записью двоичных данных:
Свойство | Цель |
---|---|
ValuesReceived | Задает общее количество значений, считанных из инструмента. |
ValuesSent | Задает общее количество значений, отправленных в инструмент. |
InputBufferSize | Задает общее количество байтов, которые могут быть поставлены в очередь во входном буфере одновременно. |
OutputBufferSize | Задает общее количество байтов, которые могут быть поставлены в очередь в буфере вывода одновременно. |
EOSMode | Конфигурирует режим завершения Конца Строки. |
EOSCharCode | Задает терминатор строки Конца Строки. |
Чтобы получить список опций, можно использовать на функции, нажать клавишу Tab после ввода функции на командной строке MATLAB. Список расширяется, и можно прокрутить, чтобы выбрать свойство или значение. Для получения информации об использовании этой функции завершения вкладки "Дополнительно" смотрите Используя Заполнение клавишей Tab для Функций.
Вы используете fwrite
функционируйте, чтобы записать двоичные данные в инструмент.
По умолчанию, fwrite
функция действует в синхронном режиме. Это означает тот fwrite
блокирует командную строку MATLAB, пока одно из следующего не происходит:
Все данные записаны
Тайм-аут происходит, как задано Timeout
свойство
По умолчанию fwrite
функционируйте пишут двоичные данные с помощью uchar
точность. Однако другая точность может также использоваться. Для списка поддерживаемой точности смотрите страницу ссылки на функцию для fwrite
.
Вы используете fread
функционируйте, чтобы считать двоичные данные из инструмента.
fread
функциональные блоки командная строка MATLAB до одного из следующего происходят:
Тайм-аут происходит, как задано Timeout
свойство
Входной буфер заполнен
Конкретное количество значений читается
Линия EOI утверждается
Терминатор строки получен, как задано EOSCharCode
свойство (если задано)
По умолчанию fread
функционируйте считывает двоичные данные с помощью uchar
точность. Однако другая точность может также использоваться. Для списка поддерживаемой точности смотрите страницу ссылки на функцию для fread
.
При выполнении операции чтения или операции записи, необходимо думать о полученных данных в терминах значений, а не байтов. Значение состоит из одного или нескольких байтов. Например, один uint32
значение состоит из четырех байтов.
Следующий пример иллюстрирует, как можно загрузить отображение на экране осциллографа TDS 210 на программное обеспечение IEEE. Данные об отображении на экране передаются программному обеспечению IEEE и сохранили использование на диск растрового формата Windows®. Эти данные обеспечивают постоянную запись вашей работы и являются простым способом зарегистрировать важный сигнал и параметры осциллографа:
Создайте инструментальный объект — Создают объект GPIB g
сопоставленный с Национальным Инструментальным контроллером GPIB с параметром плат 0 и инструментом с первичным адресом 1.
g = gpib('ni',0,1);
Сконфигурируйте значения свойств — Конфигурируют входной буфер, чтобы принять довольно большое количество байтов и сконфигурировать значение тайм-аута к двум минутам, чтобы составлять медленную передачу данных.
g.InputBufferSize = 50000; g.Timeout = 120;
Свяжите с инструментом — Подключение g
к осциллографу.
fopen(g)
Запишите и считайте данные — Конфигурируют осциллограф, чтобы передать отображение на экране как битовый массив.
fprintf(g,'HARDCOPY:PORT GPIB') fprintf(g,'HARDCOPY:FORMAT BMP') fprintf(g,'HARDCOPY START')
Асинхронно передайте данные от инструмента до входного буфера.
readasync(g)
Ожидайте, пока операция чтения не завершается, и затем передайте данные рабочей области IEEE как 8-битные целые числа без знака.
g.TransferStatus ans = idle out = fread(g,g.BytesAvailable,'uint8');
Разъединитесь и вымойтесь — Когда вам больше не будет нужен g
, необходимо отключить его от инструмента и удалить его из памяти и из рабочей области IEEE.
fclose(g) delete(g) clear g
Чтобы просмотреть растровые данные, необходимо выполнить эти шаги:
Обратите внимание на то, что версии ввода-вывода программного файла MATLAB fopen
fwrite
, и fclose
функции используются.
fid = fopen('test1.bmp','w'); fwrite(fid,out,'uint8'); fclose(fid) a = imread('test1.bmp','bmp');
Отобразите изображение.
imagesc(a)
Используйте серую палитру, поскольку инструмент только генерирует полутоновые изображения.
c = colormap(gray); colormap(flipud(c));
Изображение полученного растрового изображения показывают ниже.
Этот пример иллюстрирует, как использовать scanstr
функционируйте, чтобы проанализировать данные, которые вы считываете из осциллографа Tektronix TDS 210. scanstr
особенно полезно, когда это необходимо, чтобы проанализировать строку в один или несколько элементов массива ячеек, где каждый элемент полон решимости быть или двойным или вектором символов:
Создайте инструментальный объект — Создают объект GPIB g
сопоставленный с Национальным Инструментальным контроллером GPIB с параметром плат 0 и инструментом с первичным адресом 1.
g = gpib('ni',0,1);
Свяжите с инструментом — Подключение g
к осциллографу.
fopen(g)
Запишите и считайте данные — Возвращают идентификационную информацию, чтобы разделить элементы массива ячеек с помощью разделителей по умолчанию.
fprintf(g,'*IDN?'); idn = scanstr(g) idn = 'TEKTRONIX' 'TDS 210' [ 0] 'CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04'
Разъединитесь и вымойтесь — Когда вам больше не будет нужен g
, необходимо отключить его от инструмента и удалить его из памяти и из рабочего пространства MATLAB.
fclose(g) delete(g) clear g
Этот пример иллюстрирует, как линия EOI и символ EOS используются, чтобы завершить операции чтения и операции записи, и как EOIMode
, EOSMode
, и EOSCharCode
свойства связаны друг с другом. В большинстве случаев можно успешно связаться с инструментом путем принятия значений по умолчанию для этих свойств.
Значение по умолчанию для EOIMode
on
, что означает, что линия EOI утверждается, когда последний байт записан в инструмент. Значение по умолчанию для EOSMode
none
, что означает что EOSCharCode
значение не записано в инструмент, и операции чтения не завершатся когда EOSCharCode
значение читается. Поэтому, когда вы используете значения по умолчанию в EOIMode
и EOSMode
,
Операции записи завершаются, когда последний байт записан в инструмент.
Операции чтения завершаются, когда линия EOI утверждается инструментом.
Создайте инструментальный объект — Создают объект GPIB g
сопоставленный с Национальным Инструментальным контроллером GPIB с параметром плат 0 и инструментом с первичным адресом 1.
g = gpib('ni',0,1);
Свяжите с инструментом — Подключение g
к осциллографу.
fopen(g)
Запишите и считайте данные — Конфигурируют g
так, чтобы линия EOI не утверждалась после того, как последний байт записан в инструмент, и символ EOS используется, чтобы завершить операции записи. Формат по умолчанию для fprintf
%s\n
, где \n
заменяется символом EOS, как дано EOSCharCode
.
g.EOIMode = 'off'; g.EOSMode = 'write'; fprintf(g,'*IDN?') out = fscanf(g) out = TEKTRONIX,TDS 210,0,CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04
Несмотря на то, что EOSMode
сконфигурирован так, чтобы операции чтения не завершались после получения символа EOS, предыдущая операция чтения, за которой следуют, потому что линия EOI утверждалась.
Теперь сконфигурируйте g
так, чтобы символ EOS не использовался, чтобы завершить операции чтения или операции записи. Поскольку линия EOI не утверждается, и символ EOS не записан, инструмент не может интерпретировать *IDN?
команда и тайм-аут происходят.
g.EOSMode = 'none'; fprintf(g,'*IDN?') out = fscanf(g) Warning: GPIB: NI: An I/O operation has been canceled mostly likely due to a timeout.
Теперь сконфигурируйте g
так, чтобы операция чтения завершила работу после “X” читается символ. EOIMode
свойство сконфигурировано к on
так, чтобы линия EOI утверждалась после того, как последний байт записан. EOSMode
свойство сконфигурировано к read
так, чтобы операция чтения завершилась когда EOSCharCode
значение читается.
g.EOIMode = 'on'; g.EOSMode = 'read'; g.EOSCharCode = 'X'; fprintf(g,'*IDN?') out = fscanf(g) out = TEKTRONIX
Обратите внимание на то, что остальная часть идентификационной строки остается в аппаратном буфере инструмента. Если вы не хотите возвращать эти данные во время следующей операции чтения, необходимо очиститься, это от инструмента буферизует с clrdevice
функция.
clrdevice(g)
Разъединитесь и вымойтесь — Когда вам больше не будет нужен g
, необходимо отключить его от инструмента и удалить его из памяти и из рабочего пространства MATLAB.
fclose(g) delete(g) clear g