⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skrypt.m

📁 good for who wants it
💻 M
字号:
function skrypt(handles)
%trgraph
%processes a Trace graph script file

global sfig ghandles fig gfig PLIKSKRYPT savejpeg legenda CHECK

if exist(PLIKSKRYPT)==0
    bledy(10);
    return;
end
shandles=guihandles(sfig);
set(shandles.zapisuj_info, 'Checked', 'on');
set(shandles.autozminf, 'Checked', 'off');
set(ghandles.zapisuj_wyk, 'Checked', 'on');
CHECK=[0,0,0,0,0,0,0,0];
try
    nrlinii=0;
    sid=fopen(PLIKSKRYPT);
    savejpeg=0; % saves graphs to jpeg
    closeprog=0; % closes program when finished
    legenda=0; % legend in the graphs
    wylaczopcje=0; % clear options after each graph
    separator=',';
    linia=7; 
    for i=1:linia
        l=fgets(sid);
        if isempty(findstr(l, 'SAVE MAT FILE: ON'))==0
            zapisz_plik(0,0,0,1);
        elseif isempty(findstr(l, 'SAVE GRAPHS TO JPEG: ON'))==0
            savejpeg=1;
        elseif isempty(findstr(l, 'SAVE GRAPHS STATISTICS: ON'))==0
            set(ghandles.zapisz_stat_wyk, 'Checked', 'on');
        elseif isempty(findstr(l, 'CLOSE PROGRAM WHEN FINISHED: ON'))==0
            closeprog=1;
        elseif isempty(findstr(l, 'GRAPHS LEGEND: ON'))==0
            legenda=1;
        elseif isempty(findstr(l, 'RESET OPTIONS: ON'))==0
            wylaczopcje=1;
        end
        nrlinii=nrlinii+1;
    end
    if isempty(findstr(l, 'GRAPHS'))==0
        l=fgets(sid);
        while l~=-1 & isempty(findstr(l, 'NETWORK INFORMATION'))
            nrlinii=nrlinii+1;
            if l(1)~='%' %if not a comment
                if strcmp(l(end-1),char(13))
                    l=l(1:(end-2));
                else
                    l=l(1:(end-1));
                end
                sep=findstr(l,separator);
                h=findobj('Label',l(1:(sep(1)-1)));
                if isempty(h)==0 % if options have been found
                    for i=1:(length(sep)-1)
                        [opcja, par]=wytnij_dane(l((sep(i)+1):(sep(i+1)-1)));
                    end          
                    [opcja, par]=wytnij_dane(l((sep(end)+1):end));
                end
            end
            l=fgets(sid);           
        end        
    end
    if isempty(findstr(l, 'NETWORK INFORMATION'))==0
        l=fgets(sid);
        while l~=-1
            nrlinii=nrlinii+1;
            if l(1)~='%' %if not a comment
                if strcmp(l(end-1),char(13))
                    l=l(1:(end-2));
                elseif strcmp(l(end),char(10))
                    l=l(1:(end-1));
                end
                sep=findstr(l,separator);
                h=findobj('Label',l(1:(sep(1)-1)));
                if isempty(h)==0 % if options have been found
                    for i=1:(length(sep)-1)
                        [opcja, par]=wytnij_dane(l((sep(i)+1):(sep(i+1)-1)));
                    end          
                    [opcja, par]=wytnij_dane(l((sep(end)+1):end));
                end
            end
            l=fgets(sid);           
        end
    end
    fclose(sid);
catch
    disp(lasterr);
    disp(['Error processing script file: line ', num2str(nrlinii),' !']);
    PLIKSKRYPT=[];
    fclose('all');
    return;
end

try
    nrlinii=0;
    sid=fopen(PLIKSKRYPT);
    savejpeg=0; % saves graphs to jpeg
    closeprog=0; % closes program when finished
    legenda=0; % legend in the graphs
    wylaczopcje=0; % clear options after each graph
    separator=',';
    linia=7; 
    for i=1:linia
        l=fgets(sid);
        if isempty(findstr(l, 'SAVE MAT FILE: ON'))==0
            zapisz_plik(0,0,0,1);
        elseif isempty(findstr(l, 'SAVE GRAPHS TO JPEG: ON'))==0
            savejpeg=1;
        elseif isempty(findstr(l, 'SAVE GRAPHS STATISTICS: ON'))==0
            set(ghandles.zapisz_stat_wyk, 'Checked', 'on');
        elseif isempty(findstr(l, 'CLOSE PROGRAM WHEN FINISHED: ON'))==0
            closeprog=1;
        elseif isempty(findstr(l, 'GRAPHS LEGEND: ON'))==0
            legenda=1;
        elseif isempty(findstr(l, 'RESET OPTIONS: ON'))==0
            wylaczopcje=1;
        end
        nrlinii=nrlinii+1;
    end
    if isempty(findstr(l, 'GRAPHS'))==0
        l=fgets(sid);
        while l~=-1 & isempty(findstr(l, 'NETWORK INFORMATION'))
            nrlinii=nrlinii+1;
            if l(1)~='%' %if not a comment
                if strcmp(l(end-1),char(13))
                    l=l(1:(end-2));
                else
                    l=l(1:(end-1));
                end
                sep=findstr(l,separator);
                h=findobj('Label',l(1:(sep(1)-1)));
                if isempty(h)==0 % if options have been found
                    for i=1:(length(sep)-1)
                        [opcja, par]=wytnij_dane(l((sep(i)+1):(sep(i+1)-1)));
                        opcje(handles, ghandles, opcja, par);
                    end          
                    [opcja, par]=wytnij_dane(l((sep(end)+1):end));
                    opcje(handles, ghandles, opcja, par);
                    funkcja=get(h,'Callback');
                    poz1=findstr(funkcja,'('); poz1=poz1(1);
                    poz2=findstr(funkcja,','); poz2=poz2(1);
                    funkcja=funkcja((poz1+2):(poz2-2));
                    figure(gfig);            
                    feval(funkcja,h,[],ghandles);            
                end
                if wylaczopcje==1
                    zeruj_opcje(handles, ghandles);
                end
            end
            l=fgets(sid);           
        end        
    end
    if isempty(findstr(l, 'NETWORK INFORMATION'))==0
        l=fgets(sid);
        while l~=-1
            nrlinii=nrlinii+1;
            if l(1)~='%' %if not a comment
                if strcmp(l(end-1),char(13))
                    l=l(1:(end-2));
                elseif strcmp(l(end),char(10))
                    l=l(1:(end-1));
                end
                sep=findstr(l,separator);
                h=findobj('Label',l(1:(sep(1)-1)));
                if isempty(h)==0 % if options have been found
                    for i=1:(length(sep)-1)
                        [opcja, par]=wytnij_dane(l((sep(i)+1):(sep(i+1)-1)));
                        opcje(handles, ghandles, opcja, par);
                    end          
                    [opcja, par]=wytnij_dane(l((sep(end)+1):end));
                    opcje(handles, ghandles, opcja, par);
                    funkcja=get(h,'Callback');
                    poz1=findstr(funkcja,'('); poz1=poz1(1);
                    poz2=findstr(funkcja,','); poz2=poz2(1);
                    funkcja=funkcja((poz1+2):(poz2-2));
                    figure(sfig);            
                    feval(funkcja,h,[],shandles);
                    feval(funkcja,h,[],shandles);   
                end
                if wylaczopcje==1
                    zeruj_opcje(handles, ghandles);
                end
            end
            l=fgets(sid);           
        end
    end
    fclose(sid);
    PLIKSKRYPT=[];
    savejpeg=0;
    if closeprog==1
        delete(sfig);
        delete(gfig);
        delete(fig);
    end
catch
    disp(lasterr);
    disp(['Error processing script file: line ', num2str(nrlinii),' !']);
    PLIKSKRYPT=[];
    fclose('all');
end

function opcje(handles, ghandles, opcja, par)
% sets menu options
global AKTWEZ STARTWEZ pole rozpak BANDI FLOWID TSTART TEND NUMDELINT HISTINTERVALS DC TRACEFORMAT TRACELEVEL PAKIETY
global CHECK 

switch opcja
    case 'CN:'
        AKTWEZ=str2num(par{1});
        set(handles.aktwez, 'String', par{1});
    case 'ON:'
        STARTWEZ=str2num(par{1});
        CHECK(2)=1;
        set(handles.startwez, 'String', par{1});
    case 'PT:'
        for i=1:length(par)
            pole=strrep(pole,['-',par{i}],['+',par{i}]);
        end        
        CHECK(1)=1;
        set(handles.listapak, 'String', pole);
    case 'PS:'
        for i=1:length(par)
            rozpak=strrep(rozpak,['-',par{i}],['+',par{i}]);
        end
        CHECK(7)=1;
        set(handles.psize, 'String', rozpak);
    case 'TM'
        CHECK(8)=1;
        set(handles.turbo, 'Checked','on');
    case 'TIL:'
        BANDI=str2num(par{1});
        set(handles.bandinterval, 'String', par{1});
    case 'FID:'
        if TRACEFORMAT==1
            FLOWID=str2num(par{1});
            set(handles.flowidoption,'Checked','on');
            set(handles.flowid, 'String', par{1});
        end        
    case 'STL:'
        if TRACEFORMAT==2
            if length(TRACELEVEL)==3               
                if strcmp(par{1},'AGT')
                    set(handles.stracelevel, 'Value',1);
                elseif strcmp(par{1},'RTR')
                    set(handles.stracelevel, 'Value',2);
                elseif strcmp(par{1},'MAC')
                    set(handles.stracelevel, 'Value',3);
                end
            elseif length(TRACELEVEL)==2
                if (strcmp(TRACELEVEL{1},'AGT') & strcmp(par{1},'AGT')) | (strcmp(TRACELEVEL{1},'RTR') & strcmp(par{1},'RTR'))
                    set(handles.stracelevel, 'Value',1);
                elseif (strcmp(TRACELEVEL{2},'RTR') & strcmp(par{1},'RTR')) | (strcmp(TRACELEVEL{2},'MAC') & strcmp(par{1},'MAC'))
                    set(handles.stracelevel, 'Value',2);
                end    
            elseif length(TRACELEVEL)==1
                set(handles.stracelevel, 'Value',1);
            end    
        end
    case 'DTL:'
        if TRACEFORMAT==2
            if length(TRACELEVEL)==3               
                if strcmp(par{1},'AGT')
                    set(handles.dtracelevel, 'Value',1);
                elseif strcmp(par{1},'RTR')
                    set(handles.dtracelevel, 'Value',2);
                elseif strcmp(par{1},'MAC')
                    set(handles.dtracelevel, 'Value',3);
                end
            elseif length(TRACELEVEL)==2
                if (strcmp(TRACELEVEL{1},'AGT') & strcmp(par{1},'AGT')) | (strcmp(TRACELEVEL{1},'RTR') & strcmp(par{1},'RTR'))
                    set(handles.dtracelevel, 'Value',1);
                elseif (strcmp(TRACELEVEL{2},'RTR') & strcmp(par{1},'RTR')) | (strcmp(TRACELEVEL{2},'MAC') & strcmp(par{1},'MAC'))
                    set(handles.dtracelevel, 'Value',2);
                end    
            elseif length(TRACELEVEL)==1
                set(handles.dtracelevel, 'Value',1);
            end                
        end
    case 'ST:'
        TSTART=str2num(par{1});
        set(handles.timeint,'Checked','on');
        set(handles.starttime, 'String', par{1});
    case 'ET:'
        TEND=str2num(par{1});
        set(handles.timeint,'Checked','on');
        set(handles.endtime, 'String', par{1});
    case 'DC'
        CHECK(2)=1;
        DC=1;
        set(handles.directcon,'Checked','on');
    case 'IDx1'
        CHECK(6)=1;
        set(handles.liczpakietraz,'Checked', 'on');
    case 'HISTINT:'
        NUMDELINT=str2num(par{1});
        set(ghandles.usehistint,'Checked', 'off');
        set(handles.numdelint, 'String', par{1});
    case 'HISTEDGES:'
        for i=1:length(par)
            HISTINTERVALS(i)=str2num(par{i});
        end
        set(ghandles.usehistint,'Checked', 'on');
        set(handles.histintervals, 'String', num2str(HISTINTERVALS));
    case 'MARKPOINTS'
        set(ghandles.markgraph,'Checked', 'on');
    case 'MINORGRID'
        set(ghandles.addminorgrid,'Checked', 'on');
    case 'MAJORGRID'
        set(ghandles.addmajorgrid,'Checked', 'on');       
    case 'LSX'
        set(ghandles.logscalex,'Checked', 'on');
    case 'LSY'
        set(ghandles.logscaley,'Checked', 'on');
    case 'LSZ'
        set(ghandles.logscalez,'Checked', 'on');
    case 'SPAK:'
        spak=par{1};
        for p=1:length(PAKIETY)
            pak=char(PAKIETY{p}); 
            i=1; tak=1;
            while i<=length(pak) & pak(i)~=32
                if spak(i)==pak(i)
                    tak=tak+1;
                end    
                i=i+1;
            end
            if tak==i
                break;
            end    
        end    
        set(handles.sentpkt,'Value',p);
    case 'ACK:'
        ack=par{1};
        for p=1:length(PAKIETY)
            pak=char(PAKIETY{p}); 
            i=1; tak=1;
            while i<=length(pak) & pak(i)~=32
                if ack(i)==pak(i)
                    tak=tak+1;
                end    
                i=i+1;
            end
            if tak==i
                break;
            end    
        end    
        set(handles.ackpkt,'Value',p);    
end

function zeruj_opcje(handles, ghandles)
% unchecks all options
global pole rozpak DC
global CHECK 

CHECK=[0,0,0,0,0,0,0,0];
DC=0;
pole=strrep(pole,'+','-');
rozpak=strrep(rozpak,'+','-');
set(handles.listapak, 'String', pole);
set(handles.psize, 'String', rozpak);
set(handles.flowidoption,'Checked','off');
set(handles.timeint,'Checked','off');
set(handles.directcon,'Checked','off');
set(handles.liczpakietraz,'Checked', 'off');
set(handles.turbo,'Checked','off');
set(ghandles.usehistint,'Checked', 'off');
set(ghandles.markgraph,'Checked', 'off');
set(ghandles.addminorgrid,'Checked', 'off');
set(ghandles.addmajorgrid,'Checked', 'off');       

function [opcja, par]=wytnij_dane(linia)
% cuts data from a line

sp=findstr(linia, ' ');
if isempty(sp)
    opcja=linia;
    par=[];
else
    opcja=linia(1:(sp(1)-1));
    par=cell(1,length(sp));
    for i=1:(length(sp)-1)
        par{i}=linia((sp(i)+1):(sp(i+1)-1));
    end
    par{end}=linia((sp(end)+1):end);
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -