Gast
#2535420
guten tag, ich habe mal eine Frage an euch, und zwar möchte ich 4Werte in einen Buffer schreiben. Könnte das so Funktionieren
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
|
Anzeige
|
wert in Buffer schreibn
Gast
#2535420
guten tag, ich habe mal eine Frage an euch, und zwar möchte ich 4Werte in einen Buffer schreiben. Könnte das so Funktionieren
char ist als Typ dafür ungeeignet. Entweder unsigned char oder einer Typ-Aliase aus <stdint.h>. Sonst gibt es nichts, was dagegen spricht. Schon, aber noch viel komplizierter kann man das wirklich nicht mehr schreiben. Wozu brauchst du die Hilfsvariable c? DIe verwirrt doch mehr als notwendig warum nicht einfach buf[0] = 100; buf[3] = 120; buf[6] = 150; buf[9] = 170; oder wenn das schon ab einem bestimmten Index anfangen soll, der in i steht buf[i+0] = 100; buf[i+3] = 120; buf[i+6] = 150; buf[i+9] = 170;
Gast
#2535444
Es kommt vielleicht nicht so gut, eine int Variable mit mindestens 16bit an eine Stelle eines char Feldes mit 9 bit zu schreiben. Außerdem schreibst Du ab dem 2. Zugriff immer auf den Index 3, wenn Du das fehlende Semikolon anfügst. Ich denke aber du meinst i+=3; statt i=+3;
Gast
#2535450
muss natürlich 8bit heissen und nicht 9 bit. edit geht leider nicht :-( Wenn ich mir die verwendeten Indizes so anschaue, dann will er es wohl als Text haben, also in etwa so:
(wozu auch immer das letztlich gut sein soll)
Gast
#2535524
vielen Dank erstmal, Letzendlich wollte ich 4 Dimmwerte im Buffer ablegen, die ich später per UART ausgeben wollte . also sprich mit Taster1 den Kanal wählen und mit Taster2 den Dimwert einstellen. mfg Probier mal so (anstelle wertX kannst Du auch die Zahlen einsetzen):
Gast
#2535621
ich habs jetzt mal so versucht aber ich bekomm nur mist Angezeigt
Andi schrieb: > ich habs jetzt mal so versucht aber ich bekomm nur mist Angezeigt > buf[i*3] = c; das vergisst du gleich mal wieder. Das ist nur deshalb entstanden, weil du in deinem Eröffnungsposting keine vernünftige Beschreibung dessen gebracht hast, was du eigentlich machen willst. > itoa( buf, dim_string, 10 ); // Wenn du nicht weißt, was eine Funktion macht, dann sieh in deinem Buch nach oder befrag Google danach. itoa wandelt einen INteger (daher das i) zu einem String (daher das a) um. Wo in diesem Aufruf ist denn der Integer, also die ganze Zahl? Die ganze Zahl steckt in c oder in i. Also willst du auch die an itoa übergeben. itoa( c, dim_string, 10 );
Gast
#2535704
oh wie Peinlich, ich wollte mit i den Kanal Wählen und in c steht der Dimmwert drinne. Im buf sollten die 4 Dimmwerte stehen. wenn i=0 kanal 1 i=3 kanal 4. aber wie setz ich das um wenn zb.i=1 den dimmwert für kanal 2. vielleicht könnten sie mir dabei ein Denkanstoss geben mfg Andi schrieb: > oh wie Peinlich, > ich wollte mit i den Kanal Wählen und in c steht der Dimmwert drinne. > Im buf sollten die 4 Dimmwerte stehen. Also ein Array von DimmWerten. Dann mach auch ein Array von Dimmwerten! Und einen davon wandelst du zu einem Text um, den du ausgeben kannst. Welchen? Na den, den du mit den Tastendrücken zum 'aktiven' (Hinweis für schon wieder einen vernünftigen Variablennamen) gemacht hast. > vielleicht könnten sie mir dabei ein Denkanstoss geben Ja. Nenn die Dinge vernünftig. Progammiert sich einfach leichter, wenn der Code selber eine 'Geschichte' erzählt. Du hast 4 Dimmwerte. Hier sind sie int DimmWert[4]; und einer davon ist der den du mittels Taste ausgewählt hast. Die Auswahl speicherst du hier int activeDimmWert; wenn activeDimmWert den ausgewählten Dimmwert angibt, dann ist DimmWert[ activeDimmWert ] der zugehörige Wert.
Gast
#2535775
vielen Dank für die Ausführliche Hilfe, nun hab ich noch eine Frage, wie ich die werte einzeln Ausgeben kann zB. in Zeile1 Kanal und in Zeile5 den Dimmwert Ausgeben. mfg Andi schrieb: > wie ich die werte einzeln Ausgeben kann zB. in Zeile1 Kanal und in > Zeile5 > den Dimmwert Ausgeben. Du brauchst Steuerzeichen, mit denen du deine Ausgabeterminal steuern kannst. Das hängt davon ab, was am anderen Ende des UART sitzt. Oft können Terminals die sog. VT100 Steuersequenzen. (Googeln) Aber ehrlich gesagt bin ich mir ziemlich unsicher, ob das noch nicht zu viel für dich ist.
Gast
#2535813
Die Ausgabe erfolgt auf einem GLCD.
ich habe das so.
//Zeilen Position auf LCD x0 y100 Kanal Anzeigen
uart_putc( 17);
uart_putc( 0 );
uart_putc( 0 );
uart_putc( 100 );
uart_putc( 0 );
sprintf( Buffer, "Kanal: %d", (int)activeDimmWert);
uart_puts( Buffer);
//Zeilen Position auf LCD x40 y100 Dimmwert Anzeigen
uart_putc( 17);
uart_putc( 40 );
uart_putc( 0 );
uart_putc( 100 );
uart_putc( 0 );
sprintf( Buffer, " Wert: %d", (int)DimmWert[activeDimmWert] );
uart_puts( Buffer);
Der Kanalwert wird auch Ausgegeben,die Dimmwerte werden ja alle
ausgegeben.
ich wollte gern das die Dimmwerte einzeln in einer neuen Zeile ausgeben,
zb. zeile100 = Dimmwert1
zeile105 = Dimmwert2
.........
Andi schrieb: > Die Ausgabe erfolgt auf einem GLCD. Sag das doch gleich. > ich habe das so. > > //Zeilen Position auf LCD x0 y100 Kanal Anzeigen > uart_putc( 17); > uart_putc( 0 ); > uart_putc( 0 ); > uart_putc( 100 ); > uart_putc( 0 ); mach dir doch erst mal eine Funktion, mit der du die Ausgabeposition setzen kannst. Das ist doch Unsinn, da jedesmal wieder die ganze Litanei aufzuführen.
und dann kannst du vor einer Ausgabe schon mal einfach die Position festlegen
Ist doch schon mal ganz was anderes, als da jedes mal dieselbe Litanei nur mit andere Zahlenwerten > ich wollte gern das die Dimmwerte einzeln in einer neuen Zeile ausgeben, > zb. zeile100 = Dimmwert1 > zeile105 = Dimmwert2 > ......... Na, dann mach das doch. Mach dir eine Funktion, die einen Wert an eine bestimmte POsition ausgibt
und du benutzt das dann für
oder wenns noch mehr werden
Funktionen sind dein Handwerkszeug. Schreib dir Funktionen, die dir die Arbeit erleichtern.
Gast
#2535901
vielen dank die Hilfe von ihnen hat mir sehr geholfen mfg Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|