:Revision=29
:HTML
<<
128.190
LANMutex-Objekt|LANMutex
$NoSort
--
Das Objekt LanMutex dient zur gemeinsamen Zugriffskontrolle mehrerer TestManager auf eine
gemeinsame Ressource (Hardware).
Die Synchronisation kann ber Dateien(=Filemode) oder einen Socket-Server(=Servermode) realisiert werden.

Die Einstellungen der Objekt-Parameter erfolgt in der Grundeinstellung.
>>


<<
128.190.1
Allgemeine Funktionen des LANMutex-Objekts|Allgemeine Funktionen
--
Verwaltung des LANMutex Objektes
>>


<<
128.190.1.1
LANMutex.IsActive|IsActive
--
<!DEF>
function <!TW>LANMutex.IsActive : real;
<!TXT>
Liefert den Aktivierungsstatus des gesamten Objektes LANMutex zurck.
Die Aktivierung wird in der Grundeinstellung vorgenommen.

Parameter/Result:

Result
Werte in <!PW>Result knnen sein:
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>0<!>nicht aktiv<!>
<!c>1<!>aktiv<!>
<!ETBL>

Beispiele:
<!CODE>
var 
  rActive : real;

rActive := LanMutex.IsActive;
<!TXT>
>>


<<
128.190.1.2
LANMutex.Error|Error
--
<!DEF>
function <!TW>LANMutex.Error: real;
<!TXT>
Liefert den aktuellen Errorcode des Objektes

Result
Werte in <!PW>Result knnen sein:
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>>0<!>Objekt im Fehlermodus<!>
<!c>0<!>Objekt aktiviert und bereit<!>
<!c>-1<!>Objekt nicht aktiv<!>
<!c>-2<!>Objekt nicht in Setup enabled<!>
<!ETBL>

>>




<<
128.190.2
Mutex und Sequenzen|Mutex
--
Verwaltung der Mutex und Sequenzen
>>



<<
128.190.2.1
LANMutex.GetStatus|GetStatus
!128.190.2.2
!128.190.2.3
--
<!DEF>
function <!TW>LANMutex.GetStatus: real; ...
<!TXT>

Liefert den Status der bergebenen Mutex <!PW>sMutex.
Im Falle einer besetzten Mutex (Status=0), darf diese Mutex nicht verwendet werden.


Parameter/Result:

Result
Werte in <!PW>Result knnen sein:
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>1<!>Belegt von diesem TestManager<!>
<!c>0<!>Besetzt von anderem TestManager<!>
<!c>-1<!>Frei<!>
<!ETBL>


Parameter:
<!PW>sMutex
  Mutexname als String. 

  Hinweis fr LanMutex im Filemode: Unter diesem Namen wird eine Datei angelegt.
  Der Pfad wird in der Grundeinstellung eingetragen.

Beispiele:
<!CODE>
rLM := LanMutex.GetStatus('A');  
<!TXT>
>>

<<
128.190.2.2
LANMutex.Locking|Locking
!128.190.2.1
!128.190.2.3
--
<!DEF>
function <!TW>LANMutex.Locking(sMutex : string; rMode : real): real;
<!TXT>
Die Locking Funktion belegt eine gemeinsame Ressource <!PW>sMutex auf dem 
gemeinsamen Netzwerkordner(Filemode) oder SocketServer(ServerMode). 

Nach dem Reservieren bleibt diese Mutex fr die anderen TestManager gesperrt.

Es ist auch mglich eine virtuelle Mutex anzulegen, diese Mutex kann bei
Ressourcen mit mehrfachen Zugriff verwendet werden. Hier ist kein Konflikt mglich, da
diese Mutex von jedem TestManager belegt werden kann.

Hinweis: Nach Beendung der Hardwarezugriffen muss wieder ein Unlock durchgefhrt werden.



Parameter/Result:

Result
Werte in <!PW>Result knnen sein:
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>1<!>Belegt von diesem TestManager<!>
<!c>0<!>Besetzt von anderem TestManager<!>
<!c>-1<!>Frei<!>
<!ETBL>


Parameter:
<!PW>Parameter sMutex
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>1<!>Virtuelle Mutex, Ressource wird immer zugeteilt<!>
<!c>0<!>Ressource mit Hardware locking<!>
<!ETBL>


<!PW>sMutex
  Eindeutiger Mutexname als String.


Beispiele:
<!CODE>
rLM := LanMutex.UnLocking('A');  // unlock

rLM := LanMutex.Locking('A',0);  // lock, mit realer Hardware
<!TXT>

>>


<<
128.190.2.3
LANMutex.UnLocking|UnLocking
!128.190.2.1
!128.190.2.2
--
<!DEF>
function <!TW>LANMutex.UnLocking(sMutex : string): real;
<!TXT>

Die UnLocking Funktion gibt die gemeinsame Ressource <!PW>sMutex auf dem 
gemeinsamen Netzwerkordner(Filemode) oder SocketServer(ServerMode) wieder frei. 

Nach der Freigabe ist diese Mutex wieder fr andere TestManager verfgbar.

Hinweis: Vor der Freigabe muss ein Lock durchgefhrt werden.




Parameter/Result:

Result
Werte in <!PW>Result knnen sein:
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>0<!>Mutex wurde freigegeben<!>
<!ETBL>


Parameter
<!PW>sMutex
  Eindeutiger Mutexname als String.


Beispiele:
<!CODE>
rLM := LanMutex.UnLocking('A');  // unlock

<!TXT>
>>





<<
128.190.2.4
LANMutex.GetSequence|GetSequence
!128.190.2.5
--
<!DEF>
function <!TW>LANMutex.GetSequence(sSequence: string): real;
<!TXT>

Die Sequence <!PW>sSequence beschreibt einen Block von Prfschritten in denen
Mutexe im Einsatz sind.
Vor dem ersten Mutexzugriff muss die Sequenz mit dem Befehle GetSequence erzeugt werden.
Der Status wird dabei auf (0=laufend) gesetzt.
Nach dem letzten Mutexzugriff im Prfablauf muss die Sequence auf den Status Fertig(=1) gesetzt werden.
Der Sequenzname wird als Aliasname fr sptere Funktionen verwendet.

Hinweis: Der erste Aufruf von GetSequenz erzeugt automatisch die Sequenz mit dem Namen sSequenz.

Der Status der einzelnen Sequenz oder auch aller laufenden Sequenenzen kann ber den
Befehl GetSequence ermittelt werden.
Wenn alle Sequenzen fertig sind, kann der Prfablauf fortgesetzt werden.

Die Verwaltung von LanMutex kann nun ermitteln, ob alle Sequenzen im Prfablauf
abgearbeitet wurden.


Parameter/Result:

Result (EinzelSequenz -> SequenceName)
Werte in <!PW>Result knnen sein:
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>0<!>Die Sequenz ist noch nicht fertig<!>
<!c>1<!>Sequenz ist fertig<!>
<!ETBL>




Result (Alle Sequenzen -> sSequence = '' (Leerstring))
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>0<!>Die Sequenzen sind noch nicht alle fertig<!>
<!c>1<!>Alle Sequenzen sind fertig.<!>
<!ETBL>



Parameter:
<!PW>Parameter sSequence
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>name<!>Sequenzname fr den der Status ermittelt werden soll<!>
<!c>''<!>(Gesamtbefehl) Status fr alle Sequenzen des Prfablaufes wird ermittelt.<!>
<!ETBL>


Beispiele:
<!CODE>
var rR : real;

// Erzeugen Sequenz 'A' und Abfrage des Status der Sequenz
rR := LanMutex.GetSequence('A');  


// Status der vorhanden Sequenz 'A' abfragen 
rR := LanMutex.GetSequence('A');  

// Abfrage des Gesamtstatus aller erzeugten Sequenzen
rR := LanMutex.GetSequence('');  

<!TXT>
>>


<<
128.190.2.5
LANMutex.SetSequence|SetSequence
!128.190.2.4
--
<!DEF>
function <!TW>LANMutex.SetSequence(sSequence: real, rStatus:real): real;
<!TXT>

Die Sequence <!PW>sSequence beschreibt einen Block von Prfschritten in denen
Mutexe im Einsatz sind.
Zur Kennzeichnung des Blockes wird die Sequenz mit dem Namen sSequence 
erzeugt. Der status wird gleichzeit auf Running(=0) gesetzt.
Vor dem ersten Mutexzugriff muss die Sequence erzeugt werden.
Nach dem letzten Mutexzugriff im Prfablauf muss die Sequence auf den Status 
Fertig(=1) gesetzt werden.

Hinweis: Die Verwaltung von LanMutex kann nun ermitteln, ob alle Sequenzen im Prfablauf
abgearbeitet wurden.


Parameter/Result:

Result
Werte in <!PW>Result knnen sein:
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>0<!>Sequenz wurde gesetzt<!>
<!c>-1<!>Fehler bei Zugriff auf Sequenz<!>
<!ETBL>



Werte in <!PW>rStatus knnen sein:
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>0<!>Sequenz ist aktiv<!>
<!c>1<!>Sequenz ist fertig<!>
<!ETBL>

Beispiele:
<!CODE>
// Status der Sequenz 'A' wird auf Betrieb gesetzt 
rR := LanMutex.SetSequence('A',0);  

// Status der Sequenz 'A' wird auf fertig gesetzt 
rR := LanMutex.SetSequence('A',1);   
<!TXT>
>>





<<
128.190.3
ServerVariablen|Servervariablen
--
Verwaltung von globalen Variablen auf dem gemeinsamen SocketServer.


>>


<<
128.190.3.1
LANMutex.CreateVar|CreateVar
!128.190.3.2
!128.190.3.3
!128.190.3.4
--
<!DEF>
function <!TW>LANMutex.CreateVar(sName : string; value): real;
<!TXT>

Erzeugen einer globalen Variablen (String,Real) <!PW>sName auf dem SocketServer.

Im Falle einer besetzten Variable (Result=0), kann diese Variable nicht erstellt werden.
Wurde die Variable vom eigenen TestManager erzeugt, so kann Sie durch den Create-Befehl
nochmals mit neuem Wert berschrieben werden.
Die Variable ist fr alle verbundenen TestManager sichtbar und kann gelesen werden.


Hinweis: Die Servervariablen knnen im Servermodus (MutexMaster=ServerMutex) verwendet werden.

Parameter/Result:

Result
Werte in <!PW>Result knnen sein:
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>1<!>Belegt von eigenem TestManager<!>
<!c>0<!>Besetzt von anderem TestManager, kein Erstellen mglich<!>
<!ETBL>


Parameter:
<!PW>sName
<!TXT>
  Variablenxname als String. 
  Unter diesem Namen wird eine Variable auf dem SocketServer angelegt. 
  Der Variablenname darf keine Sonderzeichen (#13#10) oder Semikolon (;) enthalten.

<!PW>value
  Variable oder Wert vom Typ real oder String. 
  Die maximale Stringlnge ist auf 255 Zeichen begrenzt.


Beispiele:
<!CODE>
var 
 rR : real;
 sV : string;
 rV : real;

// Erzeugen der Variablen 'alpha' mit dem Wert 1239.87
rR := LanMutex.CreateVar('alpha','1239.87');  

// Erzeugen der Variablen 'beta' mit dem Wert 19.999
rV := 19.999;
rR := LanMutex.CreateVar('beta',rV);  

// Erzeugen der Variablen 'gamma' mit dem Wert 'Hallo'
sV := 'Hallo';
rR := LanMutex.CreateVar('gamma',sV);  
<!TXT>
>>


<<
128.190.3.2
LANMutex.ReadVar|ReadVar
!128.190.3.1
!128.190.3.3
!128.190.3.4
--
<!DEF>
function <!TW>LANMutex.ReadVar(sName : string; var value): real;
<!TXT>

Auslesen des Wertes einer globalen Variablen (String,Real) <!PW>sName auf dem SocketServer.
Die Variable ist fr alle verbundenen TestManager sichtbar und kann gelesen werden.


Hinweis: Die Servervariablen knnen im Servermodus (MutexMaster=ServerMutex) verwendet werden.


Parameter/Result:

Result
Werte in <!PW>Result knnen sein:
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>1<!>Variable ist vorhanden<!>
<!c>-1<!>Variable ist nicht Vorhanden.<!>
<!ETBL>

Parameter:
<!PW>sName
<!TXT>
  Variablenxname als String. 
  Unter diesem Namen wird eine Variable auf dem SocketServer angelegt. 
  Der Variablenname darf keine Sonderzeichen (#13#10) oder Semikolon (;) enthalten.

<!PW>value
<!TXT>
  Variable zur Aufnahme des Wertes (real oder String). 
  Es wird versucht die Variable in den gewnschten Datentyp zu konvertieren. 
  Sollte die Konvertierung schiefgehen, so wird der Wert auf -999999999 gesetzt, 
  zustzlich wird das Funktionsergebnis (= -1) gesetzt. 


Beispiele:
<!CODE>
var 
 rR : real;
 sV : string;
 rV : real; 

//Auslesen der Variablen 'alpha' als String
rR := LanMutex.ReasdVar('alpha',sV);  

//Auslesen der Variablen 'alpha' als Real Variable
rR := LanMutex.ReadVar('beta',rV);  
<!TXT>
>>



<<
128.190.3.3
LANMutex.CheckVar|CheckVar
!128.190.3.1
!128.190.3.2
!128.190.3.4

--
<!DEF>
function <!TW>LANMutex.CheckVar(sName : string): real;
<!TXT>

Auslesen des Status einer globalen Variablen <!PW>sName auf dem SocketServer.
Es wird keine Variable angelegt, sondern nur den Status geprft.

Hinweis: Die Servervariablen knnen im Servermodus (MutexMaster=ServerMutex) verwendet werden.


Parameter/Result:

Result
Werte in <!PW>Result knnen sein:
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>1<!>Variable ist belegt von eigenem TestManager<!>
<!c>0<!>Variable ist besetzt von anderem TestManager<!>
<!c>-1<!>Variable ist nicht vorhanden.<!>
<!ETBL>


Parameter:
<!PW>sName
<!TXT>
  Variablenxname als String. 
  Unter diesem Namen wird eine Variable auf dem SocketServer angelegt. 
  Der Variablenname darf keine Sonderzeichen (#13#10) oder Semikolon (;) enthalten.


Beispiele:
<!CODE>
var 
 rR : real;

rR:= LanMutex.CheckVar('alpha');  

vR:= LanMutex.CheckVar('beta');  
<!TXT>
>>



<<
128.190.3.4
LANMutex.DelVar|DelVar
!128.190.3.1
!128.190.3.2
!128.190.3.3
--
<!DEF>
function <!TW>LANMutex.DelVar(sName : string; nMode : real): real;
<!TXT>

Lschen einer oder mehrerer globalen Variablen <!PW>sName auf dem SocketServer.

Der Variablenname <!PW>sName gibt die Variable an, die gelscht werden soll.
Wird der Variablenname als Leerstring '' angegeben, so werden alle eigenen Variablen gelscht.
Normalerweise sollten nur die eigenen Variablen gelscht werden. ber den Parameter
nMode kann auch das Lschen fremder Variablen zugelassen werden.


Hinweis: Die Servervariablen knnen im Servermodus (MutexMaster=ServerMutex) verwendet werden.

Parameter/Result

Result
Werte in <!PW>Result knnen sein:
<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>1<!>Eigene Variablen wurde gelscht<!>
<!c>0<!>Alle gewnschten Variablen wurden gelscht<!>
<!c>-1<!>keine Variablen zum Lschen vorhanden<!>
<!ETBL>



Parameter:
<!PW>sName
<!TXT>
  Variablenxname als String. 
  Die Variable mit dem Namen sName wird auf dem SocketServer gelscht. 
  Der Variablenname darf keine Sonderzeichen (#13#10) oder Semikolon (;) enthalten.


<!PW>nMode <!> Modus der Lschung

<!STBL>
<!+>Wert<!+>Beschreibung<!>
<!c>1<!>nur eigene Variablen werden gelscht<!>
<!c>0<!>Alle gewnschten Variablen (eigene, fremde) werden gelscht<!>
<!ETBL>


Beispiele:
<!CODE>
var 
 rR : string;

// eigene Variablen 'alpha' auf Server lschen
rR := LanMutex.DelVar('alpha',1);  

// fremd erzeugte Variable 'beta' lschen
rR := LanMutex.DelVar('beta',0);  

// alle eigenen Variablen auf SocketServer lschen
rR := LanMutex.DelVar('',1);  

// alle vorhanden Variablen auf SocketServer lschen
rR := LanMutex.DelVar('',0);  

<!TXT>
>>



