---------------------------------------------------------------------------------
Datenlogger fr Digitalmultimeter DIGITEK DT-9062
Version 1.1
(C) Klaus Rittmeier 2020, alle Rechte vorbehalten.

Das Programm dt9062logger.exe darf nur rein privat genutzt werden
und nur zusammen mit dieser Hilfedatei dt9062loggerhelp.txt und der Datei
beispiel.bat weitergegeben werden.
Jegliche kommerzielle Nutzung, sei es Verbreitung oder Benutzung, ist untersagt.
---------------------------------------------------------------------------------

Neu ab Version 1.1: Mehrere gleichzeitig angeschlossene Multimeter knnen
simultan abgefragt und protokolliert werden.

Jedes Multimeter wird ber einen COM-Port (serielle Schnittstelle) mit dem PC verbunden.
Auch ist der Anschluss ber Seriell-USB-Adapter mglich.

Voraussetzungen:
----------------
		- 32-bit oder 64-bit Windows (XP, 7, 8, 8.1, 10),
		- serielle Schnittstelle(n), auch ber USB-Seriell-Adapter

Aufruf:
-------
		dt9062logger.exe [-?][-l"..."][-h"..."][-i...][-c][-f...][-s][COMx]

Parameter:
----------
COMx		x=Nummer des COM-Ports
		Es knnen mehrere COM-Ports angegeben werden (z.B. COM8 COM10 ).
		Existiert ein genannter COM-Port nicht, wird das Programm beendet.
		Anderenfalls wird getestet, ob am genannten Port ein Multimeter DT-9062 Daten sendet.
		Wird der COMx-Parameter nicht angegeben, sucht das Programm automatisch nach vorhandenen
		COM-Ports und testet, an welchem Port Multimeter DT-9062 Daten senden.
		Wird kein datensendendes Multimeter gefunden, so wird das Programm beendet.
		

Optionen:
---------
		Die Reihenfolge der Optionen spielt keine Rolle.

-?		Zeigt Hilfe (diese Datei) an

-l"..."		line; Zeilenformat fr die Ausgabe der Messwerte.
		Gnsefchen sind zwingend, wenn Leerzeichen in der Zeichenkette vorkommen.
		... kann eine beliebige Zeichenkette sein, die auch Steuerzeichen (s.u.) und Tags (Platzhalter) enthalten kann.
		
		Tags beginnen mit einem #. Zulssige Tags sind:

		#d
		#d(Format)	date - Datum bei Start der Messung
				Optional kann in Klammern eines der folgenden Formate angegeben werden:
				d.m.yy		Tag und Monat ggf. einstellig, Jahr zweistellig, z.B. 12.4.20
				d.m.yyyy	wie vor, jedoch Jahr vierstellig, z.B. 3.4.2020. Dies ist das default-Format ohne Formatangabe.
				dd.mm.yyyy	Langformat, z.B. 03.04.2020. 
				yyyy/mm/dd	angloamerikanisch, z.B. 2020/04/03
				yy/mm/dd	wie vor, Jahr zweistellig
				yymmdd		wie vor, jedoch ohne Trennzeichen
				yyyymmdd	wie vor, jedoch Jahr 4-stellig	

		#t
		#t(Format) 	time - Uhrzeit der Messung
				Optional kann in Klammern eines der folgenden Formate angegeben werden:
				hh:mm:ss	Stunden:Minuten:Sekunden (dies ist auch das default-Format ohne Formatangebe)
				hhmmss		wie vor, jedoch ohne Trennzeichen (ntzlich bei Dateinamen)
				hh:mm		Stunden:Minuten
				hhmm		wie vor, jedoch ohne Trennzeichen

		#e
		#e(Format)	elapsed time - Abgelaufene Zeit sei Start der Messung beginnend bei 00:00:00.
				Die Stunden knnen ber 23 hinausgehen (maximal bis 8760 = 1 Jahr).
				Die optionale Formatangabe kann wie beim Tag #t erfolgen.

		#n
		#n(Format)	number - Laufende Nummer der Messung, beginnt bei 1.
				Die optionale Formatangabe in Klammern besteht lediglich aus einer Zahl.
				Diese definiert die Ausgabebreite. Es wird rechtsbndig ausgegeben und gegebenenfalls
				mit Leerzeichen	aufgefllt.

		#p		COM-Port

		#v
		#v(Format)	value - Anzeigewert des Multimeters.
				Optional kann in Klammern eine Formatangabe erfolgen.
				Die Formatangabe kann folgendermaen aussehen:
				Zahl		Ausgabebreite. Rechtsbndige Ausgabe, wird ggf. mit Leerzeichen aufgefllt.
				.Zahl		Festkommaformat, Zahl=Nachkommastellen
				Zahl1.Zahl2	Festkommaformat, Zahl1=Ausgabebreite, Zahl2=Nachkommastellen
				Standard-Dezimaltrennner ist der Dezimalpunkt. Soll stattdessen das Dezimalkomma ausgegeben werden,
				kann es in der Formatangabe anstatt des Punktes verwendet werden. Wird ausschlielich das Komma
				(ohne Ziffern) angegeben, so erfolgt die Standardausgabe mit Dezimalkomma.
				Werte werden gegebenenfalls gerundet. Diese Rundung betrifft nur die Ausgabe.
				Auf die Option -c hat das keinen Einfluss.
				Beispiele:  Der Anzeigewert des Multimeters von 22.56 wrde folgendermaen ausgegeben:
				#v   	: 22.56
				#v(,)   : 22,56
				#v(.0)  : 23
				#v(.1)  : 22.6
				#v(,1)  : 22,6
				#v(6.1) :   22.6 
				#v(5,2) : 22.56
				#v(5.3) : 22.560

		#u		unit = Maeinheit (V, mV, A, mA, Ohm, C, ...)

		#c		current = AC oder DC
	
		#i		info = Infozeile des Multimeters, z.B. Auto, RS-232, ...

		Steuerzeichen beginnen mit einem \. Zulssige Steuerzeichen sind:

		\n		newline - Zeilenwechsel. Ist ntzlich fr Header (s.u.), die sich ber mehrere Zeilen erstrecken sollen.

		\t		tabulator - die nchste durch 8 teilbare Cursorposition.

		Werden Teile des Zeilenformates in geschweifte Klammern gesetzt, z.B. {#v #u }, so werden die entsprechenden Werte
		fr jedes angeschlossene Multimeter ausgegeben. Ohne Klammern wird jede Gre nur fr ein (!) Multimeter,
		und zwar das, das am COM-Port mit der niedrigsten Nummer angeschlossen ist, ausgegeben.
		Ist nur ein Multimeter angeschlossen, so sind die Klammern ohne Bedeutung.

		Alle sonstigen Zeichen werden 1:1 in die Ausgabe bernommen.

		Beispiel fr ein Zeilenformat ohne geschweifte Klammern:
			-l"#d(d.m.yy), #t Uhr:  #v #u #c #i"
		wrde beispielsweise Zeilen folgender Art ausgeben:
			   3.4.20, 15:43:55 Uhr:  290.5 mV AC Auto RS-232

		Beispiel fr ein Zeilenformat mit Klammern { }: Zwei Multimeter sind angeschlossen, eins misst die
		Spannung, das zweite den Strom. Das Format:
			-l"#t(h:mm:ss)    {#v(.0) #u  }#c"
		wrde Zeilen folgender Art ausgeben:
			    9:03:34    234 V  1,420 A  AC

		Ohne die Option -l, wird folgendes Standard-Zeilenformat verwendet:
			"#n\t#e\t{#v(5)\t\t}"
		Damit sieht eine Messzeile z.B. so aus:
			1	00:00:00	 25.6		 21.1		

-h"..."		header; Format der Kopfzeile bzw. der Kopfzeilen. Das ist insbesondere ntzlich fr die Log-Datei.
		Gnsefchen sind zwingend, wenn Leerzeichen vorkommen.
		... kann eine beliebige Zeichenkette enthalten, auch Tags und Steuerzeichen.

		Ohne Option -h wird ein Standard-Header nach folgendem Format generiert:
			"Start am #d um #t Uhr\nNr.\tZeit\t\t{#p [#u]\t}"
		Damit wrde z.B. bei zwei angeschlossenen Multimetern der folgende, zweizeilige (!) Header angezeigt:
			Start am 23.03.2020 um 10:30:45 Uhr
			Nr.	Zeit		COM4 [C]	COM5 [C]	

		Das Standard-Zeilenformat (s.o.) passt dazu und gibt die abgelaufene Zeit und die Messwerte (ohne Einheit) aus.
			"#n\t#e\t{#v(5)\t\t}"

		Die gesamte Ausgabe (mit Standard-Headerformat und Standard-Zeilenformat) wrde z.B. so aussehen:
			Start am 28.03.2020 um 11:40:00 Uhr
			Nr.	Zeit		COM4 [C]	COM5 [C]	
			1	00:00:00	 25.6		 21.1		
			2	00:00:02	 25.6		 21.0		
			3	00:00:04	 25.6		 21.1		
			...

		Soll ausdrcklich kein Header generiert werden, so ist die Option -h- anzugeben.

-i...		interval; Zeitintervall zwischen den Messungen in Sekunden
		Beispiel:
			-i60		Messung jede Minute
		Bei -i0 wird die maximal mgliche Messrate (ca. 2,5 Messungen je Sekunde) benutzt.
		Wird die Option -i... nicht angegeben, so betrgt das Messintervall 1s.

-c		changed values only; nur wenn sich ein Wert ndert, wird er ausgegeben.
		In Kombination mit Option -i... ist der zeitliche Abstand zwischen den
		Messungen grer oder gleich dem Messintervall.
		Sind mehrere Multimeter angeschlossen, so reicht es, wenn sich der Wert eines
		Multimeters ndert.

-f...		file; Dateiname fr das Datenfile (Log-Datei).
		... kann auch mit Tags (s.o.) enthalten.
		Komplette Pfadangaben sind ebenso mglich.
		Dateinamen, die Leerzeichen enthalten, mssen in Gnsefchen gesetzt werden.
		Wird als Dateiname ein * angegeben, so wird der Name entsprechend folgendem
		Format gebildet:
			dt9062_#d(yyyymmdd)_#t(hhmmss).txt
		Beispiele:
			-ftemperaturen.txt
			-f"D:\users\#d(yyyymmdd) temperaturen.txt"
			-f*

		In die Log-Datei wird zunchst der Header (s.o.) geschrieben,
		dann die einzelnen Messwerte entsprechend dem Zeilenformat (s.o.).
		Parallel dazu werden die Zeilen auch auf dem Bildschirm ausgegeben.
		Achtung: Existiert die Log-Datei bereits, wird sie ohne Warnung berschrieben!
		Ohne die Option -f wird keine Log-Datei erzeugt, die Zeilen werden nur
		auf dem Bildshirm ausgegeben.

-s		single line; Die Bildschirmausgabe (!) erfolgt einzeilig. Es wird mit jedem neuen
		Messwert die gleiche Zeile beschrieben. Ein Hochscrollen des Textes erfolgt nicht.
		Fr die Log-Datei ist das ohne Bedeutung. Deren Zeilen stehen immer untereinander.

Eine vollstndige Kommandozeile knnte beispielsweise wie folgt aussehen:
		dt9062logger.exe -h"Verlauf der Netzspannung am #d" -l"#t(hh:mm) {#v(5.1) #u  }" -i300 -f*
Dann wird eine Log-Datei z.B. mit folgendem Namen erzeugt:
		dt9062_20200312_102523.txt
Der Inhalt der Datei knnte dann etwa so aussehen:
		Verlauf der Netzspannung am 12.3.2020
		10:25  235.1 V
		10:30  236.2 V
		10:35  234.7 V
		...

So eine Kommandozeile wird sinnvollerweise in eine Batch-Datei (siehe beispiel.bat) geschrieben und durch
Doppelklick im Explorer oder Aufruf in der Konsole gestartet.

Die "Minimal-Kommandozeile" fr Logging in eine Datei (ein Wert je Sekunde) lautet:
		dt9062logger.exe -f*


