Запись информации к диску обеспечивает постоянную запись вашего сеанса последовательного порта и является простым способом отладить ваше приложение. В то время как объект последовательного порта соединяется с устройством, можно записать следующую информацию к дисковому файлу:
Количество значений записано в устройство, количество значений, считанных из устройства и типа данных значений
Данные, записанные в устройство и данные, считанные из устройства
Информация о событии
Вы записываете информацию к дисковому файлу с функцией record
. Следующая таблица показывает свойства, сопоставленные с записью информации к диску.
Recording Properties
PropertyName | Описание |
---|---|
Объем информации, сохраненный в файл записи | |
Задайте, сохранены ли данные и информация о событии в один файл записи или в несколько файлов записи | |
Имя файла записи | |
Укажите, сохранены ли данные и информация о событии в файл записи |
Этот пример записывает количество значений, записанных в, и читайте из устройства, и хранит информацию к файлу myfile.txt
.
s = serial('COM1'); fopen(s) s.RecordName = 'myfile.txt'; record(s) fprintf(s,'*IDN?') idn = fscanf(s); fprintf(s,'RS232?') rs232 = fscanf(s);
Закончите сеанс последовательного порта.
fclose(s) delete(s) clear s
Чтобы отобразить myfile.txt
в командной строке, используйте команду type
.
Когда вы инициируете запись с функцией record
, свойство RecordMode
определяет, создается ли новый файл записи или если новая информация добавлена к существующему файлу записи.
Можно сконфигурировать RecordMode
к overwrite
, append
или index
. Если RecordMode
является overwrite
, файл записи перезаписывается, каждая запись времени инициируется. Если RecordMode
является append
, новая информация добавлена к файлу, заданному RecordMode
. Если 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 битов. Значением дают
Значения с плавающей точкой с двойной точностью состоят из 64 битов. Значением дают
Компонент формата с плавающей точкой и связанные биты с двойной точностью и с одинарной точностью показывают в следующей таблице.
Компонент | Биты с одинарной точностью | Биты с двойной точностью |
---|---|---|
| 1 | 1 |
| 2–9 | 2–12 |
| 10–32 | 13–64 |
Бит 1 является крайним левым битом, как сохранено в файле записи.
Этот пример иллюстрирует, как записать информацию, переданную между объектом последовательного порта и осциллографом Tektronix® TDS 210. Кроме того, структура получившегося файла записи представлена.
Создайте объект последовательного порта — Создают объект последовательного порта s
, сопоставленный с последовательным портом COM1.
s = serial('COM1');
Соединитесь с устройством — Подключение s
к осциллографу. Поскольку значением по умолчанию для свойства ReadAsyncMode
является continuous
, данные асинхронно возвращены входной буфер, как только это доступно от инструмента.
fopen(s)
Сконфигурируйте значения свойств — Конфигурируют s
, чтобы записать информацию к нескольким дисковым файлам с помощью многословного формата. Запись затем инициируется с первым дисковым файлом, заданным как WaveForm1.txt
.
s.RecordMode = 'index'; s.RecordDetail = 'verbose'; s.RecordName = 'WaveForm1.txt'; record(s)
Запишите и считайте данные — команды, записанные в инструмент, и данные, считанные из инструмента, зарегистрированы в файле записи. Для объяснения команд осциллографа смотрите Пример — Пишущие и Считывающие текстовые Данные.
fprintf(s,'*IDN?') idn = fscanf(s); fprintf(s,'MEASUREMENT:IMMED:SOURCE CH2') fprintf(s,'MEASUREMENT:IMMED:SOURCE?') source = fscanf(s);
Считайте напряжение от пика к пику с функцией fread
. Обратите внимание на то, что данные, возвращенные fread
, зарегистрированы с помощью шестнадцатеричного формата.
fprintf(s,'MEASUREMENT:MEAS1:TYPE PK2PK') fprintf(s,'MEASUREMENT:MEAS1:VALUE?') ptop = fread(s,s.BytesAvailable);
Преобразуйте напряжение от пика к пику в символьный массив.
char(ptop)' ans = 2.0199999809E0
Состояние записи переключается от on
до off
. Поскольку значением RecordMode
является index
, имя файла записи автоматически обновляется.
record(s) s.RecordStatus ans = off s.RecordName ans = WaveForm2.txt
Разъединитесь и вымойтесь — Когда вы больше не будете нуждаться в s
, будете отключать его от инструмента и удалять его из памяти и из рабочей области MATLAB®.
fclose(s) delete(s) clear s
Содержимое файла записи WaveForm1.txt
показывают ниже. Поскольку свойством RecordDetail
был verbose
, количество значений, команд, и данные были зарегистрированы. Обратите внимание на то, что данные, возвращенные функцией fread
, находятся в шестнадцатеричном формате.
type WaveForm1.txt Legend: * - An event occurred. > - A write operation occurred. < - A read operation occurred. 1 Recording on 22-Jan-2000 at 11:21:21.575. Binary data in... 2 > 6 ascii values. *IDN? 3 < 56 ascii values. TEKTRONIX,TDS 210,0,CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04 4 > 29 ascii values. MEASUREMENT:IMMED:SOURCE CH2 5 > 26 ascii values. MEASUREMENT:IMMED:SOURCE? 6 < 4 ascii values. CH2 7 > 27 ascii values. MEASUREMENT:MEAS1:TYPE PK2PK 8 > 25 ascii values. MEASUREMENT:MEAS1:VALUE? 9 < 15 uchar values. 32 2e 30 31 39 39 39 39 39 38 30 39 45 30 0a 10 Recording off.