function typ_diody(handles)
% podle namerenych hodnot zjisti typ diody
% vygeneruje i report se vsemi hodnotami

global zadane_hodnoty zjistene_hodnoty casove_hodnoty

Umax = zadane_hodnoty(1);
Imax = zadane_hodnoty(2);
krok = zadane_hodnoty(3);
vzorku = zadane_hodnoty(4);
amp1 = zadane_hodnoty(5);
frek1 = zadane_hodnoty(6);
amp2 = zadane_hodnoty(7);
frek2 = zadane_hodnoty(8);

Ud = zjistene_hodnoty(1);
Uz = zjistene_hodnoty(2);
Izbyt = zjistene_hodnoty(3);
polarizace = zjistene_hodnoty(4);
t_fr = zjistene_hodnoty(5);
t_rr = zjistene_hodnoty(6);

cas_va = casove_hodnoty(1);
cas_propzot = casove_hodnoty(2);
cas_zavzot = casove_hodnoty(3);

typ = '';
typs = '';

% rozhodnuti o typu diody
if ~isnan(Uz)
    % je Zenerova
    typ = ['Zenerova dioda, Uz = ' num2str(Uz) ' V'];
    typs = ['Zenerova dioda, Uz = ' num2str(Uz) ' V'];
else
    % ostatni typy
    if Ud >= 1.0
        % LED
        if Ud < 1.5
            % infra
            typ = ['IR LED, Ud = ' num2str(Ud) ' V'];
            typs = ['IR LED, Ud = ' num2str(Ud) ' V'];
        elseif Ud < 1.75
            % cervena
            typ = ['Červená LED, Ud = ' num2str(Ud) ' V'];
            typs = ['Cervena LED, Ud = ' num2str(Ud) ' V'];
        elseif Ud < 2.5
            % zelena nebo zluta
            typ = ['Zelená nebo žlutá LED, Ud = ' num2str(Ud) ' V'];
            typs = ['Zelena nebo zluta LED, Ud = ' num2str(Ud) ' V'];
        elseif Ud < 3.3
            % bila nebo modra
            typ = ['Bílá nebo modrá LED, Ud = ' num2str(Ud) ' V'];
            typs = ['Bala nebo modra LED, Ud = ' num2str(Ud) ' V'];
        else
            % UV
            typ = ['UV LED, Ud = ' num2str(Ud) ' V'];
            typs = ['UV LED, Ud = ' num2str(Ud) ' V'];
        end
    else
        if Ud <= 0.5
            % Ge, Schottky
            typ = ['Ge nebo Schottky, Ud = ' num2str(Ud) ' V'];
            typs = ['Ge nebo Schottky, Ud = ' num2str(Ud) ' V'];
        elseif Ud < 0.645
            % Si, Ge, Schottky
            typ = ['Si, Ge nebo Schottky, Ud = ' num2str(Ud) ' V'];
            typs = ['Si, Ge nebo Schottky, Ud = ' num2str(Ud) ' V'];
        else
            % Si
            typ = ['Si, Ud = ' num2str(Ud) ' V'];
            typs = ['Si, Ud = ' num2str(Ud) ' V'];
        end
    end
end

set(handles.vysledek, 'String', typ);

% prevzeti charakteristik z grafu
% zaverna zotavovaci doba
h = handles.graf_zavzot;
data = get(h, 'Children');
prubeh_zavx = []; prubeh_zavy = [];
for i=1:length(data)
    prubeh_zavx = get(data(i), 'XData');
    prubeh_zavy = get(data(i), 'YData');
    if length(prubeh_zavx) > 10
        break;
    end
end

% propustna zotavovaci doba
h = handles.graf_propzot;
data = get(h, 'Children');
for i=1:length(data)
    prubeh_propx = get(data(i), 'XData');
    prubeh_propy = get(data(i), 'YData');
    if length(prubeh_propx) > 10
        break;
    end
end

% va charakteristika
h = handles.graf_va;
data = get(h, 'Children');
prubeh_va1x = get(data(1), 'XData');
prubeh_va1y = get(data(1), 'YData');
prubeh_va2x = get(data(2), 'XData');
prubeh_va2y = get(data(2), 'YData');


% vygenerovani reportu
[soubor slozka] = uiputfile('*.*', 'Vybrat soubor k uložení reportu (bez koncovky)', '');
if ischar(soubor)
    % pokud byl vybran soubor, ulozim hodnoty
    
    % bude potreba mit i casy jednotlivych mereni
    datum = datestr(now, 'dd.mm.yyyy HH:MM:SS');
        
    % nejdrive zmerene veliciny a datum mereni
    ra = [char(13) char(10)];
    zapis = ['Ud (V)' ra num2str(Ud) ra 'Uz (V)' ra];
    if isnan(Uz)
        zapis = [zapis '-'];
    else
        zapis = [zapis num2str(Uz)];
    end
    zapis = [zapis ra 'Ir (nA)' ra];
    if isnan(Izbyt)
        zapis = [zapis '-'];
    else
        zapis = [zapis num2str(Izbyt .* 1e9)];
    end
    zapis = [zapis ra 'polarizace (-)' ra];
    if polarizace == 1
        zapis = [zapis 'propustna'];
    else
        zapis = [zapis 'zaverna'];
    end
    zapis = [zapis ra 'trr (ns)' ra];
    if t_rr == -1
        zapis = [zapis '-'];
    else
        zapis = [zapis num2str(t_rr .* 1e9)];
    end
    zapis = [zapis ra 'tfr (ns)' ra];
    if t_fr == -1
        zapis = [zapis '-'];
    else
        zapis = [zapis num2str(t_fr .* 1e9)];
    end
    zapis = [zapis ra 'typ diody (-)' ra typs ra 'Doba mereni (s)' ra num2str(round(cas_va+cas_propzot+cas_zavzot))];
    zapis = [zapis ra 'Datum a cas mereni' ra datum ra];
    
    % hodnoty nastavene uzivatelem
    zapis = [zapis 'Umax (V)' ra num2str(Umax) ra 'Imax (mA)' ra];
    zapis = [zapis num2str(Imax .* 1e3) ra 'krok napeti (V)' ra num2str(krok) ra 'vzorku (-)' ra num2str(vzorku) ra];
    zapis = [zapis 'Amplituda pri t_fr (V)' ra num2str(amp1) ra 'Frekvence pri t_fr (kHz)' ra num2str(frek1 ./ 1e3) ra];
    if amp2 == 0
        zapis = [zapis 'Amplituda pri t_rr (V)' ra '-' ra 'Frekvence pri t_rr (kHz)' ra '-' ra];
    else
        zapis = [zapis 'Amplituda pri t_rr (V)' ra num2str(amp2) ra 'Frekvence pri t_rr (kHz)' ra num2str(frek2 ./ 1e3) ra];
    end
    
    % data z grafu
    zapis = [zapis 'Hodnoty VA charakteristiky (1. cast)' ra];
    nap = ['U (V)  ' num2str(prubeh_va1x(1))];
    pro = ['I (mA) ' num2str(prubeh_va1y(1))];
    for i=2:length(prubeh_va1x)
        nap = [nap ',' num2str(prubeh_va1x(i))];
        pro = [pro ',' num2str(prubeh_va1y(i))];
    end
    zapis = [zapis nap ra pro ra];

    zapis = [zapis 'Hodnoty VA charakteristiky (2. cast)' ra];
    nap = ['U (V)  ' num2str(prubeh_va2x(1))];
    pro = ['I (mA) ' num2str(prubeh_va2y(1))];
    for i=2:length(prubeh_va2x)
        nap = [nap ',' num2str(prubeh_va2x(i))];
        pro = [pro ',' num2str(prubeh_va2y(i))];
    end
    zapis = [zapis nap ra pro ra];
    
    zapis = [zapis 'Hodnoty propustne zotavovaci doby' ra];
    per = ['t (us) ' num2str(prubeh_propx(1))];
    nap = ['U (V)  ' num2str(prubeh_propy(1))];
    for i=2:length(prubeh_propx)
        per = [per ',' num2str(prubeh_propx(i))];
        nap = [nap ',' num2str(prubeh_propy(i))];
    end
    zapis = [zapis per ra nap ra];
    
    zapis = [zapis 'Hodnoty zaverne zotavovaci doby' ra];
    if isempty(prubeh_zavx)
        % v pripade Zenerovych diod se tato velicina nemeri
        zapis = [zapis '-' ra];
    else
        per = ['t (us) ' num2str(prubeh_zavx(1))];
        pro = ['I (mA) ' num2str(prubeh_zavy(1))];
        for i=2:length(prubeh_zavx)
            per = [per ',' num2str(prubeh_zavx(i))];
            pro = [pro ',' num2str(prubeh_zavy(i))];
        end
        zapis = [zapis per ra pro ra];
    end
    
    fp = fopen([slozka soubor '.txt'], 'w');
    if fp == -1
        % nastala chyba
    else
        fwrite(fp, zapis);
        fclose(fp);
    end
end
    