04-08-2011 05:55 AM
Hallo,
ich habe einen Kanal der mit Datum und Uhrzeit in folgender Form gefüllt ist:
z.B.: 11.03.2011 14:10:11.0000
Datentyp ist Float64.
Jetzt möchte ich an einer bestimmten Stelle den Wert auslesen und versuchsweiße erstmal mit msgbox ausgeben. Wenn ich den Befehl ChD verwende kommt irgendein langer Zahlenwert raus. Dass wundert mich auch nicht, da laut Hilfe der Befehl für Numerische Kanäle da ist. Doch mit welchem Befehl kann ich ihn auslesen?
Die nächste Frage: wie kann ich die Uhrzeit "wegschneiden"? Dass also nurnoch das Datum im Kanal steht.
Danke im Vorraus
04-08-2011 06:05 AM
Hallo Doma,
mit einer halbwegs aktuellen Version gibt es zwei Möglichkeiten VBS formatiert (msgbox und Kanalobjekt) oder man formatiert die Ausgabe für den DIAdem-Befehl selbst (msgboxdisp und Kanalobjekt)
Dim oChn
set oChn = Data.GetChannel("Datum")
msgbox oChn(2)
msgboxdisp str(oChn(2), "#dd.mm.yyyyy hh:nn:ss")
Gruß
Walter
04-08-2011 07:17 AM
Hi Doma,
I believe Walter meant oChn.Values(2) instead of oChn(2)
Brad Turpin
DIAdem Product Support Engineer
National Instruments
04-08-2011 07:31 AM
Yes, you can use oChn.Values(2), but in case of a channel object it is not necessary to use Values. This is the Default and was implemented to improve the speed of accessing a single channel value.
Greetings
Walter
04-08-2011 09:31 AM
Hey Walter,
Are you saying it's easier to type the shorter code oChn(2) than the more explicit oChn.Values(2), or are you saying that the shorter code actually runs faster than the more explicit code? Has this syntax been available since DIAdem 11.0 when the Data object first appeared?
Brad Turpin
DIAdem Product Support Engineer
National Instruments
04-08-2011 09:53 AM
Hey Brad,
Yes this works since the first DIAdem version with Data-API. Not using the default "Values" is faster than using it. But if you have just a few values like 10000 or 20000 you don't see any difference. I guess you are pointing also to a more readable script code, especially if you have to modify it later on. In that case I would say if the channels don't contain hugh numbers of values you can use oChn.values(x). And if you would like to speed it up just use oChn(x).
Greetings
Walter
04-11-2011 02:49 AM
Hey,
thank you, it works !
to my 2nd question, the channel values are in the form "11.03.2011 14:10:11.0000", its "dd.mm.yyyy hh:mm:ss 0000" and i just want to have the first part, "dd.mm.yyyy", how can i cut the rest out of the channel?
thx
04-11-2011 03:01 AM
Hallo Doma,
ein Datums- Zeitkanal enthält in DIAdem immer auch ein Uhrzeit. (Gezählt werden die Sekunden ab dem Jahre Null.) Für die Anzeige kannst du den Zeitanteil weg lassen.
Dim oChn
set oChn = Data.GetChannel("Datum")
msgbox oChn(2)
msgboxdisp str(oChn(2), "#dd.mm.yyyyy")
Diese Formatierung ("#dd.mm.yyyyy") kannst du auch an allen anderen Stellen, an denen diese Daten angezeigt werden sollen verwenden z.B. in einer VIEW-Kanaltabelle oder einer REPORT Tabelle etc.
Gruß
Walter