function [X,Y,Xb,Yb,max,min,mediana,media,desv,...
        xmax_loc,ymax_loc,xmin_loc,...
        ymin_loc,fecha,hora]=func_principal(tasa_muestreo,num_canales,por_desv,...
        DeltaT,nombreFichero)
%Función que nos permite realizar el procesado temporal de las señales, sus
%parametros de entrada son los siguientes:
%tasa de muestreo: Tasa a la que muestrea la tarjeta de adquisicion de datos
%num_canales:      Numero de canales conectados a la tarjeta de adquisicion de datos
%por_desv:         Porcentaje de desviacion permitida para los datos iniciales
%DeltaT:           Intervalo de tiempo en el que vamos a comprobar los 
%                  valores parafiltrar
%Como parámetros de salida tenemos:
%X,Y:              Datos en tiempo y V de la señal original
%Xb,Yb:            Datos en tiempo y V de la señal filtrada
%max,min,mediana,media,desv: Principales estadísticas de los datos
%                  filtrados tal y como indican sus nombres respectivamente
%xmax_loc,ymax_loc....:valores de los máximos y mínimos locales tanto en
%                  tiempo como en tensión

X     = [];         %Instantes de tiempo originales
Y     = [];         %Valores de tensión de los datos originales
Xb    = [];         %Instantes de tiempo filtrados 
Yb    = [];         %Valores de tensión filtrados
Xb1   = [];         %Variable auxiliar
Yb1   = [];
j     = 0;          %Variable que usamos para construir el vector de tiempo
hacer = 0;          %Decide sobre que canal realizamos la caracterizacion en un intervalo
J=[];                    %si hacer=-1 no deseamos hacer caracterizaciones
s=[];
m=0;
n=0;
fecha='';
hora='';

[H,J]=wk1read(nombreFichero);                     %leemos del fichero de datos
%se incorpora H porque el archivo netprobe contiene datos
[m,n]=size(J);
for i=3:m
    s=[s;J{i}];
end
for i=1:m-2
    temp=str2double(s(i,21:25));
    hum=str2double(s(i,35:36));
    c1=str2double(s(i,39:42));
    c2=str2double(s(i,45:48));
    c3=str2double(s(i,51:54));
    c4=str2double(s(i,57:60));
    c5=str2double(s(i,63:66));
    c6=str2double(s(i,69:72));
    c7=str2double(s(i,75:78));
    c8=str2double(s(i,81:84));
    Y=[Y;temp,hum,c1,c2,c3,c4,c5,c6,c7,c8];
end
s='';
s=J{m};
%El último elemento que aparece en la tabla es la primera captura
fecha=s(1:10);
hora=s(12:19);


[M,N]=size(Y);
X=[0:tasa_muestreo:(M-1)*tasa_muestreo];        %Creamos el vector temporal inicial

if (M==length(X))
    warndlg('Se han leído los datos correctamente','AVISO')
else
    errordlg('ERROR: X e Y tienen distinta longitud','ERROR')
end

TiempoTotal = (M-1)*tasa_muestreo;              %longitud temporal total

%comprobamos que intervalo de tiempo, DeltaT, sobre el que vamos a realizar
%la caracterizacion es inferior al tiempo total introducido, en caso
%contrario se igual al tiempo total y no se realiza ningun filtrado por
%construccion
if(DeltaT>=TiempoTotal)
    warndlg('DeltaT es igual al tiempo total de medida')
    DeltaT = TiempoTotal;
end


%De todos los valores obtenidos decimos que son incorrectos los que
%contienen un % de desviacion mayor que la permitida. Para ello lo hacemos
%comparando el valor con el numero de elementos que deseemos. Si la
%desviacion es muy grande se pone el valor de la media.
%DeltaT
TasaMuestreo = tasa_muestreo;
for i=1:(num_canales+2)
    [Xb1,Yb1]=elim_error(X,Y(:,i)',por_desv,DeltaT,TasaMuestreo);
    Xb=[Xb,Xb1'];
    Yb=[Yb,Yb1'];
end

%usamos la funcion de caracterizacion general para obtener los parametros
%mas importantes de cada lista de valores. Se han introducido los datos una
%vez filtrados
[max,min,mediana,media,...
        desv,xmax_loc,ymax_loc,...
        xmin_loc,ymin_loc]=caract_general(Xb,Yb,num_canales,2);
%el último valor de esta función vale 2 porque estamos caracterizando todos
%los datos, para una porción vae 0
