Hallo, ich habe folgendes Problem bei dem ich seit Tagen nicht weiterkomme: An USART1 empfange ich Daten von einem GSM-Modem, welche in das Empfangsbuffer RX_BUFFER1 hineingeschrieben werden. Bsp.: Empfang von R -> RX_BUFFER1[0]=data wobei data=82 Diese Daten möchte ich auf einem Display sowohl als hex als auch als ASCII-Zeichen darstellen.Die Darstellung als hex (%X) funktioniert, die Ausgabe als ASCII-Zeichen (%c) jedoch nicht. Das ASCII-Zeichen R entspricht ja 82dez bzw. 52hex. Also habe ich folgenden Schritt eingefügt: if(data==82){RX1[0]=0x52;} //"Umrechnung dez in hex" d.h. die empfangenen Daten werden als hex-wert ins Empfangsbuffer geschrieben. Damit funktioniert alles, aber das kann doch nicht die beste Lösung sein. Für data=0 bis data=255 ergeben sich 256 if-Abfragen ! Kann ich das nicht irgendwie besser lösen ? Gruß Jerome
kleine Berechnung: Teile deine Dezimalzahl durch 16. Das Ergebnis ist die höherwertige Stelle, und der ganzzahlige Rest ist die niederwertige Stelle. In C gibt es doch eine Funktion, die die ganzzahlige Division (mit Rest) bildet und dann noch eine, die dir nur den Rest liefert. Bin momentan nicht mehr ganz in der Syntax von C drin, und weiss die jetzt nicht aus dem Kopf. Eins war der "/" und das andere weiss ich gerade nicht. Gruß Rahul
Das Problem was ich habe liegt nicht in der reinen Umrechnung der Zahlensysteme. Nach dem von Dir beschriebenen Verfahren ergibt sich: 82dez: 82/16 = 5 Rest 2 -> 2 als niederwertige Stelle 5/16 = 0 Rest 5 -> 5 als höherwertige Stelle also 52hex, was ja auch vollkommen richtig ist. Die Stellen können aber je nach umzurechnender Dezimalzahl die Werte 0...9 und A...F annehmen. Ich habe deswegen versucht ein solches "Umrechnungsprogramm" zu schreiben indem ich einen string mit 4 Stellen definiere in der Art string[0]=0; string[1]=x; string[2]= ergebnis höherwertige Stelle string[3]= ergebnis niederwertige Stelle An dieser Stelle komme ich aber nicht weiter. Ich kann dieses Ergebnis (string mit 4byte) ja dem Empfangsbuffer nicht einfach durch RX1_buffer[0]= string zuweisen. Vielleicht ist diese Vorgehensweise ja auch falsch. Gruß Jerome
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.