主要内容

录制仪器会话

介绍

此示例显示如何在串行端口接口上使用示波器记录数据和事件信息。但是,任何接口对象都可以与在整个示例中给出的命令一起使用。使用的仪器是Tektronix®TDS210示波器。

功能和属性

此功能用于记录数据和事件信息:

将数据和事件信息记录到文件中。

这些属性与录制数据和事件信息相关联:

RecordDetail  - 指定记录的信息量。RecordMode  - 指定数据和事件信息是否保存到一个记录文件或多个记录文件。RecordName  - 指定记录文件的名称。RecordStatus  - 表示数据和事件信息是否保存到记录文件中。

创建串行端口对象

首先,创建与COM1端口关联的串行端口对象。

s =序列('com1'
串行端口对象:Serial-Com1通信设置端口:COM1 Baudrate:9600终结器:'LF'通信状态状态:关闭RecordStatus:Off Read / Write State Transferstatus:空闲BYTESAVailable:0 ValueReceived:0

使用记录

使用记录功能启动并终止录制。在录制之前,接口对象必须使用Fopen功能连接到仪器。如果在将信息写入记录文件时发生错误,则将终止录制并将显示警告。使用FCLOSE功能关闭接口对象时,将自动终止录制。

对象的RecordStatus属性表示是否正在记录数据和事件。RecordStatus可以是打开或关闭。RecordStatus属性的值配置为带记录功能。

您可以使用对象的RecordName属性指定记录文件的名称。默认值为Record.txt。

s.recordstatus.
ans =关闭
FOPEN(s)s.recordstatus
ans = On.
s.recordname.
ans = cromet.txt.txt.

指定记录的信息量

RecordDetail属性指定记录的信息量。RecordDetail可以设置为紧凑或冗长。

如果RecordDetail设置为Compact,则捕获以下信息:

  • 读取的值数

  • 读取值的数据类型

  • 写的价值数量

  • 编写的值的数据类型

  • 活动信息

如果RecordDetail设置为详细,则在记录文件中也捕获从仪器读取的数据和写入仪器的数据。

RecordDetail属性的默认值很紧凑。

录制ASCII数据

现在查询仪器的识别信息。因为录制打开,所以将在记录文件中捕获此信息。

请注意记录文件顶部的图例使用

  • >表示写入仪器的数据

  • <表示从仪器读取的数据

  • *表示发生的事件

fprintf(s,'* idn?')数据= fscanf(s)
数据= Tektronix,TDS 210,0,CF:91.1CT FV:V1.16 TDS2CM:CMV:v1.04
类型Record.txt.
传奇:*  - 发生事件。>  - 发生写操作。< - 发生读取操作。1在2005年5月31日录制为12:18:38.541。小型数据中的二进制数据。2> 6个ASCII值。3 <56 ASCII值。

现在让我们捕获写入仪器的数据并从仪器读取的数据。

套,'recorddetail''verbose')fprintf(s,'展示:对比?')数据= fscanf(s)
数据= 50.
类型Record.txt.
传奇:*  - 发生事件。>  - 发生写操作。< - 发生读取操作。1在2005年5月31日录制为12:18:38.541。小型数据中的二进制数据。2> 6个ASCII值。3 <56 ASCII值。4> 18 ASCII值。显示:对比?5 <3 ASCII值。 50

录制二进制数据

使用UCHAR,SCHAR,(U)INT8,(U)INT16或(U)INT32精度的二进制数据以十六进制格式记录在记录文件中。

fprintf(s,'展示:对比?')诈骗(s,1,'int16'
ans = 12341.
DEC2HEX(12339)
ans = 3033.
fclose(s)类型Record.txt.
传奇:*  - 发生事件。>  - 发生写操作。< - 发生读取操作。1在2005年5月31日录制为12:18:38.541。小型数据中的二进制数据。2> 6个ASCII值。3 <56 ASCII值。4> 18 ASCII值。显示:对比?5 <3 ASCII值。 50 6 > 18 ascii values. Display:Contrast? 7 < 1 int16 values. b035 8 Recording off.

根据IEEE®754浮点位布局记录具有单个或双精度的二进制数据。

这意味着单个精度值表示为32位值,这将被转换为等效的十六进制值。要转换单精度值,一个必须执行以下操作(第1位是最左侧位):

Sign = Bit1(值0为正,值1为负)。exp = bit2到位9意义1/1位=位10到位32值=(2 ^(exp-127))*(1.significand)

对于双精度值,将使用以下内容(位1是最左侧位):

Sign = Bit1(值0为正,值1为负)。exp = bit2到位12意义13到位64值=(2 ^(exp-1023))*(1.significand)

此外,使用%G格式字符串将列出值的文本表示值将列出单精度十六进制值的右侧。

将数据附加到现有文件

由于录制终止,如果录制再次启动,则将覆盖记录文件。这是因为RecordMode的默认值是覆盖。为避免覆盖以前的记录文件,请指定RecordName属性的新值或将RecordMode属性设置为追加。

s.recordmode =.'附加';FOPEN;记录,'上')fprintf(s,'rs232:波特?)数据= fscanf(s)
数据= 9600.
fclose(s)类型Record.txt.
传奇:*  - 发生事件。>  - 发生写操作。< - 发生读取操作。1在2005年5月31日录制为12:18:38.541。小型数据中的二进制数据。2> 6个ASCII值。3 <56 ASCII值。4> 18 ASCII值。显示:对比?5 <3 ASCII值。 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.