Этот пример показывает, как записать данные и информацию о событии с осциллографом по интерфейсу последовательного порта. Однако любой интерфейсный объект может использоваться с командами, данными в примере. Используемый инструмент был осциллографом 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.