CCS Modul   E_SERCOM
 
 ----------------------------------------------------------         
 Funktionsbeschreibung:                                             

                                                               
    Dieses Modul stellt eine Anwender-Schnittstelle zu einer beliebigen (ueber ein Configfile konfigurierbar) seriellen      
    Schnittstelle (TTY-Schnittstelle) her. 

    Das E_SERCOM arbeitet mit dem prozess sercom (Nickname SE) zusammen.
    Der prozess sercom muss deshalb in der prog_start_xx.cnf eingetragen sein.
  
    Aufruf des prozess sercom:
    ==========================
   
    Der prozess sercom wird unmittelbar vom E_SERCOM via message-queue with wait aufgerufen.
    D.h. bei jedem E_SERCOM Aufruf wird der prozess sercom aktiv und führt die Aufgaben
    sofort aus und quittiert das Ergebnis zurück zum E_SERCOM.
    
    Ein E_OUT Aufruf in der Prüfliste ist nicht supportet, d.h. der Prozess sercom
    darf nicht in der hw_e_out_xx.cnf eingetragen sein!
    
                         
    Basis fuer die Arbeit mit diesem Modul sind 2 Konfigurations-Dateien:                                                        
       a) hw_vxi_geraete....cnf                                     
       b) sercom.cnf                                                
                                                                    
    zu a)  hw_vxi_geraete....cnf 
                                                         
       Beschreibung der (durch Semikolon getrennten) Eintraege in diesem File:  
       1. Unitname 
			 der logische Name, der vom Anwender in der Pruefliste eingetragen werden muss,
			 um auf das Device zugreifen zu koennen:
               z.B. SER_IFACE_01                    
       2. Sekundaer-Adresse                         
             wird nur fuer HPIB-Devices oder Multifunktions-Karten benoetigt,ist normalerweise -1;             
             im konkreten Fall wird damit eine der von der Muxer-Karte bereitgestellten Schnittstellen bezeichnet; 
       3. VXI/HPIB-Adresse   
             dies ist die Primaer-Adresse unter der das Device am Bus angesprochen werden kann;  
             (bei Devices mit Kernel-Treiber ist dies -1) 
       4. Geraetename         
             dies ist der vom Hersteller vergebene Device-Name:
               z.B. M45                          
       5. Herstellername    
       6. Slot im VXI Rack       
             bei VXI-Geraeten sollte hier die Nummer des SLOTs, in dem das Device steckt eingetragen werden; 
             (bei HPIB-Devices steht hier stets -1)   
                                                      
    zu b)  sercom.cnf
    
       Konfiguration der Schnittstellen-Parameter:  
       ~_MODE = ...                                             
          einer der Modi SYSV (System V), RAW, CBREAK, COOKED 
       ~_DEVICENAME = ...    
          Vorgabe des TTY-Devicenamens, z.B. /dev/m45tty3  
       ~_BAUDRATE = ...  
          Festlegung der Baudrate, z.B. 9600 
       ~_PARITY = ...                          
          Paritaetsbit festlegen, z.B. NONE 
       ~_STOPBITS = ...          
          Anzahl der Stopbits konfigurieren, z.B. 1 
       ~_DATENBITS = ...        
          Anzahl der Datenbits pro Byte festlegen, z.B. 8  
       ~_XONXOFF = ...    
          Schnittstellen-Protokoll festlegen, z.B. ON  
       ~_OUTPUTMAP = ...   
          Mapping beim Datenversenden bestimmen: 
            NONE - kein Mapping,   
            CRNL - CR in NL umwandeln, 
            NLCR - NL in CR umwandeln,  
            NLCRNL - NL in CRNL umwandeln;  
       ~_INPUTMAP = ...    
          Mapping beim Datenempfang: 
            NONE - kein Mapping, 
            NLCR - NL in CR umwandeln,   
            CRNL - CR in NL umwandeln,  
            IGNCR - CR ignorieren  
       ~_CHARTIMEOUT = ... 
          Timeout beim Lesen eines Zeichens in Millisekunden;   
          Daten werden Byte-weise eingelesen, nach jedem Byte wartet der Lesevorgang die vorgegebene Wartezeit;  
       ~_SEND_TIMEOUT = ...            
          Timeout beim Senden von Zeichen in Sekunden;  
          gibt vor, in welcher Zeit eine Anzahl an Zeichen laengstens ueber die Schnittstelle transferiert werden sollen;
       ~_TERMTYPE = ... 
          Festlegung des Endekriteriums fuer empfangende Daten: 
            TERMLENGTH - Kriterium ist die Laenge, 
            TERMSEQUENZ - Kriterium ist eine Zeichenkette; 
       ~_TERMLENGTH = ...   
       ~_TERMSEQUENZ = ... 
       ~_EXCL = ... 
          Festlegung, dass die Schnittstelle exclusiv von dem jeweiligen Prozess genutzt wird; 
		 (fuer Details siehe Dokumentation "UnivDevice.frm" im Verzeichnis "ent1:/daten/ux_hprt_global/libclass/...") 
                                                                   
       Konfiguration spezieller Device-Features:                
       ~_ONERROR_COMMAND = ...                              
          Kommando, dass an ein Device im Fehlerfall uebertragen werden soll;   
                                                        
       Konfiguration des Pfades fuer einen Dateizugriff:   
       ~_FILEPATH = ...                                       
          hiermit kann der Suchpfad auf dem Leitrechner vorgegeben werden - Ausgangspunkt ist dabei stets
          der Basispfad /daten_lrp3/pruef_ccs (fuer SaW);  
          Beispielpfad:                   
              /dect/ptc/   
                                                                 
                                               
    Beschreibung der Modulparameter:
1 PRUEFSCHRITT
  
         GAUDI Pruefschritt                                
    ------------------------------
2 POSITION
          
         PAV- Position                    
    ------------------------------
3 INTERFACE
  
         z.B. SER_IFACE_04 
         symbolischer Name eines seriellen Interfaces; dieser Name wird im Configfile 'hw_vxi_geraete....cnf' definiert; 
    ------------------------------
4 ERRORTEXT
 
         Text, der immer dann im Fehlerausdruck / in der Fehlerstatistik erscheint, wenn Daten nicht gesendet
         oder nicht empfangen werden konnten;  
    ------------------------------
5 FUNCTION
         CLEAR
            loescht den Ein- und Ausgabebuffer der seriellen Schnittstelle;  
                                                         
         INIT                              
            Initialisierungsschritt der ausschliesslich im ersten Listenlauf (FIRSTRUN) nach einem Ruestlauf ausgefuehrt wird;          
            es findet sowohl Daten- als auch File-Transfer statt (sofern die entsprechenden Felder besetzt sind);  
                                           
         DOWNLOAD    
            allgemeiner Transfer von Daten und/oder Filedaten.  
            Dieser Schritt wird im ersten Listenlauf (FIRSTRUN) und auch in allen nachfolgenden   
            Listenlaeufen (NORMALRUN) ausgefuehrt;  
                                
         SEND                                
            ausschliesslicher Transfer von Daten - 
            siehe Gaudi-Parameter 'SENDDATA_1/ bis SENDDATA_4'; 
                                                                 
            Wichtig: Gaudi-Parameter FILENAME wird hier nicht  supportet d.h. ein Filetransfer findet  nicht statt! 
            
		 SENDFORCE
			Daten werden auch bei Fehlermax-Abbruch gesendet !!! 
			Achtung: Funktion nur in der Multi-Prüfliste möglich wegen vectorinterpreter Design.
			
			ausschliesslicher Transfer von Daten - 
            siehe Gaudi-Parameter 'SENDDATA_1/ bis SENDDATA_4'; 
                                                                 
            Wichtig: Gaudi-Parameter FILENAME wird hier nicht  supportet d.h. ein Filetransfer findet  nicht statt! 
                                                       
         RCV      
            Transfer von Daten - wie bei SEND - und im Anschluss Lesen einer Antwort (mit vom Anwender bestimmbarem 
            Timeout);                     
            die Anzahl zu lesender Datenbytes kann mit DATANUMBER vorgegeben werden;   
                                                              
            Wichtig: Gaudi-Parameter FILENAME wird hier nicht supportet d.h. ein Filetransfer findet nicht statt!  
            
		 RCVFORCE
			Daten werden auch bei Fehlermax-Abbruch gesendet !!! 
			Achtung: Funktion nur in der Multi-Prüfliste möglich wegen vectorinterpreter Design.
			
			Transfer von Daten - wie bei SENDFORCE - und im Anschluss Lesen einer Antwort (mit vom Anwender bestimmbarem 
            Timeout);                     
            die Anzahl zu lesender Datenbytes kann mit DATANUMBER vorgegeben werden;   
                                                              
            Wichtig: Gaudi-Parameter FILENAME wird hier nicht supportet d.h. ein Filetransfer findet nicht statt!   
		                      
              
		BREAKSTRING
            Initialisierungsschritt der Sendedaten für den Prüflistenabbruch, der ausschliesslich im Ruestlauf ausgefuehrt wird; 
            siehe Gaudi-Parameter 'SENDDATA_1/ bis SENDDATA_4';         
            Es findet kein Daten- als auch File-Transfer statt; Der Prozess sercom merkt sich diese Sendedaten für das Abbruchhändling;  
            Im Abbruchfall wird dieser String standardmäßig zum Device gesendet. Es wird keine Antwort vom Device zurückgelesen. 
		          
	                                                
    ------------------------------
6 CONTROL
 
         Steuerparameter fuer Protokoll-Informationen 
                                                    
         Supportet sind folgende Eintraege: 
                                                               
         CONTROL = ICP3000   In-Circuit Programmer fuer Steuergeraet ES-HDEV  (Elektr. Hochdruck-Einspritzventil) 
                                                                
         CONTROL = JNAT      Schnittstelle für SDL-Class2 -SG's Content of Configfile for JNAT: 
                  V743_1_MODE            = RAW	      
                  V743_1_BAUDRATE        = 19200    
                  V743_1_TERMTYPE        = TERMSEQUENZ  
                  V743_1_TERMSEQUENZ     = \x0d> 
                                                  
         CONTROL = BINARY    ASCII-Zeichenkette (in HEX-Notation) in binär wandeln und versenden  
         
         CONTROL = CETA800   Kommunikation mit dem Lecktester CETA800.
                             Es wird das Protokoll der CETA800 verwendet. Das zu übertragende
                             Anweisungszeichen und Datenblock eines CETA800-Telegramms ist als
                             Hex-String im Parameter SENDDATA_x einzutragen.
                                                                                                             
    ------------------------------
7 DATANUMBER
								 
       7.1 FUNCTION = INIT/DOWNLOAD 
           Anzahl der aus einem File auszulesenden und  via serielle Schnittstelle zu uebertragenden Bytes; 
           es ist hier in jedem Fall ein sinnvoller Wert > 0  anzugeben;   
                                                  
       7.2 FUNCTION = RCV          
           Anzahl der zu lesenden Bytes;
                                                        
       Default ist '-' (Minus, entspricht der Null), dh. es  werden soviele Zeichen gelesen, wie verfuegbar sind 
       bzw. soviele Zeichen bis zur vorgegebenen Endekennung (s.o., Parameter 'TERMSEQUENZ' im Configfile);  
                                                             
    ------------------------------
8 DEV_TIMEOUT
                       
         beim Daten-Transfer vom und zum Device kann eine Timeout-Bedingung vorliegen;  
                                                                  
         8.1 beim Senden:                                   
            das angesprochene Device meldet XOFF, jedoch ein XON wird nicht mehr gesendet;  
            damit der weitere Pruefablauf nicht unterbrochen wird, kann durch die Angabe eines Timeouts
            (in Millisekunden) die maximale Transferunterbrechung  angegeben werden; 
                                
         8.2 beim Empfang: 
            das angesprochene Device liefert keine Daten oder meldet XOFF, ohne anschliessend ein XON zu senden; 
            der Anwender kann spezifizieren, wie lange ein Transfer maximal dauern darf; 
                                                         
         Wichtig:                                             
         Die Transfer-Dauer ist abhaengig von der zu transferierenden Datenmenge, der Transfer-Rate und der 
         Antwortzeit des angeschlossenen Device! 
                                                 
    ------------------------------
9 SENDDATA_1
            
         ASCII-Zeichenkette, die versendet werden soll (maximal 80 Zeichen). 
         Es kann auch eine &-Variabel uebergeben werden; 
                                                           
    ------------------------------
10 SENDDATA_2
      
         dito                            
         Die Felder werden zunaechst konkateniert, bevor sie 
         via serielle Schnittstelle an ein Device versendet werden.   
                                                          
    ------------------------------
11 SENDDATA_3
                        
         dito                                   
         Dieses und die vorangegangenen Felder werden zunaechst 
         konkateniert, bevor sie via serielle Schnittstelle an ein Device versendet werden.  
                                                         
    ------------------------------
12 SENDDATA_4
           
         dito                             
         Dieses und die vorangegangenen Felder werden zunaechst
         konkateniert, bevor sie via serielle Schnittstelle an ein Device versendet werden.
                                                                 
         Wichtig:   
         Die Uebertragung von "Sonderzeichen" kann durch  Steuerbefehle in den Zeichenketten (\X0A oder \X0D,
         entspr. Linefeed bzw. CarriageReturn) erzwungen werden. 
                                                       
         Findet sich ein solches Zeichen am Ende einer Zeichenkette, werden alle bis dahin eingegebenen 
         Zeichen (konkatenierten Zeichenketten) komplett uebertragen. Sollte danach noch eine weitere Zeichen- 
         kette folgen, wird diese erst im Anschluss daran uebertragen. 
                                 
    ------------------------------
13 FILENAME
   
         Der Anwender gibt hier den Namen einer Datei an, dessen Inhalt vollstaendig an ein Device uebertragen werden soll. 
         Der Dateiname muss in Grossbuchstaben angegeben werden.
         Die Datei findet sich auf dem entsprechenden Leitrechner (in SaW auf dem lrp3) im Verzeichnis
            /daten_lrp3/pruef_ccs/Suchpfad...
         Der 'Suchpfad' wird dabei im  Configfile, "sercom.cnf", spezifiziert. 
                                                                
         Wichtig:                                       
         Es werden ausschliesslich druckbare Zeichen uebertragen, 
         also Zeichen zwischen Hexadezimal 0x20 (=Leerzeichen) und hexadezimal 0x7E(='~')! 
                                                                
    ------------------------------
14 RECEIVED_DATA
         &-Variable, die die Antwort des Device enthaelt (maximal 80 Zeichen); 
                                                   
    ------------------------------
15 PARAMETER1
        
         Parameter, mit dem angegeben wird, welcher Teil der  empfangenen Daten auszugeben ist;
                                                         
    ------------------------------
16 PARAMETER2
                        
         Parameter, mit dem angegeben wird, welcher Teil der empfangenen Daten auszugeben ist; 
                                                        
         Beispiel:                         
          - PARAMETER1 und PARAMETER2 sind beide '-' (Minus), welches die Default-Einstellung ist: 
            die empfangenen Daten werden unveraendert an die &-Variable weitergegeben; 
          - Auswahl eines Bereichs innerhalb der empfangenen Daten durch Ziffern: 
            Empfangen wurde z.B. "Hallo World"    
               PARAMETER1: 3   
               PARAMETER2: 9  
               RCVD_DATA enthaelt dann "llo Wor" 
                                                  
    ------------------------------
17 ERRORFLAG
 
         Dies Flag wird nur dann auf den Wert 1 gesetzt, sollte bei FUNCTION = 'INIT', 'DOWNLOAD', 'SEND', 'RCV' ein 
         Schreib- bzw. Lesefehler  erkannt worden sein. 
         Konnte ein File nicht geoeffnet werden, erfolgt ebenfalls eine Fehlermeldung hierueber.
                                                                
         Im Fehlerfall wird die im Configfile, "serialcom.cnf", definierte Sequenz an das Device uebertragen.
		 Es werden dann beim naechsten Listenlauf saemtliche Schritte mit "INIT" erneut ausgefuehrt! 

    ------------------------------
18 WAIT
 
         Mit diesem Parameter kann eine Zeit in ms angegeben werden, die in jedem Fall nach Senden der Daten
         bzw. nach senden des Breakstrings bei einem Programmabbruch gewartet wird
    
    ------------------------------