Hallo,
ich nutze die <Time.h> und die im Beispiel beschriebene
void processSyncMessage()
Leider funktioniert das bei mir nicht die zeit über den Com Port zu syncroniesieren.
Beim senden von T1410050314 also 14:10 05.03.14 stellt sich die Zeit auf irgendwas um..
char pctime[10]; = 1410050314
Nun versuche ich selbst die Funktion setTime() aufzurufen um die werte zu übergeben, und es passiert der gleiche blödsinn, weil pctime[0] eben nicht 1 sondern 49 in der Ascii tabelle ist.
setTime(pctime[0] + pctime[1] ,00,pctime[4] + pctime[5],pctime[6] + pctime[7], pctime[8] + pctime[9]);
..und nun verbringe ich 2 Tage damit pctime[0] + pctime[1] aber eben nicht den Ascii wert 049 & 052 sondern Ihren wert 1 + 4..
itoa habe ich nun auch ausprobiert, aber dabei bekomme ich ja wieder ein char[] zurück, und das habe ich ja schon...
Wie bekomme ich aus dem Ascii wert 049 eine "1" hin?
Wie verfahre ich denn mit Buchstaben? Nicht das ich dies nun bräuchte, aber mal rein aus Interesse? Gibt es eine denn Funktion die mir aus einem Char = 065 ein "A" ausgibt?
Alle sagen ja Strings sind schlecht für den Speicher, daher würde ich ja schon gerne grundsätzlich mit Char Arrays arbeiten wollen.
Wenn es nur um eine Ausgabe geht muss man nichts wandeln. Das ist ein char. Ein C-String ist ein char* (Zeiger auf char). Der Compiler kann das also unterscheiden und eine andere Version von println() aufrufen.
Ansonsten um daraus einen Null-terminierten String zu machen:
char c = 'A';
char str[] = { c, '\0' };
Aber wie gesagt, nicht unbedingt nötig
Und Arduino String Objekte sind nicht nur wegen der dynamischen Speicher Allozierung problematisch. Sie sind einfach zu kaum was zu gebrauchen und zu nichts kompatibel. Das einzige schöne ist dass man Strings einfach konkatenieren kann. Aber das war es dann auch schon. Mit C Strings und den Funktionen in der avr libc lässt sich sehr viel mehr machen wenn es Formatierung oder Konvertierung geht: http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html http://www.nongnu.org/avr-libc/user-manual/group__avr__string.html
Eine einfache und schöne Lösung für das Konkatenieren von Serial Ausgaben ist das hier: http://arduiniana.org/libraries/streaming/
Das gaukelt einem einen C++ Output Stream vor in dem es den << Operator überlad und inline mit print() ersetzt. Eigentlich sollte das in der Arduino IDE standardmäßig drin sein.
In der SdFat Lib gibt es auch richtige Output und Input Streams