正如标题所说...
我想检查通过GPIB连接的设备的SBR寄存器。我有兴趣阅读 MAV 位 4,如果仪器有要发送给我的东西,应该设置它。
问题是,为了检查SBR,我不可避免地必须发送另一个查询(*STB?
),默认情况下会清除设备输出缓冲区。换句话说,每当我检查是否有要阅读的内容时,我只是通过查看将其删除。这是重现它的代码,问题出在最后一次调用fscanf()
:
>> fid = gpib('agilent', 7, 26);
>> fopen(fid)
>> fprintf(fid, '*SRE 255; *SRE?') % Enable everything in SBR
>> fscanf(fid) % Returns +191 as expected (255 - 64 for MSS)
>> fprintf(fid, '*IDN?') % Make any query...
>> fprintf(fid, '*STB?') % Read SBR
% The line above generates device Query Error (beep)
>> fscanf(fid) % << Returns +0 !!!
>> fclose(fid) % Just to prevent flames :]
我怀疑,有一些方法可以在不查询设备的情况下检查 SBR,但我找不到任何东西。VISA 驱动程序的 MATLAB 帮助没有提及直接与驱动程序或总线通信的主题。
我也尝试检查BusManagementStatus无济于事。
作为参考,我使用MATLAB R2011b
的是 32 位Agilent VISA
驱动程序,支持 GPIB 的设备是Agilent E4980A LCR Meter
. 谢谢你的帮助。