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);

基于USB的泰克示波器MATLAB的波形传输-泰克程序.pdf 我是今年刚毕业的测控学生,由于要分析驱动器上的各种性能参数,应师傅要求,要把泰克示波器上采集的数据传输到MATLAB上。我最早也是在论坛上找到一些帮助的,那位大虾上传了一份MATLAB官方的资料,只是找不到那篇文章了,在此先表示感谢。        闲话少叙,我说一下我的方法,再把我用到的资料上传一下,程序是单位要求写的不上传了。       1.检查你示波器有没有和PC通信的接口,是什么接口安,装示波器的PC机通信驱动。很重要的。不然下面都是白搭。       2 .利用Instrument control toolbox,建立USB接口和示波器器件,在Matlab_Instrument_Driver.pdf中有详细说明。       3.先通过Instrument control toolbox的工具连接器件和MATLAB,设置参数,读取波形。这个过程中你会得到一个有工具箱生成的M文件,理论上说,这样就可以完成参数的设置和波形的读取。但由于你的示波器有很多通信格式初始化好的参数不能用会发生很多问题,那你就只能做下一步。       4.对工具箱自动生成的M程序结合对应的示波器驱动程序(.MDD文件)阅读,了解M程序的本质,其实就是和示波器之间发指令和数据。期间你可能需要查阅很多MATLAB的HELP文件和泰克示波器相应型号的指令手册,我这里上传我用的泰克示波器TDS2024B指令手册《泰克程序.PDF》。       小弟也只是根据自己现在的一些经验写的这些,很多问题还没解决,比如说,示波器每个波形只能采2500个点吗?我从论坛中的到帮助,写这些做一些小小的回报,如需探讨,小弟QQ244907405。最后附加一个实例论文《Matlab与数字示波器的通信.pdf》。还有一个很重要的文件提供示波器MATLAB通信驱动tektronix_tds2024.mdd,论坛不支持MDD格式,不能上传。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值