泰克 TBS 1052B 的波形传输

Waveform transfer for Tektronix TBS 1052B

我正在尝试从上述指定的示波器传输波形数据并使用 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 个扫描命令有效,我得到了每个命令的答案。 但是,当我扫描最后一个 CURVe 时,我收到一条警告说 'Unsuccessful read: VISA: Timeout expired before operation completed. '?命令。 我将超时增加到最大值,结果相同。关于可能出错的任何想法?

好的,我知道发生了什么事了。我没有指定数据源,这就是 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')