Hallo zusammen, habe folgendes Problem, für welches ich keine Lösung finde: Ich möchte eine Struktur mit Werten und Strings füllen, diese soll dann im internen Flash abgespeichert werden. typedef struct { REAL Value; INT8U Description[128]; INT8U StatusFlags; }Input; Input input_flash[10]; input_flash[0].Value = a_inputs[0].Value; input_flash[0].Description = a_inputs[0].Description; Die Übergabe von dem REAL Wert value klappt. Nur bei der Übergabe des Textes in Description gibt folgende Fehlermeldung: incompatible types in assignment die Übergabe ans Flash klappt auch. Danke für eure Hilfe
Du musst den String kopieren (memcpy, memcpy_P). Genau Syntax ist abhängig vom C-Compiler, Ziel-Mikrocontroller
Hallo LightCo, Strings lassen sich in C nicht so einfach mit = kopieren. So kannst Du höchstens den Zeiger auf den String kopieren. Oder möchtest Du das? Habe ich das missverstanden? Ulrich
LightCo wrote: > Nur bei der Übergabe des Textes in Description gibt folgende > Fehlermeldung: > incompatible types in assignment C hat keinen eigenen String Datentyp. Als Ersatz muss ein Array herhalten. Aber: mit Arrays als Ganzes kann man praktisch keine Operationen durchführen. Noch nicht mal Zuweisen oder Vergleichen. Alles muss über Schleifen auf die einzelnen Arrayelemente runtergebrochen werden. Aber: Da man das häufig braucht, bringt jeder C Compiler eine Sammlung von Funktionen zur Stringverarbeitung mit http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F und beim gcc gibt es dann noch spezielle Funktionen, die benutzt werden, wenn der String im Flash und nicht im SRAM steht. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Vereinfachung_f.C3.BCr_Zeichenketten_.28Strings.29_im_Flash
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.