写入和读取数据GydF4y2Ba

完成写和读操作的规则GydF4y2Ba

完成写操作GydF4y2Ba

使用写操作GydF4y2Bafprintf中GydF4y2Ba或GydF4y2Ba写入文件GydF4y2Ba完成时的其中一个条件是满足:GydF4y2Ba

  • 写入指定的数据。GydF4y2Ba

  • 指定的时间GydF4y2Ba超时GydF4y2Ba属性传递。GydF4y2Ba

此外,可以在任何时候使用GydF4y2BastopasyncGydF4y2Ba功能。GydF4y2Ba

一种仪器确定是否写操作完成基于所述GydF4y2BaEOSModeGydF4y2Ba,GydF4y2BaEOIModeGydF4y2Ba,GydF4y2BaEOSCharCodeGydF4y2Ba属性值。如果GydF4y2BaEOSModeGydF4y2Ba被配置为要么GydF4y2Ba写GydF4y2Ba或GydF4y2Ba读写GydF4y2Ba,每次发生GydF4y2Ba\ nGydF4y2Ba在文本命令被替换为由指定的结束字符串(EOS)字符GydF4y2BaEOSCharCodeGydF4y2Ba值。因此,当您使用默认GydF4y2Bafprintf中GydF4y2Ba格式GydF4y2Ba%S \ nGydF4y2Ba,写入到仪器上的所有文本命令将与价值结束。默认GydF4y2BaEOSCharCodeGydF4y2Ba值是GydF4y2Ba低频GydF4y2Ba,对应于换行字符。通过仪器所需的EOS字符将其文档中描述。GydF4y2Ba

如果GydF4y2BaEOIModeGydF4y2Ba是GydF4y2Ba在GydF4y2Ba,然后结束或识别时,最后一个字节写入仪器(EOI)线确定。最后一个字节可以是二进制数据流或文本数据流的一部分。如果GydF4y2BaEOSModeGydF4y2Ba被配置为要么GydF4y2Ba写GydF4y2Ba或GydF4y2Ba读写GydF4y2Ba,然后写入最后一个字节是GydF4y2BaEOSCharCodeGydF4y2Ba值和EOI行在仪器接收到此字节时断言。GydF4y2Ba

完成读操作GydF4y2Ba

读操作与GydF4y2BafgetlGydF4y2Ba,GydF4y2Ba与fgetsGydF4y2Ba,GydF4y2BaFREADGydF4y2Ba,GydF4y2Ba的fscanfGydF4y2Ba, 要么GydF4y2BareadasyncGydF4y2Ba完成时的其中一个条件是满足:GydF4y2Ba

  • 该EOI线有效。GydF4y2Ba

  • 由指定的终结者GydF4y2BaEOSCharCodeGydF4y2Ba财产被读取。这只能当发生GydF4y2BaEOSModeGydF4y2Ba属性被配置为要么GydF4y2Ba读GydF4y2Ba或GydF4y2Ba读写GydF4y2Ba。GydF4y2Ba

  • 指定的时间GydF4y2Ba超时GydF4y2Ba属性传递。GydF4y2Ba

  • 值的指定数量被读取(GydF4y2BaFREADGydF4y2Ba,GydF4y2Ba的fscanfGydF4y2Ba,GydF4y2BareadasyncGydF4y2Ba只要)。GydF4y2Ba

  • 输入缓冲器被填充(如果未指定的值的数目)。GydF4y2Ba

除了这些规则,你可以在任何时间与停止异步读取操作GydF4y2BastopasyncGydF4y2Ba功能。GydF4y2Ba

写入和读取文本数据GydF4y2Ba

这些函数用于读取和写入文本:GydF4y2Ba

函数GydF4y2Ba 目的GydF4y2Ba
fprintf中GydF4y2Ba 给仪器写文字。GydF4y2Ba
的fscanfGydF4y2Ba 读取仪器和格式为文本数据。GydF4y2Ba

这些属性与读取和写入文本相关联:GydF4y2Ba

属性GydF4y2Ba 目的GydF4y2Ba
ValuesReceivedGydF4y2Ba 指定总数值从仪器读取。GydF4y2Ba
ValuesSentGydF4y2Ba 指定值总数发送到仪器。GydF4y2Ba
InputBufferSizeGydF4y2Ba 指定一次可以在输入缓冲区中排队的字节总数。GydF4y2Ba
OutputBufferSizeGydF4y2Ba 指定的总字节数,可以在输出缓冲器在一个时间进行排队。GydF4y2Ba
EOSModeGydF4y2Ba 配置结束串端接模式。GydF4y2Ba
EOSCharCodeGydF4y2Ba 指定字符串结束终止符。GydF4y2Ba
EOIModeGydF4y2Ba 启用或在写操作结束时禁用EOI模式的断言。GydF4y2Ba

注意GydF4y2Ba

为了得到一个选项列表,你可以在一个函数中使用,按GydF4y2Ba选项卡GydF4y2Ba键后输入一个函数在MATLAB上GydF4y2Ba®GydF4y2Ba命令行。列表展开,您可以滚动以选择属性或值。有关使用这一先进的制表符完成功能的信息,请参阅GydF4y2Ba使用Tab键完成的功能GydF4y2Ba。GydF4y2Ba

下面的例子说明了如何通过写入和读取的文本数据与一GPIB仪器进行通信。GydF4y2Ba

这种乐器是泰克琴GydF4y2Ba®GydF4y2BaTDS 210双通道示波器。因此,许多使用的命令是特定于该仪器。正弦波输入到示波器中的信道2,和你的工作是测量输入信号的峰 - 峰电压:GydF4y2Ba

  1. 创建一个工具对象GydF4y2Ba- 创建GPIB对象GydF4y2BaGGydF4y2Ba与美国国家仪器相关GydF4y2Ba®GydF4y2BaGPIB控制器板指数0,并与主地址1的仪器。GydF4y2Ba

    G = GPIB( 'N',0,1);GydF4y2Ba
  2. 连接仪表GydF4y2Ba- - - - - -连接GydF4y2BaGGydF4y2Ba示波器,并返回的默认值GydF4y2BaEOSModeGydF4y2Ba和GydF4y2BaEOIModeGydF4y2Ba属性。GydF4y2Ba

    的fopen(克)的get(克,{ 'EOSMode', 'EOIMode'})ANS =上 '无' ''GydF4y2Ba

    使用这些属性值,写操作完成后,最后一个字节写入仪器,当EOI线由仪器断言读操作完成。GydF4y2Ba

  3. 写入和读取数据GydF4y2Ba- - -写GydF4y2Ba* IDN?GydF4y2Ba使用命令到仪器GydF4y2Bafprintf中GydF4y2Ba,然后使用回读命令的结果GydF4y2Ba的fscanfGydF4y2Ba。GydF4y2Ba

    fprintf中的(g, '* IDN?')IDN =的fscanf(克)IDN =泰克TDS 210,0,CF:91.1CT FV:V1.16 TDS2CM:CMV:1.04GydF4y2Ba

    确定测量源。可能的测量源包括信道1和信道2GydF4y2Ba示波器。GydF4y2Ba

    fprintf(g,'MEASUREMENT:IMMED:SOURCE?')源= fscanf(g)源= CH1GydF4y2Ba

    的范围被配置为从信道1返回一个测量由于输入信号被连接到信道2,则必须仪器配置为从该信道返回一个测量。GydF4y2Ba

    fprintf中的(g, 'MEASUREMENT:IMMED:SOURCE CH2')fprintf中的(g, 'MEASUREMENT:IMMED:SOURCE?')源=的fscanf(克)源= CH2GydF4y2Ba

    现在可以配置范围,以返回峰值电压,请求此测量值,然后将电压值返回给IEEEGydF4y2Ba®GydF4y2Ba使用软件GydF4y2Ba的fscanfGydF4y2Ba。GydF4y2Ba

    fprintf中的(g, 'MEASUREMENT:MEAS1:TYPE PK2PK')fprintf中的(g, 'MEASUREMENT:MEAS1:VALUE?')=以PtoP的fscanf(克)=以PtoP 2.0199999809E0GydF4y2Ba
  4. 断开并清理GydF4y2Ba- 当你不再需要GydF4y2BaGGydF4y2Ba,你应该从仪器上断开,并从内存中,并从工作区IEEE删除它。GydF4y2Ba

    FCLOSE(克)删除(克)清楚克GydF4y2Ba

ASCII写属性GydF4y2Ba

默认情况下,最终还是确定当最后一个字节写入仪器(EOI)线确定。此行为是由控制GydF4y2BaEOIModeGydF4y2Ba属性。什么时候GydF4y2BaEOIModeGydF4y2Ba被设置为GydF4y2Ba在GydF4y2Ba当最后一个字节写入到仪器上的EOI线有效。什么时候GydF4y2BaEOIModeGydF4y2Ba被设置为GydF4y2Ba从GydF4y2Ba当最后一个字节写入仪器不能断言EOI线。GydF4y2Ba

当终止符写入到仪器时,也可以断言EOI行。属性定义终止符GydF4y2BaEOSCharCodeGydF4y2Ba属性。什么时候GydF4y2BaEOSModeGydF4y2Ba被配置成GydF4y2Ba写GydF4y2Ba或GydF4y2Ba读写GydF4y2Ba中,EOI线被断言时GydF4y2BaEOSCharCodeGydF4y2Ba属性值写入仪器。GydF4y2Ba

所有出现GydF4y2Ba\ nGydF4y2Ba在写入到仪器中的命令被替换为GydF4y2BaEOSCharCodeGydF4y2Ba属性值,如果GydF4y2BaEOSModeGydF4y2Ba被设置为GydF4y2Ba写GydF4y2Ba或GydF4y2Ba读写GydF4y2Ba。GydF4y2Ba

读写二进制数据GydF4y2Ba

读取和写入二进制数据时,这些功能用于:GydF4y2Ba

函数GydF4y2Ba 目的GydF4y2Ba
FREADGydF4y2Ba 从仪器中读取二进制数据。GydF4y2Ba
写入文件GydF4y2Ba 写二进制数据的仪器。GydF4y2Ba

这些属性与读取和写入二进制数据关联:GydF4y2Ba

属性GydF4y2Ba 目的GydF4y2Ba
ValuesReceivedGydF4y2Ba 指定总数值从仪器读取。GydF4y2Ba
ValuesSentGydF4y2Ba 指定值总数发送到仪器。GydF4y2Ba
InputBufferSizeGydF4y2Ba 指定一次可以在输入缓冲区中排队的字节总数。GydF4y2Ba
OutputBufferSizeGydF4y2Ba 指定的总字节数,可以在输出缓冲器在一个时间进行排队。GydF4y2Ba
EOSModeGydF4y2Ba 配置结束串端接模式。GydF4y2Ba
EOSCharCodeGydF4y2Ba 指定字符串结束终止符。GydF4y2Ba

注意GydF4y2Ba

为了得到一个选项列表,你可以在一个函数中使用,按GydF4y2Ba选项卡GydF4y2Ba键后输入一个函数在MATLAB命令行上。列表展开,您可以滚动以选择属性或值。有关使用这一先进的制表符完成功能的信息,请参阅GydF4y2Ba使用Tab键完成的功能GydF4y2Ba。GydF4y2Ba

您可以使用GydF4y2Ba写入文件GydF4y2Ba函数将二进制数据写入的仪器。GydF4y2Ba

默认情况下,GydF4y2Ba写入文件GydF4y2Ba函数以同步模式运行。这意味着GydF4y2Ba写入文件GydF4y2Ba阻塞MATLAB命令行,直到出现下列情况之一:GydF4y2Ba

  • 所有的数据被写入GydF4y2Ba

  • 属性指定的超时发生GydF4y2Ba超时GydF4y2Ba属性GydF4y2Ba

默认情况下,GydF4y2Ba写入文件GydF4y2Ba方法写入二进制数据GydF4y2BaucharGydF4y2Ba精确。然而,也可以使用其他精度。有关支持的精度的列表,请参阅万博1manbetx功能参考页GydF4y2Ba写入文件GydF4y2Ba。GydF4y2Ba

您可以使用GydF4y2BaFREADGydF4y2Ba函数从仪器中读取二进制数据。GydF4y2Ba

该GydF4y2BaFREADGydF4y2Ba函数阻塞MATLAB命令行,直到出现下列情况之一:GydF4y2Ba

  • 属性指定的超时发生GydF4y2Ba超时GydF4y2Ba属性GydF4y2Ba

  • 输入缓冲器被填充GydF4y2Ba

  • 读取指定数目的值GydF4y2Ba

  • 断言EOI线GydF4y2Ba

  • 由指定的若接收到终端GydF4y2BaEOSCharCodeGydF4y2Ba属性(如果定义)GydF4y2Ba

默认情况下,GydF4y2BaFREADGydF4y2Ba函数读取使用二进制数据GydF4y2BaucharGydF4y2Ba精确。然而,也可以使用其他精度。有关支持的精度的列表,请参阅万博1manbetx功能参考页GydF4y2BaFREADGydF4y2Ba。GydF4y2Ba

注意GydF4y2Ba

当执行一个读或写操作,你应该在价值观,而不是字节的角度来考虑接收到的数据。的值由一个或多个字节。例如,一个GydF4y2BaUINT32GydF4y2Ba值由四个字节组成。GydF4y2Ba

下面的例子演示了如何下载TDS 210示波器屏幕显示到IEEE软件。屏幕显示数据传送到IEEE软件和使用Windows保存到磁盘GydF4y2Ba®GydF4y2Ba位图格式。此数据提供工作的永久记录,并记录重要的信号和范围参数的简单方法:GydF4y2Ba

  1. 创建一个工具对象GydF4y2Ba- 创建GPIB对象GydF4y2BaGGydF4y2Ba与具有板索引0的国家仪器GPIB控制器和具有主地址1的仪器相关联。GydF4y2Ba

    G = GPIB( 'N',0,1);GydF4y2Ba
  2. 配置属性值GydF4y2Ba- 配置输入缓冲器接受一个相当大的数量的字节,和超时值到两分钟配置以考虑到缓慢的数据传输。GydF4y2Ba

    g.InputBufferSize = 50000;g.Timeout = 120;GydF4y2Ba
  3. 连接仪表GydF4y2Ba- - - - - -连接GydF4y2BaGGydF4y2Ba示波器。GydF4y2Ba

    fopen (g)GydF4y2Ba
  4. 写入和读取数据GydF4y2Ba- 配置范围传输的屏幕显示为位图。GydF4y2Ba

    fprintf(g,'HARDCOPY:PORT GPIB') fprintf(g,'HARDCOPY:FORMAT BMP')GydF4y2Ba

    异步从仪器传送数据到输入缓冲器。GydF4y2Ba

    readasync(克)GydF4y2Ba

    等到读操作完成,然后将数据作为带符号的8位整数传送到IEEE工作区。GydF4y2Ba

    g.TransferStatus ANS =空闲出来=的fread(克,g.BytesAvailable, 'UINT8');GydF4y2Ba
  5. 断开并清理GydF4y2Ba- 当你不再需要GydF4y2BaGGydF4y2Ba,你应该从仪器上断开,并从内存中,并从工作区IEEE删除它。GydF4y2Ba

    FCLOSE(克)删除(克)清楚克GydF4y2Ba

查看位图数据GydF4y2Ba

要查看位图数据,你应该遵循以下步骤:GydF4y2Ba

  1. 打开一个磁盘文件。GydF4y2Ba

  2. 将数据写入到磁盘上的文件。GydF4y2Ba

  3. 关闭磁盘文件。GydF4y2Ba

  4. 阅读使用数据GydF4y2BaimreadGydF4y2Ba功能。GydF4y2Ba

  5. 比例,并且使用所述显示数据GydF4y2Ba于imagescGydF4y2Ba功能。GydF4y2Ba

注意,MATLAB软件文件的I/O版本GydF4y2BaFOPENGydF4y2Ba,GydF4y2Ba写入文件GydF4y2Ba,GydF4y2BaFCLOSEGydF4y2Ba功能使用。GydF4y2Ba

FID =的fopen( 'test1.bmp', 'W');的fwrite(FID,OUT 'UINT8');FCLOSE(FID)A = imread( 'test1.bmp', 'BMP');GydF4y2Ba

显示图像。GydF4y2Ba

于imagesc(a)中GydF4y2Ba

使用灰色的颜色映射,因为仪器只产生灰度图像。GydF4y2Ba

C =颜色表(灰色);颜色表(flipud(C));GydF4y2Ba

得到的位图图像如下所示。GydF4y2Ba

使用scanstr解析输入数据GydF4y2Ba

这个示例说明如何使用GydF4y2BascanstrGydF4y2Ba函数解析数据,你读从Tektronix TDS 210示波器。GydF4y2BascanstrGydF4y2Ba当你想字符串解析成一个或多个小区的数组元素,其中每个元素被确定为或者是双键或一个字符向量是特别有用的:GydF4y2Ba

  1. 创建一个工具对象GydF4y2Ba- 创建GPIB对象GydF4y2BaGGydF4y2Ba与具有板索引0的国家仪器GPIB控制器和具有主地址1的仪器相关联。GydF4y2Ba

    G = GPIB( 'N',0,1);GydF4y2Ba
  2. 连接仪表GydF4y2Ba- - - - - -连接GydF4y2BaGGydF4y2Ba示波器。GydF4y2Ba

    fopen (g)GydF4y2Ba
  3. 写入和读取数据GydF4y2Ba-使用默认分隔符返回分隔单元格数组的元素的标识信息。GydF4y2Ba

    fprintf中的(g, '* IDN?');IDN = scanstr(克)IDN = 'TEKTRONIX' 'TDS 210'[0] 'CF:91.1CT FV:V1.16 TDS2CM:CMV:1.04'GydF4y2Ba
  4. 断开并清理GydF4y2Ba- 当你不再需要GydF4y2BaGGydF4y2Ba,你应该从仪器的连接,并从内存和MATLAB的工作空间中删除它。GydF4y2Ba

    FCLOSE(克)删除(克)清楚克GydF4y2Ba

了解EOI和EOSGydF4y2Ba

这个示例说明了如何使用EOI行和EOS字符来完成读和写操作,以及如何使用GydF4y2BaEOIModeGydF4y2Ba,GydF4y2BaEOSModeGydF4y2Ba,GydF4y2BaEOSCharCodeGydF4y2Ba属性是相互关联的。在大多数情况下,通过接受这些属性的默认值,您可以成功地与仪器通信。GydF4y2Ba

作为默认值GydF4y2BaEOIModeGydF4y2Ba是GydF4y2Ba在GydF4y2Ba的,这意味着当最后一个字节被写入到仪器上的EOI线被断言。作为默认值GydF4y2BaEOSModeGydF4y2Ba是GydF4y2Ba没有GydF4y2Ba的,这意味着所述GydF4y2BaEOSCharCodeGydF4y2Ba值不写入仪器和读取操作将无法完成时GydF4y2BaEOSCharCodeGydF4y2Ba值被读取。因此,当您使用默认值GydF4y2BaEOIModeGydF4y2Ba和GydF4y2BaEOSModeGydF4y2Ba,GydF4y2Ba

  • 当最后一个字节写入仪器写操作完成。GydF4y2Ba

  • 读操作完成时,EOI线由仪器断言。GydF4y2Ba

  1. 创建一个工具对象GydF4y2Ba- 创建GPIB对象GydF4y2BaGGydF4y2Ba与具有板索引0的国家仪器GPIB控制器和具有主地址1的仪器相关联。GydF4y2Ba

    G = GPIB( 'N',0,1);GydF4y2Ba
  2. 连接仪表GydF4y2Ba- - - - - -连接GydF4y2BaGGydF4y2Ba示波器。GydF4y2Ba

    fopen (g)GydF4y2Ba
  3. 写入和读取数据GydF4y2Ba- 配置GydF4y2BaGGydF4y2Ba从而使最后一个字节写入仪器后EOI线不被肯定,而EOS字符用于完成写入操作。为默认格式GydF4y2Bafprintf中GydF4y2Ba是GydF4y2Ba%S \ nGydF4y2Ba,其中GydF4y2Ba\ nGydF4y2Ba由EOS字符代替通过与给定的GydF4y2BaEOSCharCodeGydF4y2Ba。GydF4y2Ba

    g。EOIMode =“关闭”;g。EOSMode =“写”;fprintf(g,'*IDN?') out = fscanf(g) out = TEKTRONIX,TDS 210,0,CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04GydF4y2Ba

    虽然GydF4y2BaEOSModeGydF4y2Ba如果配置为接收EOS字符后读取操作将不完成,则前面的读取操作将成功,因为已断言EOI行。GydF4y2Ba

    现在配置GydF4y2BaGGydF4y2Ba所以EOS字符不是用来完成读或写操作。由于EOI线不被认定与EOS字符不写,仪器无法解释GydF4y2Ba* IDN?GydF4y2Ba命令和发生超时。GydF4y2Ba

    g.EOSMode = '无';fprintf中的(g, '* IDN?')OUT =的fscanf(克)警告:GPIB:NI:一个I / O操作被取消最有可能由于超时。GydF4y2Ba

    现在配置GydF4y2BaGGydF4y2Ba使“X”字符后读取操作终止被读取。该GydF4y2BaEOIModeGydF4y2Ba属性配置为GydF4y2Ba在GydF4y2Ba所以,最后一个字节写入后的EOI线有效。该GydF4y2BaEOSModeGydF4y2Ba属性配置为GydF4y2Ba读GydF4y2Ba使得读取操作完成时GydF4y2BaEOSCharCodeGydF4y2Ba值被读取。GydF4y2Ba

    g。EOIMode = '在';g。EOSMode =“读”;g。EOSCharCode =“X”;fprintf(g,'*IDN?')输出= fscanf(g)输出= TEKTRONIXGydF4y2Ba

    注意,标识字符串的其余部分保留在仪器的硬件缓冲区中。如果您不想在下一次读取操作期间返回该数据,则应该使用GydF4y2BaclrdeviceGydF4y2Ba功能。GydF4y2Ba

    clrdevice (g)GydF4y2Ba
  4. 断开并清理GydF4y2Ba- 当你不再需要GydF4y2BaGGydF4y2Ba,你应该从仪器的连接,并从内存和MATLAB的工作空间中删除它。GydF4y2Ba

    FCLOSE(克)删除(克)清楚克GydF4y2Ba