Forum: Mikrocontroller und Digitale Elektronik Ausgabe von Hex-Werten.


von Marvin (Gast)


Lesenswert?

Hi ich habe ein glaube ich allgemeines Problem:
ich bekomme über den UART des Microcontrollers Daten die ich weiter
anzeigen will.

Die Daten kommen binär rein und werden in einem Array abgespeichert
z.B. Ident in dem die Identnummer des Sensors abgelegt wird mit dem der
uC verbunden ist.
Da ich diese DAten nun auch ausgeben will  muss ich das mit printf
machen, da ich das Array erst zusammenfassen muss zu einem String nehme
ich sprintf so das mein Code so aussieht:

sprintf(astring,"%x",Ident);
//%s für String %x für Hex
uip_send( astring, strlen ( astring ) );// sendet das array astring an
            //die ausgabe

von Karl H. (kbuchegg)


Lesenswert?

Und was ist dein Problem?
(Ich kann keine Frage in Deinem Beitrag entdecken. Weder
direkt noch indirekt).

von Marvin (Gast)


Lesenswert?

oh ja hast recht da fehlt die hälfte. Beim drücken des submit Buttons
hat mein PC den Blauen Bildschirm rausgeholt. Sorry.
also weiter.
in Ident wird nun vom Sensor 0x05 0xDa 0xD0 reingeschrieben
(0b1011101101011010000)

jetzt solle man meinen da diese Werte nun da drin sind das diese auch
von sprintf und uip_send  ausgegeben werden.
Übermittelt und ausgegeben werden jedoch 40 00 2b 88.

Die FRage ist nun wo mein gedanklicher Fehler liegt warum nicht das
rauskommt was drin ist?

von Karl H. (kbuchegg)


Lesenswert?

Wie hast Du ueberprueft was in Ident steht.
Welchen Datentyp hat Ident? Du sprichst da ganz
am Anfang von einem Array. Ist das ein Array?

Wenn ja, dann kann das nicht gehen:
  sprintf(astring,"%x",Ident);

Denn dann wuerde sprintf mit der Speicheradresse von
Ident arbeiten, aber nicht mit dem was in Ident steht.

Bsp:

  unsigned char Ident[4] = { 0x00, 0x05, 0xDa, 0xD0 };

  ...

  sprintf( astring, "%x %x %x %x", Ident[0], Ident[1],
                                   Ident[2], Ident[3] );

So muesste es gehen.

von ich (Gast)


Lesenswert?

Eine andere Fehlerquelle können auch nicht übereinstimmende Baudraten
sein.
Soll die Identnummer drei Byte lang sein? Falls ja und du empfängst
vier Byte, deutet das sehr auf falsche Baudraten hin.

Gruß

von Karl H. (kbuchegg)


Lesenswert?

Baudrate: Waere moeglich.
Waere aber extremer Zufall, wenn dann was rauskommt, was
wie Hex-Zahlen aussieht. Ich hatte eigentlich immer nur
wirres Zeugs bei einer fehlerhaften Baudrate.

Das laesst sich aber ganz leicht ausschliessen. Der OP
soll einfach einen bekannten Text mit dazu ausgeben.

  sprintf( astring, "Byte1 %x Byte2 %x

Wenn die fixen Texte so kommen wie vorgesehen, dann ist
es nicht die Baudrate. (Darauf achten, dass astring
gross genug dimensioniert ist).

von Marvin (Gast)


Lesenswert?

so gehts wirklich
Danke für die schnelle Hilfe

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.