Запись информации на диск обеспечивает постоянную запись сеанса управления приборами и является простым способом отладки приложения. Пока объект прибора подключен к прибору, можно записать эту информацию в файл диска:
Количество значений, записанных в прибор, количество значений, считанных из прибора, и тип данных значений
Данные, записанные на прибор, и данные, считанные с прибора
Информация о событии
Вы записываете информацию на диск с помощью record функция. Ниже приведены свойства, связанные с записью информации на диск.
Свойства записи
Имя свойства | Описание |
|---|---|
Укажите объем информации, сохраненной в файле записи. | |
Укажите, будут ли данные и информация о событиях сохраняться в одном файле записи или в нескольких файлах записи. | |
Укажите имя файла записи. | |
Укажите, сохраняются ли данные и информация о событиях в файле записи. |
В этом примере создается объект 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 ® 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 связан с контроллером GPIB National Instruments ® с индексом платы 0 и прибором с основным адресом 1.
g = gpib('ni',0,1);Настроить свойства - настройте входной буфер, чтобы принять достаточно большое количество байтов, и настройте значение тайм-аута до двух минут, чтобы учесть медленную передачу данных.
g.InputBufferSize = 50000; g.Timeout = 120;
Настроить g для выполнения функции обратного вызова instrcallback каждый раз, когда 5000 байт хранятся во входном буфере.
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 вызывается каждый раз, когда 5000 байт хранятся во входном буфере. Полученные дисплеи показаны ниже.
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.