Hallo, im Moment sende ich Zahlen per ASCII Entsprechung und füge sie dann zusammen. Kann man nciht aber auch direkt Dezimalzahlen senden über UART und Welchen Wertebereich dürfen diese dann habe? Danke
Naja also der Unterschied ist die Interpretation. Aber ich weiß ja eben nciht den Wertebereich. Kann man nur 8BIt senden? Oder geht da auch mehr?
Ja. vielfache von 8 bit. Die kann man dann als Lowbyte first oder Highbyte first interpretieren. Den besten Werteberich mit ASCII hat man mit Hex, das waern dann 256 fuer 2 byte uebertragen, 65536 fuer 4 byte uebertragen. Als Binaer bekommt man 256 fuer ein byte uebertragen, und 65536 fuer 2 byte uebertragen.
Hi Wenn du willst, kannst du auch Zahlen binär senden, auch Zahlenformate. Es kommt immer auf die Interpretation an. Deine Sschnittstelle kann nicht wissen, das eine Float kommt, also das Format einer Floatzahl, oder das eine Sequenz ASCII kommt, oder eine 32Bit Integer. Du legst das fest, sowohl auf Sender- als auch auf Empfängerseite. Oder du schreibst ein Protokoll etwa nach Art: ASCII: Formatbyte, Ziffer, ziffer; ziffer, Ziffer, Ziffer; Ziffer Float: Formatbyte, Mantisse, Exponent (so glaub ich war das....) Integer: Format, Hex,Hex,Hex,Hex Auf Empfängerseite schaust du dir das Formatbyte an und behandelst das empfangene entsprechend... Gru oldmax
Gerd schrieb: > Hallo, > im Moment sende ich Zahlen per ASCII Entsprechung und füge sie dann > zusammen. Kann man nciht aber auch direkt Dezimalzahlen senden über UART > und Welchen Wertebereich dürfen diese dann habe? > Danke Du kannst senden, was immer du willst, solange es in Bytes eingeteilt werden kann, aber ich rate davon ab. Der Vorteil ist gering, du musst die Variablen beim Empfang so oder so wieder zusammensetzen, und die Länge der Daten ist nur sehr selten wirklich ein Problem. Dafür wird eine Fehlersuche schwierig bei Binärdaten - versuch mal, sowas mit einem Terminal mitzulesen. Gruss Reinhard
Gerd schrieb: > Naja also der Unterschied ist die Interpretation. Aber ich weiß ja eben > nciht den Wertebereich. Kann man nur 8BIt senden? Oder geht da auch > mehr? Unser Alphabet hat nur 26 Buchstaben. Kann man mit diesen 26 Buchstaben auch mehr Information vermitteln als 26 verschiedene? ---> Ja nar klar. Setze einfach mehrere Buchstaben hintereinander und postuliere dass zb immer 3 zusammengehören. Schon kannst du jede Menge '3-buchstabiger' Wörter bilden. Aber achte darauf, dass der Empfänger herausfinden kann, wo ein Wort aufhört und das nächste anfängt. (Spätestens da kanns dann plötzlich wieder aufwändig werden, so dass die Grundidee mit ASCII Übertragung eigentlich wieder einfach wirkt)
Obacht beim senden von Rohdaten über UART: Das kann je nach System gehörig schief gehen. Unter Linux ist es z.B. üblich, dass bei einer Seriellen die üblichen(tm) Steuerzeichen (darunter u.a. break, xon, xoff, ..) interpretiert werden. Und abhängig von der benutzten Programmiersprache ist es nicht so ohne weiteres möglich, den Port passend zu konfigurieren. Ein Anwendungsprotokoll, das unter 'C' problemlos läuft (wenn es den Port per passender ioctls umgebogen hat), lässt sich dann in Java nicht ohne weiteres implementieren (von dadort aus kommt man nicht ohne Hilfsmittel an die passenden ioctls). Ergo: Wenns möglich ist, dann im Klartext ('menschenlesbar') übertragen, das erleichtert erstens die Portierbarkeit und zweitens wie schon angesprochen das Debuggen :-)
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.