タイトルとして...Matlab GPIB - Status Byte RegisterからAVABを読むには?
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
です。助けてくれてありがとう。