Forum: Mikrocontroller und Digitale Elektronik Array konfigurieren und benutzen


von Mike (Gast)


Lesenswert?

Hallo,

ich brauche etwas Hilfe zur Syntax in C.

Ich will auf dem UART die Temperatur vom Pool ausgeben.
Ich schreibe, wie ich mir das vorstelle, das der Compiler das nicht 
akzeptiert. Ich denke es wird jeder sofort wissen, was ich brauche.

volatile unsigned char H2O_wert = 98;
volatile unsigned char Wasser[6] = {"H2O=", H2O_wert};

Wie schreibe ich das richtig?

Dem UART wird dann das Array Wasser (oder Wasser[0] mit & in der Routine 
übergeben.

Einfache Frage.
Natürlich bei google schon geguckt, aber die Beispiele sind eher nicht 
passend.

Danke

von Henrik P. (henrik84)


Lesenswert?

Hi,

Strings werden in C mit '0' terminiert, das heißt dein Beispielstring 
ist:
"H2O=", das Zeichen nach der 0 (Dein Messwert) gehört dann nicht mehr 
zum String.

Du kannst Strings auch nicht mit einem '=' kopieren.

Ich würde mal schauen, welche von den Stringfunktionen Du in deiner 
Bibliothek hast. Irgendetwas wie Strcpy oder so, bin da selbst momentan 
nicht so fit drin.

Einziger Hack der mir gerade einfallen würde, wäre, das ganze 
Zeichenweise zu setzen, also:

Wasser[0] = 'H';
...
Wasser[4]=messwert;
Wasser[5]=0;

: Bearbeitet durch User
von Schnuller (Gast)


Lesenswert?

Henrik P. schrieb:
> Wasser[4]=messwert;

HALLO !!! STRING!!!
Der Messwert wird als ASCII interpretiert werden!

... die einfache Art, lies die Besc hreibung zu "sprintf".

von Mike (Gast)


Lesenswert?

Ich probiere es noch mal, wenn ich darf :)

Aktuell ist das beispielsweise so:

>  char Wasser[16]={"Wasser:"};
>  char Wasser_wert[16]={"11°C"};

>  Senden(&Wasser, &Arial_10x16, 0xF800);
>  Senden(&Wasser_wert, &Arial_10x16, 0xF800);

hier ist natürlich die Temperatur zum Test als ASCII drin.
Ausgegeben wird: "Wasser: 11°C". Das Funktioniert, aber natürlich ohne 
echte Wassertemperatur.


Ich möchte es aber so:

Wasser_wert = Ausgerechneter_wert; //kommt vom ADC
ACSII (Wasser=) und der Wert sollen in einer Variable drin sein.
So dass ich das etwa so ausgeben kann:

Senden(&Wasser, &Arial_10x16, 0xF800);


Hoffe, ich habe mich verständlich ausgedrückt.

von Großfirma (Gast)


Lesenswert?

Mike schrieb:
>>  char Wasser[16]={"Wasser:"};
>>  char Wasser_wert[16]={"11°C"};

const char Wasser1[]={"Wasser:"};
const char Wasser2[]={"°C"};
char Wasser_wert[12];
itoa(messwert, Wasser_wert, 10);

Und das ganze in der Reihenfolge Ausgaben:
Wasser1
Wasser_wert
Wasser2

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.