clc;clear all; close;
delete(instrfindall);%关闭已经打开的串口
clear obj;
name = 'temp_data.txt'; %0
read_success=0;
n = 16412;%设置一次接收数据长度
a=[126 126 0 34 0 4 1 1 1 1 89 213]; %发送指令
%ad_data=[];
j=1;
sendata = dec2hex(a);%十进制转成16进制
databuffer=[];
obj = serial('com3','baudrate',115200,'parity','none','databits',8,'stopbits',1); %串口设置
set(obj, 'InputBufferSize', 32000);
set(obj, 'OutputBufferSize', 32000);
fopen(obj);
fwrite(obj,a);
databuffer = fread(obj,n,'uint8'); %串口读取数据
if isempty(databuffer) ==1
disp('数据读取失败');
else
disp('数据读取成功');
read_success=1;
dlmwrite(name,databuffer); %数据格式保存为txt文件
end
fclose(obj);
delete(obj);
%保存数据
if read_success ==1
gd_adc = 1;
%数据处理
ch1_data =[]; %通道1数据地址
ch2_data =[]; %通道2数据地址
j=1;
%ad_data=[];
m=load('temp_data.txt');
temp_data=m(27:16410);
b=reshape(temp_data,2048,8);
for i = 1 : 2048 %27~2075-ch1,2075~4123-ch2
temp1 = b(i,1); %
temp2 = b(i,2);
temp3 = b(i,3);
temp4 = b(i,4); %
temp5 = b(i,5);
temp6 = b(i,6);
temp7 = b(i,7);
temp8 = b(i,8);
if mod(i,2)==1
a1 = bitshift(temp1,8); %a左移8位赋值给b
a2 = bitshift(temp2,8);
a3 = bitshift(temp3,8); %a左移8位赋值给b
a4 = bitshift(temp4,8);
a5 = bitshift(temp5,8); %a左移8位赋值给b
a6 = bitshift(temp6,8);
a7 = bitshift(temp7,8); %a左移8位赋值给b
a8 = bitshift(temp8,8);
elseif mod(i,2)==0
ch1_data(j) = bitor(temp1,a1);
ch2_data(j) = bitor(temp2,a2);
ch3_data(j) = bitor(temp3,a3);
ch4_data(j) = bitor(temp4,a4);
ch5_data(j) = bitor(temp5,a5);
ch6_data(j) = bitor(temp6,a6);
ch7_data(j) = bitor(temp7,a7);
ch8_data(j) = bitor(temp8,a8);
j=j+1;
end
end
for k=1:1024
ch1_vin(k) = (5.0*ch1_data(k))/32768.0;
ch2_vin(k) = (5.0*ch2_data(k))/32768.0;
ch3_vin(k) = (5.0*ch3_data(k))/32768.0;
ch4_vin(k) = (5.0*ch4_data(k))/32768.0;
ch5_vin(k) = (5.0*ch5_data(k))/32768.0;
ch6_vin(k) = (5.0*ch6_data(k))/32768.0;
ch7_vin(k) = (5.0*ch7_data(k))/32768.0;
ch8_vin(k) = (5.0*ch8_data(k))/32768.0;
end
number= length(ch1_vin);
x=linspace(1,number,number);
%原始信号
figure(1);
subplot(211);
plot(x,ch1_vin);
ylim([0,4]);xlim([0,1024]);
ylabel('幅值/v','FontSize',12);title('CH1');
subplot(212);
plot(x,ch2_vin);
ylim([0,4]);xlim([0,1024]);
ylabel('幅值/v','FontSize',12);title('CH2');
figure(2)
subplot(211);
plot(x,ch1_vin);
%ylim([-3.3,3.3]);
xlim([0,1024]);
xlabel('采样点数','FontSize',12);ylabel('幅值/v','FontSize',12);title('CH1振动信号');
%fft
fs=20000;
nfft=2048;
rfft = fft(ch7_vin,nfft);
y1=abs(rfft);
f1=(0:nfft-1).*fs/nfft;
%figure(2)
subplot(212);
plot(f1(1:nfft/2),y1(1:nfft/2)*2/nfft);
xlim([0,2000]);
xlabel('f/Hz','FontSize',12);ylabel('幅值/v','FontSize',12);title('CH1振动信号FFT谱图');
end