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