我正在尝试从上面指定的示波器传输波形数据并使用MATLAB命令它。这是我的代码的样子:
tbs1052b = visa('ni','USB0::0x0699::0x0368::C020742::INSTR');
fopen(tbs1052b);
fprintf(tbs1052b, 'ACQuire?')
out_1 = fscanf(tbs1052b)
fprintf(tbs1052b, 'DATa?')
out_2 = fscanf(tbs1052b)
fprintf(tbs1052b, 'DATa:WIDth 2')
fprintf(tbs1052b, 'DATa?')
out_3 = fscanf(tbs1052b)
fprintf(tbs1052b, 'DATALOGging?')
out_4 = fscanf(tbs1052b)
fprintf(tbs1052b, 'DATALOGging:SOURCE CH1')
fprintf(tbs1052b, 'DATALOGgING:STATE ON')
fprintf(tbs1052b, 'DATa:ENCdg ASCIi')
fprintf(tbs1052b,'DATa:STARt 1')
fprintf(tbs1052b, 'DATa:STOP 10')
fprintf(tbs1052b,'CURVe?')
out_5 = fscanf(tbs1052b)
前4个扫描命令有效,我得到了每个扫描命令的答案。 但是我得到一个警告说'不成功的读:VISA:超时在操作完成之前到期。 '当我扫描最后一个CURVe时?命令。 我将超时增加到最大值,结果相同。关于什么可能出错的任何想法?
答案 0 :(得分:0)
好的,我知道发生了什么事。我没有指定数据源,这就是为什么Curve不确定从何处获取数据的原因。因此,添加以下行可解决问题:
fprintf(tbs1052b, 'DATa:SOUrce CH1')
另外一些编辑涉及正确地获取数据,这由以下命令描述:
fprintf(tbs1052b, 'ACQuire:STATE ON')
fprintf(tbs1052b, 'ACQuire:MODe SAMple')
fprintf(tbs1052b, 'ACQuire:STOPAfter RUNSTop')
pause(10)
fprintf(tbs1052b, 'ACQuire:STATE OFF')