Запись инструментального сеанса

Введение

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

Запись данных о ASCII

Теперь запросите идентификационную информацию инструмента. Поскольку запись включена, эта информация будет получена в файле записи.

Обратите внимание, что легенда наверху файла записи использует 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.