MATAB读取示波器数据

使用matlab每隔一段时间读取一次示波器界面上的波形 。

clear;h=waitbar(0,'Please wait...');
loop_number = 10;

%------------------- b----OSC------------------------------

recordLen=100000;
g = visa('AGILENT','USB0::0x0957::0x17A2::MY53160311::0::INSTR');
set(g,'InputBufferSize',recordLen*3);
fopen(g);
fprintf(g,':WAVeform:SOURce CHANnel1');
fprintf(g,':WAVEFORM:FORMAT WORD');
fprintf(g,':WAVEFORM:BYTEORDER LSBFirst');
fprintf(g,':WAVeform:STReaming 1');
preambleBlock = query(g,':WAVEFORM:PREAMBLE?');
preambleBlock = regexp(preambleBlock,',','split');
horizLen = str2double(preambleBlock{3});
waveform_YIncrement = str2double(preambleBlock{8});
waveform_YOrigin = str2double(preambleBlock{9});
waveform_Yreference = str2double(preambleBlock{10});

%--------------------------------------------------------------------%

for cyclenum=1:8                                                    
   recordLen2Transfer = min(recordLen,horizLen);
%    waveform_raw = zeros(recordLen2Transfer,1);
   fprintf(g,':WAVeform:DATA?');
%    waveform_Raw = binblockread(g,'int 16'); fread(g,1);
    [waveform_raw,count] = fread(g,recordLen2Transfer,'int16');
%    waveform_YIncrement = query(g,':WAVeform:YINCrement?'); % V
%    waveform_YIncrement = str2double(waveform_YIncrement);
   waveform = (waveform_raw-waveform_Yreference) * waveform_YIncrement + waveform_YOrigin;
   Data{cyclenum}= waveform;
   waitbar(cyclenum/loop_number);
   A=Data{cyclenum};
   figure();
   subplot(2,1,1)
   plot(A);
   title("time domain")
%傅里叶变换
  fs = 2e9;
  y = fft(A);
  freq = (0 : length(A) - 1) * fs / length(A) / 1e6;
  subplot(2,1,2)
  plot(freq, 20 * log10(abs(y)));
  title("frequency domain")
  xlim([0, 9]);
  max_am = max(20 * log10(abs(y)));
  line([0, 9], [max_am, max_am], 'LineStyle', '--');
  line([0, 9], [max_am - 6, max_am - 6], 'LineStyle', '--');

%    index=num2str(cyclenum);
% index=strcat(datestr(now,'yyyymmddHHMMFFF'),num2str(cyclenum));
   filename=strcat('D:/test/',datestr(now,'yyyymmddHHMMFFF'));
   filename=strcat(filename,'.mat');
   save(filename,'A');
   %subplot(2,5,cyclenum);
   pause(5);
end
%--------------------------------------------------------------------%
fclose(g);

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值