Запись информации к диску обеспечивает постоянную запись вашего инструментального сеанса управления и является простым способом отладить ваше приложение. В то время как инструментальный объект соединяется с инструментом, можно записать эту информацию к дисковому файлу:
Количество значений записано в инструмент, количество значений, считанных из инструмента и типа данных значений
Данные, записанные в инструмент и данные, считанные из инструмента
Информация о событии
Вы записываете информацию к дисковому файлу с функцией record
. Свойства, сопоставленные с записью информации к диску, приведены ниже.
Recording Properties
PropertyName | Описание |
---|---|
Задайте объем информации, сохраненный в файл записи. | |
Задайте, сохранены ли данные и информация о событии в один файл записи или в несколько файлов записи. | |
Задайте имя файла записи. | |
Укажите, сохранены ли данные и информация о событии в файл записи. |
Этот пример создает объект GPIB g
, записывает количество значений, переданных между g
и инструментом, и хранит информацию к тексту файла myfile.txt
.
g = gpib('ni',0,1); g.RecordName = 'myfile.txt'; fopen(g) record(g) fprintf(g,'*IDN?') out = fscanf(g);
Закончите инструментальный сеанс управления.
fclose(g) delete(g) clear g
Используйте команду type
, чтобы отобразить myfile.txt
в командной строке.
Когда вы инициируете запись с функцией record
, свойство RecordMode
определяет, создается ли новый файл записи или если новая информация добавлена к существующему файлу записи.
Можно сконфигурировать RecordMode
к overwrite
, append
или index
. Если RecordMode
является overwrite
, то файл записи перезаписывается, каждая запись времени инициируется. Если RecordMode
является append
, то новая информация добавлена к файлу, заданному RecordName
. Если RecordMode
является index
, различный дисковый файл создается, каждая запись времени инициируется. Правила для определения имени файла записи обсуждены в Определении Имени файла.
Вы задаете имя файла записи со свойством RecordName
. Можно задать любое значение для RecordName
, включая путь к каталогу, если имя файла поддерживается операционной системой. Кроме того, если RecordMode
является index
, то имя файла следует этим правилам:
Индексируемые имена файлов идентифицированы номером. Это число предшествует расширению файла и увеличено 1 для последовательных файлов записи.
Если никакой номер не задан как часть начального имени файла, то первому файлу записи не сопоставили номер с ним. Например, если RecordName
является myfile.txt
, то myfile.txt
является именем первого файла записи, myfile01.txt
является именем второго файла записи и так далее.
RecordName
обновляется после того, как файл записи закрывается.
Если заданное имя файла уже существует, то существующий файл перезаписывается.
Файлом записи является ASCII-файл, который содержит запись одного или нескольких инструментальных сеансов управления. Вы задаете объем информации, сохраненный в файл записи со свойством RecordDetail
.
RecordDetail
может быть compact
или verbose
. Компактный файл записи содержит количество значений, записанных в инструмент, количество значений, считанных из инструмента, типа данных значений и информации о событии. Многословный файл записи содержит предыдущую информацию, а также данные, переданные и от инструмента.
Двоичные данные с точностью, данной uchar
, schar
, (u
) int8
, (u
) int16
или (u
) int32
, зарегистрированы как шестнадцатеричные значения. Например, если целочисленное значение 255 читается из инструмента как 16-битное целое число, шестнадцатеричное значение 00FF сохранено в файле записи. Один - и числа с плавающей запятой с двойной точностью зарегистрированы как десятичные значения с помощью формата %g
, и как шестнадцатеричных значений с помощью формата, заданного IEEE® Standard 754-1985 для Бинарной Арифметики С плавающей точкой.
IEEE формат с плавающей точкой включает три компонента — знаковый бит, поле экспоненты и значительное поле. Значения с плавающей точкой с одинарной точностью состоят из 32 битов, и значением дают
value = (-1)sign(2exp-127)(1.significand)
Значения с плавающей точкой с двойной точностью состоят из 64 битов, и значением дают
value = (-1)sign(2exp-1023)(1.significand)
Компонент формата с плавающей точкой и связанные биты с двойной точностью и с одинарной точностью приведены ниже.
Компонент формата | Биты с одинарной точностью | Биты с двойной точностью |
---|---|---|
| 1 | 1 |
| 2-9 | 2-12 |
| 10-32 | 13-64 |
Например, предположите, что вы записываете десятичное значение 4,25 использования формата с одинарной точностью. Хранилища файлов записи 4.25 как шестнадцатеричное значение 40880000, который вычисляется от IEEE формат с плавающей точкой с одинарной точностью. Чтобы восстановить исходное значение, преобразуйте шестнадцатеричное значение в десятичное значение с помощью hex2dec
:
dval = hex2dec('40880000') dval = 1.082654720000000e+009
Преобразуйте десятичное значение в двоичное значение с помощью dec2bin
:
bval = dec2bin(dval,32) bval = 01000000100010000000000000000000
Интерпретация bval
дана предыдущей таблицей. Левый большая часть бита указывает на значение, положителен потому что (-1) 0 = 1. Следующие 8 битов соответствуют экспоненте, которой дают
exp = bval(2:9) exp = 10000001
Десятичное значение exp
27+20 = 129. Остающиеся биты соответствуют значительному, которым дают
significand = bval(10:32) significand = 00010000000000000000000
Десятичное значение significand
2-4 = 0.0625. Вы восстанавливаете исходное значение путем включения десятичных значений exp
и significand
в формулу для одиночных игр IEEE:
value = (-1)0(2129 - 127)(1.0625) value = 4.25
Этот пример расширяет Чтение и Запись Двоичных данных путем записи связанной информации к файлу записи. Кроме того, структура получившегося файла записи представлена:
Создайте инструментальный объект — Создают объект GPIB g
, сопоставленный с Национальным контроллером Instruments® GPIB с параметром плат 0 и инструментом с первичным адресом 1.
g = gpib('ni',0,1);
Сконфигурируйте свойства — Конфигурируют входной буфер, чтобы принять довольно большое количество байтов и сконфигурировать значение тайм-аута к двум минутам, чтобы составлять медленную передачу данных.
g.InputBufferSize = 50000; g.Timeout = 120;
Сконфигурируйте g
, чтобы выполнить функцию обратного вызова instrcallback
каждый раз, когда 5 000 байтов хранятся во входном буфере.
g.BytesAvailableFcnMode = 'byte'; g.BytesAvailableFcnCount = 5000; g.BytesAvailableFcn = @instrcallback;
Сконфигурируйте g
, чтобы записать информацию к нескольким дисковым файлам с помощью многословного формата. Первый дисковый файл задан как WaveForm1.txt
.
g.RecordMode = 'index'; g.RecordDetail = 'verbose'; g.RecordName = 'WaveForm1.txt';
Соединитесь с инструментом — Подключение g
к осциллографу.
fopen(g)
Запишите и считайте данные — Инициируют запись.
record(g)
Сконфигурируйте осциллограф, чтобы передать отображение на экране как битовый массив.
fprintf(g,'HARDCOPY:PORT GPIB') fprintf(g,'HARDCOPY:FORMAT BMP') fprintf(g,'HARDCOPY START')
Инициируйте асинхронную операцию чтения и начните генерировать события.
readasync(g)
instrcallback
называется каждый раз, когда 5 000 байтов хранятся во входном буфере. Получившиеся отображения показывают ниже.
BytesAvailable event occurred at 09:04:33 for the object: GPIB0-1. BytesAvailable event occurred at 09:04:42 for the object: GPIB0-1. BytesAvailable event occurred at 09:04:51 for the object: GPIB0-1. BytesAvailable event occurred at 09:05:00 for the object: GPIB0-1. BytesAvailable event occurred at 09:05:10 for the object: GPIB0-1. BytesAvailable event occurred at 09:05:19 for the object: GPIB0-1. BytesAvailable event occurred at 09:05:28 for the object: GPIB0-1.
Ожидайте, пока все данные не хранятся во входном буфере, и затем передайте данные рабочей области MATLAB® как 8-битные целые числа без знака.
out = fread(g,g.BytesAvailable,'uint8');
Переключите состояние записи от on
до off
. Поскольку значением RecordMode
является index
, имя файла записи автоматически обновляется.
record(g) g.RecordStatus ans = off g.RecordName ans = WaveForm2.txt
Разъединитесь и вымойтесь — Когда вам больше не нужен g
, необходимо отключить его от инструмента и удалить его из памяти и из рабочего пространства MATLAB.
fclose(g) delete(g) clear g
Чтобы отобразить содержимое WaveForm1.txt записывают файл,
type WaveForm1.txt
Содержимое файла записи показывают ниже. Обратите внимание на то, что данные, возвращенные функцией fread
, находятся в шестнадцатеричном формате (большинство растровых данных не показан).
Legend: * - An event occurred. > - A write operation occurred. < - A read operation occurred. 1 Recording on 18-Jun-2000 at 09:03:53.529. Binary data in little endian format. 2 > 18 ascii values. HARDCOPY:PORT GPIB 3 > 19 ascii values. HARDCOPY:FORMAT BMP 4 > 14 ascii values. HARDCOPY START 5 * BytesAvailable event occurred at 18-Jun-2000 at 09:04:33.334 6 * BytesAvailable event occurred at 18-Jun-2000 at 09:04:41.775 7 * BytesAvailable event occurred at 18-Jun-2000 at 09:04:50.805 8 * BytesAvailable event occurred at 18-Jun-2000 at 09:04:00.266 9 * BytesAvailable event occurred at 18-Jun-2000 at 09:05:10.306 10 * BytesAvailable event occurred at 18-Jun-2000 at 09:05:18.777 11 * BytesAvailable event occurred at 18-Jun-2000 at 09:05:27.778 12 < 38462 uint8 values. 42 4d cf 03 00 00 00 00 00 00 3e 00 00 00 28 00 00 00 80 02 00 00 e0 01 00 00 01 00 01 00 00 00 00 00 00 96 00 00 00 00 00 00 00 00 00 00 00 00 . . . ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 13 Recording off.