5 stelligen wert über serielle schnittstelle mit uC einlesen

Gast #1956552
Lesenswert?

Hi
>Hallo wollte mal um rat fragen wie ich einen 5 stelligen wert mit dem uC
>einlesen kann mit der seriellen schnittstelle.  Und dan mit dem wert
>intern im uC weiter arbeiten kann
Er wollte doch nur den Rat WIE er eine 5 stellige Zahl einlesen kann. Da 
sind Formate erst mal noch ohne Bedeutung. So kann eine 5 stellige Zahl 
auch ein 2 Byte - Wert sein.
Also, nehmen wir den Fall an, es handelt sich um einen String  in der 
Form "12345". Wenn die Empfangsroutine daraus eine Zahl machen soll, so 
ist es unumgänglich, ein String-Ende Zeichen 0A 0D  (CR LF) anzuhängen, 
damit der Controller weis, die Zahl ist komplett und er kann nun diese 
zusammenrechnen. Mit der Info, es sind immer 5 Zeichen, kann man 
zusätzliche Sicherheit erreichen. Dann werden einfach vorgestellte "0"en 
mit übertragen. Also "00123"+0A 0D z.B.
Kommen wir zur Unsetzung der Ziffern in Zahlen. Der ASCII - Code von 0 
ist 30 hex oder 48 dez. Zieht man von dem übertragenen Byte nunn 30 hex 
ab, so erhält man 0 als Zahl und da die Zahlen aufeinander folgen, 
ergibt 39 hex -30 hex eine 9. Mit diesen Zahlen kann man nun rechnen, 
wie wir es in der Schule gelernt haben:
"00123" ist auf Zahlen umgesetzt (ASCII - 30 hex) 00123 dez. im 5 Bytes.
Die Komplette Zahl erhält man in dem man diese nun zusammenrechnet.
   0 * 10 0000 =  0
+  0 * 1000    =   0
+  1 * 100     =    100
+  2 * 10      =     20
+  3 * 1       =      3
------------------------
 Ergebnis:          123

Wenn du die Zahlen nicht als ASCII bekommst, sondern in Bytes vorliegen 
hast, läßt du die Subtrktion mit 30 hex einfach weg. Als Start oder 
Endzeichen kannst du Werte -> 9 einsetzen, da eine Stelle ja nicht 
diesen Wert erreichen kann.
Gruß oldmax

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