Forum: Mikrocontroller und Digitale Elektronik Daten nicht untereinander sondern in einem String ausgeben


von David (Gast)


Lesenswert?

Hallo Leute,

ich hab ein kleines Problem, steh gerade völlig auf dem Schlauch ;-)
im moment werden mir die Werte wie folgt ausgegeben:

100;
237;
45;
34;

so wie im Code eben beschrieben ;-)


    sprintf(Sensor1,"%i;", ADCWert1);
    sprintf(Sensor2,"%i;", ADCWert2);
    sprintf(Sensor3,"%i;", ADCWert3);
    sprintf(Sensor4,"%i;\n", ADCWert4);




    uart_puts(Sensor1);
    uart_puts(Sensor2);
    uart_puts(Sensor3);
    uart_puts(Sensor4);

        _delay_ms(100);


Ich benötige die Daten aber im folgenden Format:
100;237;45;34;


Kann mir jemand sagen was ich abändern muss?
sorry bin völliger Neuling

alles was ich versucht habe das ganze mit "+" Sensor1 Sensor2 Sensor3 
Sensor4 brachte ein Compiler Fehler.

für eure Hilfe wäre ich Sehr Dankbar

von Wolfgang (Gast)


Lesenswert?

David schrieb:
> im moment werden mir die Werte wie folgt ausgegeben:
>
> 100;
> 237;
> 45;
> 34;

Werden die Werte so über die serielle Schnittstelle ausgegeben oder 
werden sie so von einem (unbekannten) Empfangsprogramm angezeigt?

von Olly T. (twinpeaks)


Lesenswert?

Wie wärs einfach mit printf statt sprintf:
1
    printf("%i;", ADCWert1);
2
    printf("%i;", ADCWert2);
3
    printf("%i;", ADCWert3);
4
    printf("%i;\n", ADCWert4);

Oder brauchst Du die Strings Sensor1 - 4 noch an anderer Stelle?

von Peter K. (peterka2000)


Lesenswert?

Vielleicht könnte es so funktionieren:
1
char sensorString[32];    //auf ausreichende Länge achten!
2
sprintf("%i;%i;%i;%i;\n", ADCWert1, ADCWert2, ADCWert3, ADCWert4);
3
uart_puts(sensorString);

Allerdings kann man auch nachforschen, warum die Werte denn in deinem 
Fall "untereinander" stehen, also woher der Zeilenumbruch zwischen den 
Werten kommt. Ich vermute, dass die uart_puts-Funktion oder die 
Empfangssoftware dieses Linebreak einfügt.

von HildeK (Gast)


Lesenswert?

Peter K. schrieb:
> sprintf("%i;%i;%i;%i;\n", ADCWert1, ADCWert2, ADCWert3, ADCWert4);

Fast.
1
sprintf(sensorString,"%i;%i;%i;%i;\n", ADCWert1, ADCWert2, ADCWert3, ADCWert4);

von Peter D. (peda)


Lesenswert?

David schrieb:
> sorry bin völliger Neuling

Dann schau ins Manual zu Deinem "uart_puts". Vermutlich hängt es immer 
"\n" an. Entweder es läßt sich abschalten oder es gibt eine andere 
Funktion, die das nicht tut.

von David (Gast)


Lesenswert?

Danke, hat geklappt ;-)

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.