调试:将信息记录到磁盘gydF4y2Ba

使用记录功能gydF4y2Ba

将信息记录到磁盘提供仪器控制会话的永久记录,并调试应用程序的简单方法。当仪器对象连接到仪器上,你可以将此信息记录到磁盘文件:gydF4y2Ba

  • 写入到仪器值的数量,从仪器上读值的数量,和值的数据类型gydF4y2Ba

  • 写入仪器的数据和从仪器读取的数据gydF4y2Ba

  • 事件信息gydF4y2Ba

方法将信息记录到磁盘文件中gydF4y2Ba记录gydF4y2Ba功能。与将信息记录到磁盘相关联的性质如下。gydF4y2Ba

记录的属性gydF4y2Ba

属性名gydF4y2Ba

描述gydF4y2Ba

RecordDetailgydF4y2Ba

指定的保存到记录文件的信息量。gydF4y2Ba

RecordModegydF4y2Ba

指定数据和事件信息是保存到一个记录文件还是保存到多个记录文件。gydF4y2Ba

RecordNamegydF4y2Ba

指定记录文件的名称。gydF4y2Ba

RecordStatusgydF4y2Ba

指示数据和事件信息是否保存到记录文件中。gydF4y2Ba

简介记录信息gydF4y2Ba

这个例子创建了GPIB对象gydF4y2BaggydF4y2Ba,记录之间传输的值的数目gydF4y2BaggydF4y2Ba和仪器,并存储信息的文本文件gydF4y2Bamyfile.txt文件gydF4y2Ba。gydF4y2Ba

g =通用接口总线(ni, 0,1);g。RecordName =“myfile.txt”;fopen(g) record(g) fprintf(g,'*IDN?') out = fscanf(g);gydF4y2Ba

结束仪器控制会话。gydF4y2Ba

删除(g)删除(ggydF4y2Ba

使用gydF4y2Ba类型gydF4y2Ba命令来显示gydF4y2Bamyfile.txt文件gydF4y2Ba在命令行。gydF4y2Ba

创建多个记录文件gydF4y2Ba

当您启动记录与gydF4y2Ba记录gydF4y2Ba函数,gydF4y2BaRecordModegydF4y2Ba属性确定是否创建了新记录文件,或者是否将新信息追加到现有记录文件。gydF4y2Ba

您可以配置gydF4y2BaRecordModegydF4y2Ba来gydF4y2Ba覆盖gydF4y2Ba,gydF4y2Ba附加gydF4y2Ba,或gydF4y2Ba指数gydF4y2Ba。如果gydF4y2BaRecordModegydF4y2Ba是gydF4y2Ba覆盖gydF4y2Ba,则记录文件被覆盖,每一次记录开始。如果gydF4y2BaRecordModegydF4y2Ba是gydF4y2Ba附加gydF4y2Ba,然后将新信息附加到指定的文件中gydF4y2BaRecordNamegydF4y2Ba。如果gydF4y2BaRecordModegydF4y2Ba是gydF4y2Ba指数gydF4y2Ba,每次开始记录时创建不同的磁盘文件。中讨论了指定记录文件名的规则gydF4y2Ba指定文件名gydF4y2Ba。gydF4y2Ba

指定文件名gydF4y2Ba

属性指定记录文件的名称gydF4y2BaRecordNamegydF4y2Ba财产。可以指定任何值gydF4y2BaRecordNamegydF4y2Ba,包括目录路径,前提是操作系统支持文件名。万博1manbetx另外,如果gydF4y2BaRecordModegydF4y2Ba是gydF4y2Ba指数gydF4y2Ba,则文件名遵循以下规则:gydF4y2Ba

  • 索引文件名由数字标识。该数字位于文件扩展名的前面,对于连续的记录文件增加1。gydF4y2Ba

  • 如果没有指定任何数字作为初始文件名的一部分,然后将第一个记录文件不具有与之相关联的数字。例如,如果gydF4y2BaRecordNamegydF4y2Ba是gydF4y2Bamyfile.txt文件gydF4y2Ba,然后gydF4y2Bamyfile.txt文件gydF4y2Ba是第一个记录文件的名称,gydF4y2Bamyfile01.txtgydF4y2Ba是第二个记录文件的名称,以此类推。gydF4y2Ba

  • RecordNamegydF4y2Ba在记录文件关闭后更新。gydF4y2Ba

  • 如果指定的文件名已经存在,则覆盖现有文件。gydF4y2Ba

记录文件格式gydF4y2Ba

记录文件是ASCII文件,包含一个或多个仪器控制会话的记录。属性指定保存到记录文件的信息量gydF4y2BaRecordDetailgydF4y2Ba财产。gydF4y2Ba

RecordDetailgydF4y2Ba可以gydF4y2Ba紧凑gydF4y2Ba或gydF4y2Ba详细gydF4y2Ba。紧凑的记录文件中包含写入到仪表值的数量,从仪器,值的数据类型和事件信息,请阅读值的数量。甲详细记录文件包含上述信息以及传送并从仪器的数据。gydF4y2Ba

精度给定的二进制数据gydF4y2BauchargydF4y2Ba,gydF4y2BaschargydF4y2Ba(gydF4y2BaugydF4y2Ba)gydF4y2Baint8gydF4y2Ba(gydF4y2BaugydF4y2Ba)gydF4y2BaINT16gydF4y2Ba, 要么 (gydF4y2BaugydF4y2Ba)gydF4y2BaINT32gydF4y2Ba被记录为十六进制值。例如,如果整数值255从仪器作为一个16位整数读出,十六进制值00FF被保存在记录文件中。单精度和双精度浮点数被记录为使用十进制值gydF4y2Ba% ggydF4y2Ba格式,并使用IEEE指定的格式作为十六进制值gydF4y2Ba®gydF4y2Ba二进制浮点算术的标准754-1985。gydF4y2Ba

IEEE浮点格式包括符号位、指数字段和有效字段三个部分。单精度浮点值由32位组成,其值由gydF4y2Ba

值= (1)gydF4y2Ba标志gydF4y2Ba(2gydF4y2BaEXP-127gydF4y2Ba)(1. significand)gydF4y2Ba

双精度浮点值由64位组成,其值由gydF4y2Ba

值= (1)gydF4y2Ba标志gydF4y2Ba(2gydF4y2BaEXP-1023gydF4y2Ba)(1. significand)gydF4y2Ba

浮点格式分量和相关联的单精度和双精度的位如下。gydF4y2Ba

格式分量gydF4y2Ba

单精度比特gydF4y2Ba

双精度的部分gydF4y2Ba

标志gydF4y2Ba

1gydF4y2Ba

1gydF4y2Ba

经验值gydF4y2Ba

2-9gydF4y2Ba

2-12gydF4y2Ba

significandgydF4y2Ba

10-32gydF4y2Ba

13 - 64gydF4y2Ba

例如,假设您使用单精度格式记录十进制值4.25。记录文件存储4.25为十六进制值40880000,由IEEE单精度浮点格式计算。若要重新构造原始值,请将十六进制值转换为十进制值gydF4y2Bahex2decgydF4y2Ba:gydF4y2Ba

dval = hex2dec('40880000') dval = 1.082654720000000e+009gydF4y2Ba

使用十进制值转换为二进制值gydF4y2BaDEC2BINgydF4y2Ba:gydF4y2Ba

BVAL = DEC2BIN(DVAL,32)BVAL = 01000000100010000000000000000000gydF4y2Ba

的解释gydF4y2BaBVALgydF4y2Ba由前述的表中给出。最左边位指示值是正的,因为(1)gydF4y2Ba0gydF4y2Ba= 1。接下来的8位对应于指数,由gydF4y2Ba

2 . exp = 10000001gydF4y2Ba

的十进制值gydF4y2Ba经验值gydF4y2Ba是2gydF4y2Ba7gydF4y2Ba+2gydF4y2Ba0gydF4y2Ba= 129。剩下的位对应于显着值,这是由gydF4y2Ba

= 00010000000000000000000gydF4y2Ba

的十进制值gydF4y2BasignificandgydF4y2Ba是2gydF4y2Ba-4gydF4y2Ba= 0.0625。您可以通过堵塞的十进制值重构原始值gydF4y2Ba经验值gydF4y2Ba和gydF4y2BasignificandgydF4y2Ba带入IEEE单身公式:gydF4y2Ba

值= (1)gydF4y2Ba0gydF4y2Ba(2gydF4y2Ba129 - 127gydF4y2Ba)(1.0625)值= 4.25gydF4y2Ba

将信息记录到磁盘gydF4y2Ba

这个例子延伸gydF4y2Ba读取和写入二进制数据gydF4y2Ba通过将相关信息记录到记录文件中。另外,给出了生成的记录文件的结构:gydF4y2Ba

  1. 创建一个仪器对象gydF4y2Ba-创建GPIB对象gydF4y2BaggydF4y2Ba与美国国家仪器相关gydF4y2Ba®gydF4y2Ba带主板索引0的GPIB控制器和带主地址1的仪器。gydF4y2Ba

    g =通用接口总线(ni, 0,1);gydF4y2Ba
  2. 配置性能gydF4y2Ba-配置输入缓冲区接受一个相当大的字节数,并配置超时值为2分钟,以说明缓慢的数据传输。gydF4y2Ba

    g.InputBufferSize = 50000;g.Timeout = 120;gydF4y2Ba

    配置gydF4y2BaggydF4y2Ba执行回调函数gydF4y2BainstrcallbackgydF4y2Ba每次输入缓冲区中存储5000字节。gydF4y2Ba

    g。BytesAvailableFcnMode =“字节”;g。BytesAvailableFcnCount = 5000;g。BytesAvailableFcn = @instrcallback;gydF4y2Ba

    配置gydF4y2BaggydF4y2Ba使用详细格式将信息记录到多个磁盘文件。第一个磁盘文件是gydF4y2Ba定义为gydF4y2BaWaveForm1.txtgydF4y2Ba。gydF4y2Ba

    g.RecordMode = '索引';g.RecordDetail = '冗长';g.RecordName = 'WaveForm1.txt';gydF4y2Ba
  3. 连接仪表gydF4y2Ba- - - - - -连接gydF4y2BaggydF4y2Ba到示波器。gydF4y2Ba

    的fopen(克)gydF4y2Ba
  4. 写入和读取数据gydF4y2Ba——启动记录。gydF4y2Ba

    记录(g)gydF4y2Ba

    配置范围传输的屏幕显示为位图。gydF4y2Ba

    fprintf中的(g, 'HARDCOPY:PORT GPIB')fprintf中的(g, 'HARDCOPY:FORMAT BMP')fprintf中的(g, 'HARDCOPY START')gydF4y2Ba

    启动异步读取操作,并开始生成事件。gydF4y2Ba

    readasync (g)gydF4y2Ba

    instrcallbackgydF4y2Ba每次在输入缓冲区中存储5000字节时调用。结果显示如下所示。gydF4y2Ba

    信息bytesAvailable事件发生在9时04分33秒的对象:GPIB0-1。信息bytesAvailable事件发生在9时04分42秒的对象:GPIB0-1。信息bytesAvailable事件发生在9时04分51秒的对象:GPIB0-1。信息bytesAvailable事件发生在9时05分00秒的对象:GPIB0-1。信息bytesAvailable事件发生在9时05分10秒的对象:GPIB0-1。信息bytesAvailable事件发生在9点05分19秒的对象:GPIB0-1。信息bytesAvailable事件发生在9时05分28秒的对象:GPIB0-1。gydF4y2Ba

    等到所有的数据被存储在输入缓冲器中,然后将数据传送到MATLABgydF4y2Ba®gydF4y2Ba工作区为无符号的8位整数。gydF4y2Ba

    OUT =的fread(克,g.BytesAvailable, 'UINT8');gydF4y2Ba

    切换从记录状态gydF4y2Ba在gydF4y2Ba来gydF4y2Ba离gydF4y2Ba。因为gydF4y2BaRecordModegydF4y2Ba值是gydF4y2Ba指数gydF4y2Ba时,记录文件名会自动更新。gydF4y2Ba

    记录g (g)。RecordStatusans = off g.RecordName ans = WaveForm2.txt
  5. 断开并清理gydF4y2Ba-当你不再需要的时候gydF4y2BaggydF4y2Ba,您应该将其从仪器上断开,并将其从内存和MATLAB工作区中删除。gydF4y2Ba

    删除(g)删除(ggydF4y2Ba

记录文件内容gydF4y2Ba

要显示WaveForm1.txt记录文件的内容,gydF4y2Ba

类型WaveForm1.txtgydF4y2Ba

记录文件内容如下所示。方法返回的数据gydF4y2BaFREADgydF4y2Ba功能是十六进制格式(最位图数据的未示出)。gydF4y2Ba

图例:* -事件发生。> -发生写操作。< -发生读操作。1录音于2000年6月18日09:03:53.529。小端数格式的二进制数据。2 > 18个ascii值。硬拷贝:端口GPIB 3 > 19 ascii值。硬拷贝:格式化bmp4 > 14 ascii值。硬拷贝开始5 * BytesAvailable事件发生在18 - 2000年6月——09:04:33.334 6 * BytesAvailable事件发生在18 - 2000年6月,在09:04:41.775 7 * BytesAvailable事件发生在18 - 2000年6月- 8 09:04:50.805 * BytesAvailable事件发生在18 - 2000年6月,在09:04:00.266 9 * BytesAvailable事件发生在18 - 2000年6月- 10 09:05:10.306 * BytesAvailable事件发生在18 - 2000年6月,在09:05:18.777 11 * BytesAvailable事件发生在18 - 38462年6月在09:05:27.778 12 - 2000 < uint8值。42 4 d cf 03 00 00 00 00 00 00 3 e 00 00 00 28日00 00 00 80 02 00 00 e0 01 00 00 00 00 00 00 00 00 00 96 00 00 00 00 00 00 00 00 00 00 00 00。 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 13 Recording off.