2

我正在尝试从上述指定的示波器传输波形数据并使用 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 时?命令。我将超时增加到最大值,结果相同。关于什么可能是错误的任何想法?

4

1 回答 1

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')
于 2017-08-22T05:00:39.407 回答