Statusfiles für Email-Meldungen
Für externe Auswertungsprogramme der Terminal- und Beta-Zustände können von Comm optional Statusfiles geschrieben werden. Filenamen und Verzeichnisse
Terminalstatus: $BS_DIR/daba.d/trmstat.dat
Betastatus….: $BS_DIR/daba.d/betastat.dat
Pfade und Filenamen sind fest vorgegeben. Die Files haben Inifile-Charakter und können mit der Funktion OpenIniFile gelesen werden.
Filehandling
Am Beispiel der trmstat.dat vom Prozess tmgr, die Datei betastat.dat vom Prozess iomgr zeigt das gleiche Verhalten.
• Löschen der alten Datei trmstat.old, sofern sie existiert
• Umbenennen der aktuellen trmstat.dat nach trmstat.old
• Aufbau der neuen Statusdatei als trmstat.new
• Umbenennen trmstat.new nach trmstat.dat
Tritt in obiger Abfolge ein Filefehler auf (z.B. trmstat.dat kann nicht nach trmstat.old umbenannt werden), bricht die Verarbeitung mit einer Fehlermeldung im Protokollfile (DebugLevel=0) ab und versucht im nächsten Zyklus die Datei zu schreiben.
trmstat.dat
Das Statusfile wird vom tmgr ab Build 4.32 (06.11.2003) geschrieben Beispiel:
[global]
date=20050530174127
[terminal_1]
Term=0001/01/01
Beta=2
BetaID=3
Remote=0
State=0
[terminal_2]
Term=0002/02/02
Beta=1
BetaID=1
Remote=0
State=12
global Die Sektion enthält nur eine Variable date die den letzten Schreibvorgang im SAP-Format festhält.
terminal_x
Sektionen der angeschlossenen Terminals. Die Nummer entspricht der laufenden Nummer aus terminal.ini.
Term
Enthält die laufende Terminalnumme, Group-ID und Device-ID (0001/01/01).
Beta
Interne (tmgr) Nummer des Beta-Knotens, an dem das Terminal hängt. Numerierung ohne Lücken.
BetaID
Nummer der Beta-Sektion aus terminal.ini, [BETAx]. Nummerierung kann Lücken haben!
Zugrunde liegt diese Einstellung:
[BETA1]
BetaIPAdr=192.168.0.206
Terminals=2,2-2
…
[BETA3]
BetaIPAdr=192.168.0.205
Terminals=1,0-2
…
Remote
Flag aus terminal.ini, ob das Terminal Remote gesetzt ist.
State
Status des Terminals. Der Wert ist dezimal, stellt aber ein Bitfeld dar:
54 3210
11 1111
'|| ||++– Memory-Status (00=empty, 01=not empty, 11=full, 10=undefined!)'
'|| ++—- Online-Status (00=online, 01=offline, 11=autonom, 10=undefined!)'
'|+——- Batterie schwach bei 1 (=16)'
'+——– Speicherfehler bei 1 (=32)'
Standardzustände: 0=online, 12=autonom (z.B. nach Softwarestop)
Aktivierung des Statusfiles und Besonderheiten
Das Statusfile trmstat.dat wird mit folgender Einstellung in terminal.ini aktiviert:
[tmgr]
…
TrmCheckCycle=80s
Es sind die Suffixe 's' (Sekunden), 'm' (Minuten) und 'h' (Stunden) erlaubt.
Eckwerte:
0 oder Variable nicht definiert Funktion abgeschaltet
1 Minimum
86400s=1440m=24h Maximum
Im tmgr wird der Wert in Sekunden in der Variablen g_TrmCheckCycle gehalten.
Als Timervariable dient g_StateTimer, als Zeitvergleich die Funktion timesUp, die auch Systemzeitverstellungen rückwärts berücksichtigt.
Der Terminalstatus in trmstat.dat kann natürlich nur bei online erreichbaren Terminals korrekt geschrieben werden. Tmgr versendet zu diesem Zweck an alle Terminals, die nicht remote eingetragen sind, T4-Sätze und schreibt bei Eintreffen der Statussätze vom Terminal das termstat.dat-File.
Ein Erkennen von gestörten Terminals ist so nicht möglich!
betastat.dat
Das Statusfile wird vom Betatreiber des Prozesses iomgr ab Build 4.32 (06.11.2003) geschrieben.
Beispiel:
[global]
date=20050602155010
[beta_1]
ID=3
IP=192.168.0.205
State=3
LastAct=1234567890 20090214003130
Terminals=1,0-2,0,1,0,
[beta_2]
ID=1
IP=192.168.0.206
State=0
LastAct=1234567891 20090214003131
Terminals=2,2-2,0,
global
Die Sektion enthält nur eine Variable date die den letzten Schreibvorgang im SAP-Format festhält.
beta_x
Sektionen der Beta-Knoten. Die Nummer entspricht dem Index im Prozess iomgr und hat keine Lücken.
ID
ID entspricht der Numerierung der Beta-Sektionen in terminal.ini. Die ID kann Lücken enthalten.
IP
IP-Adresse des BETA-Knotens.
State
Zustand des Beta-Knotens im Treiber.
0 jammed/disconnected
1 Configrequest erhalten
2 Beta hat auf Configrecord geantwortet
3 Connected
4 Datensatz an Beta verschickt
Diese Zustände existieren nur kurzfristig. Die Wahrscheinlichkeit, daß sie im Statusfile auftauchen, ist sehr gering!
LastAct (ab Buildlevel 4.43.20)
Zeitpunkt des letzten Datenblocks vom Beta.
Der erste Wert stellt technisch die Systemzeit als Ganzzahl dar (C-Funktion „time()“).
Der zweite Wert ist diese Systemzeit in Textdarstellung im technischen Format YYYYMMDDhhmmss
Terminals
Dieser Eintrag führt alle fürs Beta definierten und die aktiv verbundenen Terminals auf.
Beispiele:
2,2-2,0,
'| ||| +– Status des Terminals, 0=not connected, sonst=connected'
'| +++—- DIDvon - DIDbis'
'+——– GID'
1,0-2,0,1,0,
'| ||| +-+-+– Status der Terminals, hier DID=0 und 2 sind nicht connected'
'| +++——– DIDvon - DIDbis'
'+———— GID'
Anmerkungen: die connectierten Terminals werden durch den Index der Sektion beta_x (=Index in der Beta-Liste im Prozess iomgr (=globales Array BCTabl in beta155.c)) gekennzeichnet. Gestörte oder sonst nicht vorhandene Terminals haben den Status '0'.
Aktivierung des Statusfiles und Besonderheiten
Das Statusfile wird fest, alle 20s geschrieben. Dies läßt sich nicht ändern oder abschalten.