多语言展示
当前在线:1628今日阅读:126今日分享:42

输出缓冲区和数据流

输出缓冲区是由仪器对象分配的计算机内存,用于存储要写入仪器的数据。从MATLAB工作区到仪器的数据流如下这些步骤: 1写入函数指定的数据被发送到输出缓冲区。 2输出缓冲器中的数据被发送到仪器。
工具/原料
1

matlab软件

2

电脑

方法/步骤
1

OutputBufferSize属性指定可以存储在输出缓冲区中的最大字节数。BytesToOutput属性指示输出缓冲区中当前的字节数。这些属性的默认值为:g = gpib('ni',0,1);g.OutputBufferSize

2

g.BytesToOutput

3

如果试图写入的数据超过输出缓冲区的容量,则会返回一个错误,并且不会写入任何数据。

4

注意在写入数据时,可能需要指定一个值,该值可以由一个或多个字节组成。 这是因为有些写函数允许您控制为每个值写入的位数,并将这些位数解释为字符、整数或浮点值。例如,如果使用int32格式从仪器中写入一个值,则该值由四个字节组成。

5

例如,假设您编写字符串命令*IDN?使用fprintf功能的仪器。如下图所示,字符串首先作为六个值写入输出缓冲区。

6

国际长途电话?命令由六个值组成,因为字符串结尾字符被写入仪器,由EOSMode和EOSCharCode属性指定。此外,fprintf函数的默认数据格式指定一个值对应于一个字节。 如下图所示,将字符串存储在输出缓冲区中后,将其写入仪器。

7

写入文本数据与写入二进制数据 对于许多仪器,写入文本数据意味着写入字符串命令,更改仪器设置,准备仪器返回数据或状态信息,等等。写入二进制数据意味着将数值写入仪器,如校准或波形数据。 可以使用fprintf函数编写文本数据。默认情况下,fprintf使用%s\n格式,该格式将数据格式化为字符串并包含终止符。可以使用fwrite函数写入二进制数据。默认情况下,fwrite使用uchar精度写入数据,uchar精度将数据转换为无符号8位字符。这两个函数都支持许多其他格式和精度,如其参考页中所述。

8

以下示例说明如何将文本数据和二进制数据写入Tektronix TDS 210示波器。文本数据由字符串命令组成,而二进制数据是要下载到作用域并存储在其内存中的波形:

9

1、创建instrument对象-创建GPIB对象g,该对象g与板索引为0的National Instruments GPIB控制器和主地址为1的instrument关联。这个输出缓冲器的大小增加以适应波形数据。当GPIB对象与仪器断开连接时,必须配置OutputBufferSize属性。g = gpib('ni',0,1);g.OutputBufferSize = 3000;

10

2、连接到仪器-将g连接到仪器。fopen(g)

11

3、写入和读取数据—将作用域配置为将二进制波形数据存储在内存位置A中的写入字符串命令。fprintf(g,'DATA:DESTINATION REFA');fprintf(g,'DATA:ENCDG SRPbinary');fprintf(g,'DATA:WIDTH 1');fprintf(g,'DATA:START 1');创建波形数据。

12

t = linspace(0,25,2500);data = round(sin(t)*90 + 127);

13

将二进制波形数据写入示波器。cmd = double('CURVE #42500');fwrite(g,[cmd data]);ValuesSent属性表示写入仪器的值的总数。

14

g.ValuesSent

15

断开连接并清理-当不再需要g时,应将其与仪器断开连接,将其从内存中移除,并将其从MATLAB工作区中移除。fclose(g)delete(g)clear g

推荐信息