mikrocontroller.net

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


Autor: Marvin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Marvin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Marvin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so gehts wirklich
Danke für die schnelle Hilfe

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.