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