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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.