Операция записи с использованием fprintf
или fwrite
завершает, когда одно из следующих условий удовлетворено:
Указанные данные записываются.
Время, заданное как Timeout
проходит свойство.
Кроме того, вы можете остановить операцию асинхронной записи в любое время с stopasync
функция.
Инструмент определяет, завершена ли операция записи, на основе EOSMode
, EOIMode
, и EOSCharCode
значения свойств. Если EOSMode
сконфигурирован на любой из write
или read&write
, каждое вхождение \n
в текстовой команде заменяется символом End-Of-String (EOS), заданным EOSCharCode
значение. Поэтому, когда вы используете fprintf
по умолчанию формат
%s\n
все текстовые команды, записанные в инструмент, заканчиваются этим значением. Значение по умолчанию EOSCharCode
значение LF
, что соответствует линии символу канала. Символ EOS, требуемая вашим прибором, будет описываем в его документации.
Если EOIMode
является on
Затем линия End Or Identify (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, смотрите Использование заполнения клавишей Tab для функций.
Следующий пример иллюстрирует, как взаимодействовать с инструментом GPIB путем записи и чтения текстовых данных.
Инструмент является Tektronix® Двухканальный осциллограф TDS 210. Поэтому многие из используемых команд специфичны для этого инструмента. Синусоида вводится в канал 2 осциллографа, и ваша задача состоит в том, чтобы измерить пиковое напряжение входного сигнала:
Создайте объект инструмента - Создайте объект GPIB g
связанные с National 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
По умолчанию линия End или Identify (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, смотрите Использование заполнения клавишей Tab для функций.
Вы используете fwrite
функция для записи двоичных данных в инструмент.
По умолчанию в fwrite
функция работает в синхронном режиме. Это означает, что fwrite
блокирует командную строку MATLAB до тех пор, пока не произойдет одно из следующих событий:
Все данные записаны
Тайм-аут происходит в соответствии с Timeout
свойство
По умолчанию fwrite
функция записывает двоичные данные с помощью uchar
точность. Однако могут быть использованы и другие точности. Список поддерживаемых точностей см. в страницу с описанием функций для fwrite
.
Вы используете fread
функция для чтения двоичных данных с инструмента.
The fread
функция блокирует командную строку MATLAB до тех пор, пока не произойдет одно из следующих событий:
Тайм-аут происходит в соответствии с Timeout
свойство
Входной буфер заполнен
Считалось заданное количество значений
Задана линия EOI
Терминатор строки принимается в соответствии с EOSCharCode
свойство (если задано)
По умолчанию fread
функция считывает двоичные данные с помощью uchar
точность. Однако могут быть использованы и другие точности. Список поддерживаемых точностей см. в страницу с описанием функций для fread
.
Примечание
При выполнении операции чтения или записи следует думать о полученных данных с точки зрения значений, а не байтов. Значение состоит из одного или нескольких байтов. Для примера, один uint32
значение состоит из четырех байтов.
Следующий пример иллюстрирует, как можно загрузить отображение осциллографа TDS 210 в программное обеспечение IEEE. Данные отображения экрана передаются в программное обеспечение IEEE и сохраняются на диск с помощью Windows® формат растрового изображения. Эти данные обеспечивают постоянную запись вашей работы и являются простым способом документирования важных параметров сигнала и возможностей:
Создайте объект инструмента - Создайте объект GPIB g
сопоставлен с National Instruments ™ контроллером 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
сопоставлен с National Instruments ™ контроллером 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
сопоставлен с National Instruments ™ контроллером 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». The EOIMode
свойство настроено на on
так, чтобы линия EOI утверждалась после записи последнего байта. The EOSMode
свойство настроено на read
так, чтобы операция 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