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
Und was ist dein Problem? (Ich kann keine Frage in Deinem Beitrag entdecken. Weder direkt noch indirekt).
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?
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.
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ß
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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.