Этот пример показывает, как записать данные и информацию о событии с осциллографом по интерфейсу последовательного порта. Однако любой интерфейсный объект может использоваться с командами, данными в примере. Используемый инструмент был осциллографом Tektronix® TDS 210.
Эта функция используется, чтобы записать данные и информацию о событии:
RECORD - Record data and event information to a file.
Эти свойства сопоставлены с записью данных и информации о событии:
RecordDetail - Specifies the amount of information recorded.
RecordMode - Specifies whether data and event information
are saved to one record file or to multiple
record files.
RecordName - Specifies the name of the record file.
RecordStatus - Indicates if data and event information are
saved to a record file.Чтобы начаться, создайте объект последовательного порта, сопоставленный с портом COM1.
s=serial('COM1')
Serial Port Object : Serial-COM1
Communication Settings
Port: COM1
BaudRate: 9600
Terminator: 'LF'
Communication State
Status: closed
RecordStatus: off
Read/Write State
TransferStatus: idle
BytesAvailable: 0
ValuesReceived: 0
ValuesSent: 0
Вы инициируете и отключаете запись с функцией ЗАПИСИ. Прежде чем запись может начаться, интерфейсный объект должен быть соединен с инструментом с функцией FOPEN. Если ошибка произойдет при записи информации в файл записи, запись будет отключена, и предупреждение будет выведено. Когда интерфейсный объект будет закрыт с функцией FCLOSE, запись будет автоматически отключена.
Свойство RecordStatus объекта указывает, зарегистрированы ли данные и события. RecordStatus может быть или включен или выключен. Значение свойства RecordStatus сконфигурировано с функцией ЗАПИСИ.
Можно задать имя файла записи со свойством RecordName объектов. Значением по умолчанию является record.txt.
s.RecordStatus
ans = off
fopen(s) record(s) s.RecordStatus
ans = on
s.RecordName
ans = record.txt
Свойство RecordDetail задает зарегистрированный объем информации. RecordDetail может собираться или уплотнить или многословный.
Если RecordDetail собирается уплотнить, следующая информация получена:
Количество чтения значений
Тип данных чтения значений
Количество записанных значений
Тип данных записанных значений
Информация о событии
Если RecordDetail установлен в многословный, данные, считанные из инструмента и данных, записанных в инструмент, также собраны в файле записи.
Значение по умолчанию для свойства RecordDetail компактно.
Теперь запросите идентификационную информацию инструмента. Поскольку запись включена, эта информация будет получена в файле записи.
Обратите внимание, что легенда наверху файла записи использует a
> указать на данные, которые записаны в инструмент
<чтобы указать на данные, считанные из инструмента
*, чтобы указать на события, которые произошли
fprintf(s, '*IDN?')
data = fscanf(s)
data = TEKTRONIX,TDS 210,0,CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04
type record.txt
Legend: * - An event occurred. > - A write operation occurred. < - A read operation occurred. 1 Recording on 31-May-2005 at 12:18:38.541. Binary data in little endian format. 2 > 6 ascii values. 3 < 56 ascii values.
Теперь давайте соберем данные, записанные в инструмент и данные, считанные из инструмента.
set(s, 'RecordDetail', 'verbose') fprintf(s, 'Display:Contrast?') data = fscanf(s)
data = 50
type record.txt
Legend:
* - An event occurred.
> - A write operation occurred.
< - A read operation occurred.
1 Recording on 31-May-2005 at 12:18:38.541. Binary data in little endian format.
2 > 6 ascii values.
3 < 56 ascii values.
4 > 18 ascii values.
Display:Contrast?
5 < 3 ascii values.
50
Двоичные данные с uchar, schar, (u) int8, (u) int16 или (u) int32 точность зарегистрированы в файле записи в шестнадцатеричном формате.
fprintf(s, 'Display:Contrast?') fread(s, 1, 'int16')
ans =
12341
dec2hex(12339)
ans = 3033
fclose(s)
type record.txt
Legend:
* - An event occurred.
> - A write operation occurred.
< - A read operation occurred.
1 Recording on 31-May-2005 at 12:18:38.541. Binary data in little endian format.
2 > 6 ascii values.
3 < 56 ascii values.
4 > 18 ascii values.
Display:Contrast?
5 < 3 ascii values.
50
6 > 18 ascii values.
Display:Contrast?
7 < 1 int16 values.
b035
8 Recording off.
Двоичные данные с одинарной или двойной точностью зарегистрированы согласно IEEE® 754 битное размещение с плавающей точкой.
Это означает, что значение одинарной точности представлено как 32-битное значение, которое будет преобразовано в эквивалентное шестнадцатеричное значение. Чтобы перевести значение с одинарной точностью, нужно было бы сделать следующее (бит 1 является крайним левым битом):
sign = bit1 (a value of 0 is positive and a
value of 1 is negative).
exp = bit2 to bit 9
significand = bit 10 to bit 32
value = (2^(exp-127))*(1.significand)Для значений с двойной точностью следующее использовалось бы (бит 1 является крайним левым битом):
sign = bit1 (a value of 0 is positive and a
value of 1 is negative).
exp = bit2 to bit 12
significand = bit 13 to bit 64
value = (2^(exp-1023))*(1.significand)Кроме того, текстовое представление значения будет перечислено справа от шестнадцатеричного значения с одинарной точностью, с помощью %g строки формата.
Поскольку запись была отключена, файл записи будет перезаписан, если запись будет еще раз инициироваться. Это вызвано тем, что значение по умолчанию для RecordMode является перезаписью. Чтобы постараться не перезаписывать предыдущий файл записи, или задавать новое значение для свойства RecordName или устанавливают свойство RecordMode добавить.
s.RecordMode = 'append'; fopen(s); record(s, 'on') fprintf(s, 'RS232:BAUD?') data = fscanf(s)
data = 9600
fclose(s)
type record.txt
Legend:
* - An event occurred.
> - A write operation occurred.
< - A read operation occurred.
1 Recording on 31-May-2005 at 12:18:38.541. Binary data in little endian format.
2 > 6 ascii values.
3 < 56 ascii values.
4 > 18 ascii values.
Display:Contrast?
5 < 3 ascii values.
50
6 > 18 ascii values.
Display:Contrast?
7 < 1 int16 values.
b035
8 Recording off.
1 Recording on 31-May-2005 at 12:18:41.885. Binary data in little endian format.
2 > 12 ascii values.
RS232:BAUD?
3 < 5 ascii values.
9600
4 Recording off.