В этом примере показано, как записывать данные и информацию о событиях с помощью осциллографа через интерфейс последовательного порта. Однако любой объект интерфейса может использоваться с командами, приведенными в данном примере. В качестве инструмента использовался осциллограф 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
Инициирование и завершение записи выполняется с помощью функции RECORD. Перед началом записи объект интерфейса должен быть подключен к прибору с помощью функции FOPEN. Если при записи информации в файл записи возникает ошибка, запись прекращается, и отображается предупреждение. При закрытии объекта интерфейса с помощью функции FCLOSE запись автоматически прекращается.
Свойство объекта RecordStatus указывает, записываются ли данные и события. RecordStatus может быть включен или выключен. Значение свойства RecordStatus конфигурируется с помощью функции RECORD.
Имя файла записи можно указать с помощью свойства объекта RecordName. Значение по умолчанию - record.txt.
s.RecordStatus
ans = off
fopen(s) record(s) s.RecordStatus
ans = on
s.RecordName
ans = record.txt
Свойство RecordDetail указывает объем записанной информации. Параметр RecordDetail может быть установлен как компактный или подробный.
Если для параметра RecordDetail установлено значение compact, то регистрируется следующая информация:
Число прочитанных значений
Тип данных считанных значений
Число записанных значений
Тип данных записанных значений
Информация о событии
Если параметр RecordDetail имеет значение verbose, данные, считанные с прибора, и данные, записанные на прибор, также записываются в файл записи.
Значение по умолчанию для свойства RecordDetail является компактным.
Теперь запросите идентификационную информацию прибора. Поскольку запись включена, эта информация будет записана в файл записи.
Обратите внимание, что легенда в верхней части файла записи использует
> для указания данных, записанных в прибор
< для указания данных, считанных с прибора
* для указания произошедших событий
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.
Поскольку запись была прервана, файл записи будет перезаписан, если запись снова будет инициирована. Это происходит потому, что значением по умолчанию для режима записи является перезапись. Чтобы избежать перезаписи предыдущего файла записи, укажите новое значение свойства RecordName или задайте для свойства RecordMode значение append.
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.