% --------------------------------------------------------------------
% Script za ucitavanje fajlova snimljenih programom DriveWindow
% Prepoznaje da li su podaci snimljeni "As Shown" ili "As Measured"
% Hvala Žarku Koprivici 14/101.
% --------------------------------------------------------------------

clear all
close all
clc
    % --------------------------------------------------
    [FNAME, PNAME] = uigetfile ('*.*', 'Izaberi fajl');
	imefajla = [PNAME, FNAME];
    
    FID = fopen (imefajla, 'r');
    H = textscan(FID, '%s %s %s %s %s %s %s %s %s %s %s %s', 17,...
                 'delimiter', '\t');
    FigTitle = [FNAME, '  ', H{1,1}{2,1}];
    Coefficient = ones(1,6);
    Offset = zeros (1,6);
    
    % U razlicitim verzijama matlaba 
    % funkcija textscan se ne ponasa na isti nacin.
    % uneti brojeve redova u txt fajlu
    LC = 14; % Broj reda gde je Coefficient
    LO = 15; % Broj reda gde je Offset
    LN = 16; % Broj reda gde je Name
    for i = 1:6
        Coefficient(i) = str2double (H{1,1+i}{LC,1});
        Offset(i) = str2double (H{1,1+i}{LO,1});
        Name{i} = H{1,1+i}{LN,1};
    end     
    
    C = textscan(FID, '%f %f %f %f %f %f %f', ...
                 'delimiter', '\t');
             
    t = C{1,1};     % Vremenska osa od prve krive
%   Odreðivanje da li je izabrana opcija As Shown ili As Measured
    Cetvrti_red=strsplit(H{1,1}{4,1},' ');
%   Šesta reè u tom redu je Shown ili Measured  
    Rec=Cetvrti_red(6);
    if(strcmp(Rec,'Shown'))
            for i = 1:6            
            ch(:,i) = 1 * C{1,1+i} - 0;                 
            end        
    else
        for i = 1:6            
            ch(:,i) = Coefficient(i) * C{1,1+i} + Offset(i);
        end
    end
    % --------- sile ----------------
    figure (1);     
    
    set(gcf, 'Name', FigTitle);
    
    ax(1) = subplot (3,1,1);   % gornji plot
        P1 = 1; P2 = 2; % definisemo koje kanale prikazujemo
        plot (t, ch(:,P1), 'r-', 'LineWidth', 2); 
        hold on
        plot (t, ch(:,P2), 'b-', 'LineWidth', 1)
        % ako se kanali poklapaju smnjiti debljinu linije
        hold off
        set(gca, 'XLim', [min(t), max(t)]);
        grid on; 
        % ylabel (strcat(Name(P1), Name(P2)));
        legend (Name{P1}, Name{P2}, 'Location', 'Best'); 
        xlabel ('Vreme [s]');
        
        title(FigTitle);    % samo gornjeg grafiku postavimo naslov
        
    ax(2) = subplot (3,1,2); % srednji plot
        P1 = 5; P2 = 4;  % definisemo koje kanale prikazujemo
        plot (t, ch(:,P1), 'r-', 'LineWidth', 2); 
        hold on
        plot (t, ch(:,P2), 'b-', 'LineWidth', 2)  
        % ako se kanali poklapaju smnjiti debljinu linije
        hold off
        set(gca, 'XLim', [min(t), max(t)]);
        grid on; 
        % ylabel (strcat(Name(P1), Name(P2)));
        legend (Name{P1}, Name{P2}, 'Location', 'Best'); 
        xlabel ('Vreme [s]');
        
    ax(3) = subplot (3,1,3);
        P1 = 3; P2 = 6;  % definisemo koje kanale prikazujemo
        plot (t, ch(:,P1), 'r-', 'LineWidth', 2); 
        hold on
        plot (t, ch(:,P2), 'b-', 'LineWidth', 2)
        % ako se kanali poklapaju smnjiti debljinu linije
        hold off
        set(gca, 'XLim', [min(t), max(t)]);
        grid on; 
        % ylabel (strcat(Name(P1), Name(P2)));
        legend (Name{P1}, Name{P2}, 'Location', 'Best'); 
        xlabel ('Vreme [s]');

    linkaxes (ax, 'x')
    
    return
  