Ausgabe von Hex-Werten.

Gast #317818
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
Gast #317820
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?
#317821
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.
Gast #317822
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ß
#317823
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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren