mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 'Trennzeichen' zwischen den Messwerten senden?


Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

mein µC sendet am ende einer messung alle messwerte zum pc.
das sind dann ca. 30 mal 6 bytes die bis jetzt einfach nacheinander 
übertragen werden.

macht es hier sinn ein trennbyte einzubauen? wenn ja welches? denn in 
den 6 byte vorher sind alle zustände von 0x00 bis 0xFF möglich und somit 
wäre das trennbyte nicht unbedingt von den richtigen daten zu 
unterscheiden?

gibts da eine lösung? oder einfach so lassen wie bis jetzt?

mfg, johannes

Autor: Metaller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und sowas zu trennen benötigst Du ein Protokoll. Evtl. hilft Dir 
folgender Beitrag weiter: Beitrag "Bitte um Hilfe bei einer Protokollerstellung"

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übertrage die Messwerte nach dem ASCII-Standard, damit kannst Du alle 
Buchstaben, Ziffern und Sonderzeichen (Return und 
Zeilenabsatz/Wagenrücklauf) übertragen und einfach mit jedem 
x-beliebigen Terminalprogramm darstellen.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
an sonsten kannst Du auch statt eines trennbytes eine Trennpause 
einbauen, vielleicht kannst Du die ja am PC detektieren...

Autor: Johannes A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solange Dein Controller den vollen 8bit-Bereich ausschöpft, hast Du auf 
der PC-Seite praktisch keine Chance, irgendwelche Trennbytes klar zu 
erkennen.

Ich würde daher, auch wenn es etwas mehr Aufwand bedeutet, wie Travel 
Rec vorschlagen, zur Übertragung der Werte druckbare ASCII-Zeichen zu 
verwenden, dann kannst Du zur String-Trennung alle üblichen 
Steuerzeichen wie CR, LF oder auch NUL verwenden, ohne Dir Sorgen um 
Misverständnisse zu machen.

Ansonsten besteht eigentlich nur die Möglichkeit, ein Blockprotokoll mit 
zumindest extra Längenbyte zu benutzen, das aber rein praktisch normal 
aufwendiger zu implementieren ist als die zuvor angesprochene Variante.

Gruß Johannes

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
joa, das mit dem ascii hört sich auch nicht schlecht an.
aber wie mach ich das am besten in assembler, wenn ich das byte 0x8E 
oder 0b10001110 habe?

Autor: mng (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Google mal nach "Consistent Overhead Byte Stuffing"... Eine ziemlich 
einfache und dennoch geniale Lösung, um sämtliche 0x00-Bytes aus den 
Nutzdaten herauszufiltern um die 0x00 dann als Trennzeichen verwenden zu 
können; und das bei annähernd garkeinem Overhead.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> aber wie mach ich das am besten in assembler, wenn ich das byte 0x8E

Du nimmst das High-Nibble (4-Bit)
schiebst sie nach unten und

* wenns kleiner als 0A ist
    addierst den ASCII Code für '0'
* andernfalls
    addierst du den ASCII Code für 'A'

danach machst du dasselbe mit dem Low-Nibble

dadurch überträgst du 0x8E im Klartext zum Empfänger. 0x8E
wird als '8' 'E' übertragen und jedes Terminal schreibt dir
auch brav 8E hin. Sowas sollte eigentlich in jeden Werkzeugkasten
gehören.

Autor: unsichtbarer WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man könnte die Datenübertragung ja auch mit einer "Präambel" starten, 
also einer Folge von Bytes, die nie oder eher/äusserst selten auftritt.
Die Klartext-Übertragung wie sie Karl-Heinz und andere schon ansprachen, 
wäre eine andere Möglichkeit.

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich betreibe seit 2002 einen Datenlogger mit 512k SRAM. Die Daten gehen 
binär, also der komplette Speicher am Stück, zum PC. Ich hatte in den 4 
Jahren noch keinen einzigen Fehler. Also wenn die Auswertung 
funktioniert würde ich nix ändern. Prüfungen würde ich nur einbauen, 
wenn's um lange Strecken oder Drahtlossysteme geht, ansonsten 
verlangsamt sich die Prozedur nur unnötig.

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habens grad geteste, scheint ganz gut ohne trennzeichen zu klappen

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.