% Listing 6.1  Initialisierung des COM-Servers  Echtzeitinterpolator

function ezint_init()
   global comh, % Handle für die COM-Schnittstelle
   global ezint_fehler, ezint_bahnend;
   ezint_fehler=0; ezint_bahnend=0;
   comh=actxserver('EZINT.COMSERV');
   ipo=DEF_IPO; 
   h.invoke('SetzeIPO',ipo); % Übergabe des Interpolationstakets
   comh.registerevent ({'Schritt' 'ezint_reakt_schritt'; 
                         'BahnEnd' 'ezint_reakt_bahnend'; 
                         'Fehler' 'ezint_reakt_fehler'});
                     
                         
                         
% Listing 6.2  Ausführung einer Bewegung

function ezint_ausf(q_l)
    global comh, ezint_fehler, ezint_bahnend;
    grafikmod_init(q_l);
    comh.invoke('Reset');
    comh.invoke('LadeBahnsatz',q_l);
    comh.invoke('Start');
    if ezint_fehler~=0  % ?? 
		nr= comh.invoke('LeseAktSchritt');
        error('Fehler bei der Ausführung im Echtzeitinterpolator
               bei Schrittnummer %d: ',nr); 
    end
    
    
    
% Listing 6.3  Reaktionsfunktionen

function ezint_reakt_Schritt(varargin)
    schrittnr=varargin{1,3};
    bewegungsspur=1; % 1: Spur wird gezeichnet,
	grafikmod_schritt(schrittnr,bewegungsspur);

function ezint_reakt_BahnEnd(varargin)
    global ezint_bahnend;
    ezint_bahnend=varargin{1,3};

function ezint_reakt_Fehler(varargin)
    global ezint_fehler;
    ezint_fehler=varargin{1,3};
    
    
    
% Listing 6.4  Initialisierung des Grafikmodells

function grafikmod_init(q_l)
    global grafikmod_q_l, grafikmod_erster_schritt;
    grafikmod_q_l=q_l;
    grafikmod_erster_schritt=1; % true
    figure;
    hold on;
    view(48,20);
    
    
% Listing 6.5  Grafische Darstellung eines Bewegungsschritts

function grafikmod_schritt(nr, spur)
    global rob_para, grafikmod_q_l, grafikmod_erster_schritt;
    ks_linie=0.1;
    koor=koortraf(q_l(nr,:), rob_para);
    zeichne_kin_kette(koor, ks_linie);
    tcp=koor{8};
    akt_punkt=tcp(1:3,4);
    zeichne_ks(tcp,ks_linie);   % Effektor
    if  grafikmod_erster_schritt==1 %true
        l_punkt=akt_punkt;
        grafikmod_erster_schritt=0; %false
    end
    if spur==1 % Bewegungsspur wird gezeichnet
        zeichne_linie(akt_punkt, l_punkt);
    end
    grafikmod_l_punkt=akt_punkt;


% Listing 6.6  Initialisierung des Gesamtsoftware des Robotersimulators

function robo_ml_ini
    s = what('ROBOFUN'); addpath(s.path);
    s = what('ROBOMAT'); addpath(s.path);
    s = what('ROBOGRAF'); addpath(s.path);
    s = what('ROBODAT'); addpath(s.path);
    s = what('Anw'); addpath(s.path);
  ezint_init;
  
  
  
% Listing 6.7 Ausführung und grafische Darstellung der Roboterbewegung

function anz=robot_ausf(q_l);
    [anz sp]=size(q_l); % Anzahl Interpolationsschritte
    ezint_ausf(q_l);    % Aufruf Echtzeitinterpolator

    %robot_bahn_vis(q_l,1); % statische Anzeige der Roboterbe-
                            % bewegung ohne Echtzeitinterpolator









