Forum: Mikrocontroller und Digitale Elektronik Bascom "Date" im Format dd.mm.yyyy in SD Karte ausgeben?


von Rudi M. (rudimentaer)


Lesenswert?

Hallo Bascom Spezialisten,

ich versuche für einen Logger das Datum nicht wie bei Bascom üblich im 
Format DD-MM-YY sondern mit 4 stelliger Jahreszahl auszugeben. Die 
Ausgabe soll in eine SD Karte geschrieben werden.

Bei den Einstellungen für Config Date habe ich nichts passendes 
gefunden.


Hier mein Code:
1
' Deutsches Datumsformat einstellen
2
Config Date = Dmy , Separator = .
3
4
Print Date$ 
5
T_day = Str(_day)
6
T_month = Str(_month)
7
T_year = Str(_year)
8
9
Print Format(t_day , "00") ; "." ; Format(t_month , "00") ; ".20" ; Format(t_year , "00")

Beim Ausgeben mit print auf die serielle Schnittstelle funktioniert das 
auch.

Beim schreiben in eine SD Karte jedoch nicht.
1
Print #100 , Format(t_day , "00") ; "." ; Format(t_month , "00") ; ".20" ; Format(t_year , "00")

(Autput ist ..20, ich vermute deshalb das das komplette "Format" nicht 
für die SD Karten implementiert ist.

Gibt es vielleicht eine einfachere Methode, die ich bisher übersehen 
habe?
Jemand einen Tipp?

Ich vermute man müsste über einen String gehen, fange aber gerade erst 
mit Bascom an, und versuche nur einen bestehenden Code in diese Richtung 
abzuändern. (mit C wäre es ein sprintf ...)

Danke und Grüße,
Rudi

von Helmut L. (helmi1)


Lesenswert?

Filesysteme auf FAT Basis speichern das Datum und Uhrzeit in Sekunden ab 
dem 1.1.1980. Das muss man dann selber umrechnen in ASCII Darstellung.

von Rudi M. (rudimentaer)


Lesenswert?

Helmut Lenzen schrieb:

Helmut Lenzen schrieb:
> Das muss man dann selber umrechnen in ASCII Darstellung.

Das ist ja was ich versuche, wie bekomme ich diese Zeile:

Print Format(t_day,"00");".";Format(t_month, 
"00");".20";Format(t_year,"00")

statt auf die V24 in einen String?

von Helmut L. (helmi1)


Lesenswert?

geht das nicht mit str$() ?

Sorry ich mache nur 'C'

von ... (Gast)


Lesenswert?

Helmut Lenzen schrieb:
> Filesysteme auf FAT Basis speichern das Datum und Uhrzeit in Sekunden ab
> dem 1.1.1980. Das muss man dann selber umrechnen in ASCII Darstellung.

Was hat der Datumseintrag in der FAT mit der Ausgabe eines Datum-Strings 
in eine Datei zu tun?

von Rudi M. (rudimentaer)


Lesenswert?

Helmut Lenzen schrieb:
> geht das nicht mit str$() ?
>
> Sorry ich mache nur 'C'

Ich brauche jemanden der Bascom macht.

Die einfachen Sachen hab ich auch schon nachgeschaut:
var = STR( x)
Remarks
var
 A string variable.
X
 A numeric variable.

von Jo (Gast)


Lesenswert?

... schrieb:
>> Filesysteme auf FAT Basis speichern das Datum und Uhrzeit in Sekunden ab
>> dem 1.1.1980. Das muss man dann selber umrechnen in ASCII Darstellung.
>
> Was hat der Datumseintrag in der FAT mit der Ausgabe eines Datum-Strings
> in eine Datei zu tun?

Na ja, nix. Aber 4800 Beiträge in 4 Jahren, das sind 100 pro Monat, da 
kann nicht immer ein Treffer dabei sein.

von ... (Gast)


Lesenswert?

Jo schrieb:
> Na ja, nix. Aber 4800 Beiträge in 4 Jahren, das sind 100 pro Monat, da
> kann nicht immer ein Treffer dabei sein.

Dieter Nuhr hat das schon richtig erkannt ;-)

von Karl (Gast)


Lesenswert?

Es gibt einen Unterschied zwischen der Ausgabe über Print und der 
Ausgabe eines Strings in Deine Datei. Mach mal folgendes:
1
Datumstring = Format(t_day , "00") + "." + Format(t_month , "00") + ".20" + Format(t_year , "00")  
2
3
Print #100 , Datumstring

von Rudi M. (rudimentaer)


Lesenswert?

Karl schrieb:
> Mach mal folgendes:

Karl, Du bist mein Held heute ;-)

Bis auf das + hatte ich das schon probiert, manchmal fehlt es dann aber 
doch an den Kleinigkeiten.

Dankeschön!
Rudi

P.S. wenn es eine geschicktere Variante gibt als das einzeln 
zusammensetzen wäre ja auch nicht schlecht...

von Karl (Gast)


Lesenswert?

Rudi M. schrieb:
> P.S. wenn es eine geschicktere Variante gibt als das einzeln
> zusammensetzen wäre ja auch nicht schlecht...

Soweit ich weiß, ist nur "yy" vorgesehen. Alles andere muss man sich 
sowieso zusammenflicken.

von Jo (Gast)


Lesenswert?

... schrieb:

> Dieter Nuhr hat das schon richtig erkannt ;-)

Gegen Reflexe kommt man halt manchmal nicht an... 8-/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.