Запись информации к диску обеспечивает постоянную запись вашего сеанса последовательного порта и является простым способом отладить ваше приложение. В то время как объект последовательного порта соединяется с устройством, можно записать следующую информацию к дисковому файлу:
Количество значений записано в устройство, количество значений, считанных из устройства и типа данных значений
Данные, записанные в устройство и данные, считанные из устройства
Информация о событии
Вы записываете информацию к дисковому файлу с функцией record. Следующая таблица показывает свойства, сопоставленные с записью информации к диску.
Recording Properties
| PropertyName | Описание |
|---|---|
Объем информации сохранен в файл записи | |
Задайте, сохранены ли данные и информация о событии в один файл записи или в несколько файлов записи | |
Имя файла записи | |
Укажите, сохранены ли данные и информация о событии в файл записи |
Этот пример записывает количество значений, записанных в, и читайте из устройства, и хранит информацию к файлу myfile.txt 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 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.