Conversion from GPIB to visadev : BusManagementStatus
6 次查看(过去 30 天)
显示 更早的评论
Dear Matlab community,
I was using the "traditional" gpib interface (see https://ch.mathworks.com/help/instrument/gpib.html) to communicate with a measurement device. After having seen the warning that this approach would soon be removed, I decided to modify my code to use the visadev based approach, following the recomandations given here. Everything works well apart from the BusManagementStatus that has been removed without giving a straight forward alternative.
My code was performing the following loop to wait for the device to be ready:
while ~strcmp(inst.BusManagementStatus.ServiceRequest,'on')
pause(0.25);
end
Where inst is the instrument as returned by gpib function.
Following the description of the visastatus function (see https://ch.mathworks.com/help/instrument/visadev.visastatus.html?s_tid=doc_ta), I have modified my code to (inst is now returned by visadev):
[status_bit,status_flag]=visastatus(inst);
while ~status_bit
pause(0.2);
[status_bit,status_flag]=visastatus(inst);
end
But this does not result in the same behaviour as the original code (the loop is never executed or only once). I then decided to use the second output argument of the visastatus function to look specifically at the RSQ bit (bit number 6 according to the documentation of visastatus, hence the masking with 64=0x44=0b01000000):
[status_bit,status_flag]=visastatus(inst);
while ~bitand(uint8(status_flag),uint8(64))==64 %test if RQS bit is at 1
pause(0.2);
[status_bit,status_flag]=visastatus(obj.inst);
end
But this still does not work. Using the software GPIB Analyzer by NI, I could see live the status of the RSQ bit which was sometimes different from what visastatus was returning. Is there any documentation on how to convert the behaviour of BusManagementStatus into the visadev approach?
Thanks in advance for the help
0 个评论
回答(1 个)
Nikhilesh
2023-3-9
There isn't a direct equivalent to the BusManagementStatus function in the visadev approach. The visadev approach uses the VISA standard for communication, which is different from the GPIB standard used by gpib.
However, you can use the visastatus function to check the status of the instrument. The visastatus function returns a status bit vector and a status flag, which indicate the status of the instrument.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!