Trace / LogDatei
Selbst wenn man es kaum glauben
mag, auch in der EDV kommen schon mal Fehler vor
;-)))
Und ein Mittel, solche Fehler zu finden bzw. zu lokalisieren ist
der Trace.
Unter Fachleuten spricht man dann
von Trace fahren, Trace aufsetzen oder auch Trace
ziehen.
Gemeint ist damit die Beobachtung und Protokollierung von Daten
an bestimmten Hardware- oder Softwarepunkten.
Meistens wird ein Trace auf eine Schnittstelle oder Hardware-Interface
gerichtet sein, da sich an solchen Punkten
Daten relativ leicht protokollieren lassen. Aber auch Bus-Systeme wie
Daten- oder Adress-Bus lassen sich via Trace überwachen.
Aber nicht nur bei der Suche nach
Fehlern kann uns ein Trace nützlich sein. Ich habe mehr als 90%
meines Programms
geschrieben ohne mit der Anlage gewesen
verbunden zu sein. Im Trace konnte ich immer genau sehen, welche
Daten an das Interface gesendet wurden.
Das hat auch den Vorteil, daß bei falscher Programmierung z.B.
eine Lok nicht unvermutet losrennt und nur noch durch einen
schnellen Griff nach der Nothalt-Taste zum Stehen zu bringen ist.
Eine Überwachung der o.e. Schnittstellen kann durch
erreicht werden.
Variante 1 kommt wohl nur für die
wenigsten in Frage, da sich die Preise solcher Meßgeräte im 4-
und 5-stelligen Euro-Bereich bewegen.
Variante 2 wird uns von Windows vermasselt: sobald ein Programm
die Com-Schnittstelle belegt hat, wird jeder Versuch
eines anderen Programms diese Schnittstelle zu benutzen,
abgewiesen.
Bleibt uns folglich nur die 3. Möglichkeit.
Wir brauchen in unserem Programm
einen Bereich, der sich um die Protokollierung der Daten kümmert.
Und da bietet sich wieder der Weg über eine Prozedur an.
(Allgemein) |
Public
Sub Trace(ByVal strText As String) Static Zeitpunkt As Variant ' --- Datum und Uhrzeit vorbereiten Zeitpunkt = Format(Date, "DD.MM.YY") & Space(2) & Format(Time, "hh:mm:ss") & Space(3) ' --- Daten in Logdatei schreiben Print #LogNr, Zeitpunkt & strText End Sub |
Zuvor müssen wir natürlich die Datei öffnen:
Form |
Private Sub Form_Load() RS232.PortOpen = True ' --- Logdatei vorbereiten Private
Sub Form_Unload(Cancel As Integer) ' ---
Logdatei wieder schließen |
Hierbei ist zu beachten:
der Befehl: Open
Logdatei For Output ... erzeugt eine neue Datei. Das heißt,
die alten Daten werden gelöscht.
Wer das nicht will, verwende den Befehl Open Logdatei For
Append ... .
Dann werden
alle weiteren Daten an die vorhandenen angehängt.
>Beispiel (Ausschnitt aus einem meiner Traces)
Uhrzeit Adr. Befehl |
12:42:17 050 000 STOP (Funktion aus) |
12:42:19 050 015 Fahrtrichtungswechsel (Funktion aus) |
12:42:19 050 003 Fahrstufe 3 (Funktion aus) |
12:42:25 050 000 STOP (Funktion aus) |
12:42:28 050 002 Fahrstufe 2 (Funktion aus) |
12:42:30 050 000 STOP (Funktion aus) |
12:42:54 010 033 Magnetartikel geschaltet |
12:42:54 006 033 Magnetartikel geschaltet |
12:42:54 007 034 Magnetartikel geschaltet |
12:42:55 013 033 Magnetartikel geschaltet |
12:42:55 014 034 Magnetartikel geschaltet |
12:42:55 032 021 Fahrstufe 5 (Funktion ein) |
12:43:22 060 020 Fahrstufe 4 (Funktion ein) |
12:44:22 060 016 STOP (Funktion ein) |