Запись информации к диску обеспечивает постоянную запись вашего инструментального сеанса управления и является простым способом отладить ваше приложение. В то время как инструментальный объект соединяется с инструментом, можно записать эту информацию к дисковому файлу:
Количество значений записано в инструмент, количество значений, считанных из инструмента и типа данных значений
Данные, записанные в инструмент и данные, считанные из инструмента
Информация о событии
Вы записываете информацию к дисковому файлу с 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
добавление
, или 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® Стандартные 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
сопоставленный с National 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.