Forum: Mikrocontroller und Digitale Elektronik Füllbytes und das richtige Parsen


von Max M. (Gast)


Lesenswert?

Wenn man Serielle Daten empfangen will, wozu dienen dann z.B. sogenannte 
Füllbytes?
Und wenn man z.B. eine Startsequenz hat wie
1B 1B 1B 1B //Escape Sequenz zum Start
01 01 01 01 //SML Start
Quelle
https://www.msxfaq.de/sonst/bastelbude/smartmeter_d0_sml_protokoll.htm

ISt es dann das Ziel diese Startsequenz komplett zu erkennen, oder nimmt 
man einige der 1B als Reaktionsreserve, falls die bei der Übertagung 
untergehen, weil der Controller noch nicht rechtzeitig empfangen hat?

von Max M. (Gast)


Lesenswert?

Danke ChatGPT:-)

Bei einer Startsequenz wie der von Ihnen genannten gibt es verschiedene 
Ansätze und Ziele, je nach den Anforderungen des Systems. Hier sind 
einige mögliche Szenarien:

Vollständige Erkennung der Startsequenz: In einigen Fällen kann das Ziel 
sein, die komplette Startsequenz zu erkennen, um sicherzustellen, dass 
die Übertragung korrekt beginnt. Dies bedeutet, dass alle Bytes der 
Startsequenz erkannt werden müssen, bevor mit der eigentlichen 
Datenübertragung fortgefahren wird. In diesem Fall dienen die 1B-Bytes 
nicht als Reaktionsreserve, sondern als Teil der Startsequenz selbst.

Verwendung von Reaktionsreserven: In anderen Fällen kann es sinnvoll 
sein, einige der 1B-Bytes als Reaktionsreserve zu verwenden, um auf 
mögliche Übertragungsfehler zu reagieren. Dies bedeutet, dass nicht alle 
1B-Bytes erkannt werden müssen, um mit der Datenübertragung zu beginnen. 
Der Controller kann beispielsweise nach dem Erkennen einer bestimmten 
Anzahl von 1B-Bytes mit der Verarbeitung der empfangenen Daten beginnen. 
Dies bietet eine gewisse Flexibilität, falls einige 1B-Bytes aufgrund 
von Übertragungsstörungen verloren gehen.

Die Wahl des Ansatzes hängt von verschiedenen Faktoren ab, wie zum 
Beispiel der Zuverlässigkeit der Übertragung, den Anforderungen an die 
Echtzeitverarbeitung, der Komplexität des Systems usw. Es ist wichtig, 
die spezifischen Anforderungen des Systems zu berücksichtigen und 
geeignete Maßnahmen zu ergreifen, um eine zuverlässige und fehlerfreie 
Datenübertragung sicherzustellen.

von Oliver S. (oliverso)


Lesenswert?

Max M. schrieb:
> ISt es dann das Ziel diese Startsequenz komplett zu erkennen, oder nimmt
> man einige der 1B als Reaktionsreserve, falls die bei der Übertagung
> untergehen, weil der Controller noch nicht rechtzeitig empfangen hat?

ChatGPT schrieb:
„Ja“

Oliver

von Max M. (Gast)


Lesenswert?

und das ganz ohne Sinnlose Diskussionen oder blöden Kommentaren:-)
Könnte man ChatGPT nicht fest ins Forum integrieren? :-)

von M.A. S. (mse2)


Lesenswert?

Max M. schrieb:
> Könnte man ChatGPT nicht fest ins Forum integrieren? :-)

Ich glaube manchmal, hier sind schon lange einige KI-Versuchsprogramme 
im Dauertest...   ;)

> und das ganz ohne Sinnlose Diskussionen oder blöden Kommentaren:-)
Tja, das war's dann damit. Selbst schuld!  :)

von Rainer W. (rawi)


Lesenswert?

Max M. schrieb:
> Könnte man ChatGPT nicht fest ins Forum integrieren? :-)

Bevor jemand seinen Eröffnungspost absendet, könnte man ihm erstmal die 
Antwort des ChatGPT präsentieren und sich dann nochmal rückversichern, 
ob die Frage wirklich so gepostet werden soll.

: Bearbeitet durch User
von Max M. (Gast)


Lesenswert?

Das schöne and ChatGPT ist, genau solche Kommentare kann man sich 
ersparen.
Bei mir hat ChatGPT noch nie gesagt, das er meine Frage nicht versteht, 
oder was von Salamitechnik gefaselt. Immer eine Frage gestellt und eine 
passende Antwort erhalten.
ISt schone erschreckend, das die Ki etwas schafft, das viele hier 
offenbar überfordert. Manche bemängeln die Rechtschreibung andere 
verstehen das Geschreibsel nicht etc.
Da sollten entsprechende Personen sich mal Gedanken machen...

von Alexander (alecxs)


Lesenswert?

Dir ist aber schon bewusst dass ChatGPT Dir nur nach dem Mund redet? Nur 
bla bla... Du hast eine Suggestivfrage gestellt, und dementsprechend 
eine nichtssagende Antwort erhalten.

Die Frage wozu Füllbytes dienen wurde gar nicht beantwortet.

von Bruno V. (bruno_v)


Lesenswert?

Max M. schrieb:
> und das ganz ohne Sinnlose Diskussionen oder blöden Kommentaren:-)

Kannst Du denn mit der Antwort was anfangen?

von Max M. (Gast)


Lesenswert?

Doch,m hatte es nur nicht gepostet
Bei der seriellen Übertragung dienen Füllbytes dazu, die 
Übertragungsgeschwindigkeit zu synchronisieren und die Datenstruktur 
aufrechtzuerhalten. Hier sind einige Hauptzwecke von Füllbytes:

Synchronisation: Füllbytes werden verwendet, um die Synchronisation 
zwischen Sender und Empfänger aufrechtzuerhalten. Durch die regelmäßige 
Übertragung von Füllbytes kann der Empfänger die 
Übertragungsgeschwindigkeit und den Datenfluss erkennen und sich darauf 
einstellen.

Timing und Taktung: Füllbytes ermöglichen es, den Takt der Übertragung 
zu stabilisieren. Durch die Einfügung von Füllbytes kann eine 
gleichmäßige Übertragungsrate aufrechterhalten werden, um 
Timing-Probleme zu verhindern.

Datenintegrität: Füllbytes können dazu verwendet werden, Datenlücken 
aufzufüllen, die während der Übertragung entstehen können. Dies hilft, 
die Datenintegrität sicherzustellen und sicherzustellen, dass die 
Datenstruktur korrekt bleibt.

Pufferung: Füllbytes können auch verwendet werden, um Pufferbereiche 
aufzufüllen und sicherzustellen, dass der Datenstrom kontinuierlich 
bleibt. Dies ist besonders wichtig, wenn die Übertragungsgeschwindigkeit 
zwischen Sender und Empfänger nicht synchron ist.

Es ist wichtig zu beachten, dass die Verwendung von Füllbytes von der 
spezifischen seriellen Übertragungsprotokoll und den Anforderungen des 
Systems abhängt. Unterschiedliche Protokolle können unterschiedliche 
Methoden zur Verwendung von Füllbytes haben, um die Übertragung zu 
optimieren und die Datenintegrität sicherzustellen.

von Max M. (Gast)


Lesenswert?

??!?!?

Kannst Du damit was anfangen?
Was soll denn so eine Frage?
genau das meine ich, solche Diskussionen kann man sich mit ChatGPT 
ersparen.
Was soll man denn an dieser sehr klar und deutlichen Erklärung nicht 
verwerten können?
Im Gegensatz zu den Antworten hier die in Form von Jeopardy beantwortet 
werden, und damit enden, das man ja bloß nicht zu viel helfen möchte, da 
man es sich ja selber erarbeiten müsse.
Da fragt man sich manchmal, was bei einigen hier schiefgelaufen ist.

Bruno V. schrieb:
> Max M. schrieb:
>> und das ganz ohne Sinnlose Diskussionen oder blöden Kommentaren:-)
>
> Kannst Du denn mit der Antwort was anfangen?

von Alexander (alecxs)


Lesenswert?

Du hast gefragt A komplett - oder B Reaktionsreserve.

Oliver S. schrieb:
> ChatGPT schrieb:
> „Ja“

Beides. Sogar deine Wörter wurden benutzt die Du in den Raum geworfen 
hast. Inwiefern ist das nun eine Antwort auf die Frage? Welche 
Erkenntnis liegt darin, die Du bei der Fragestellung nicht schon 
hattest? Keine. Du bist so schlau wie vorher.

Deinem Link nach wäre A richtig.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Max M. schrieb:
> Wenn man Serielle Daten empfangen will
Womit willst du da welche serielle Daten empfangen? Mit einem 
handelsüblichem RS232-UART eines µC? Dann vergiss irgendwelche Füllbytes 
oder Füllbits.

Max M. schrieb:
> Kannst Du damit was anfangen?
Ja, kannst du jetzt oder nicht? Hast du verstanden, wann man Füllbytes 
braucht? Die normale serielle Schnittstelle braucht die nämlcih nicht.

Max M. schrieb:
> von der spezifischen seriellen Übertragungsprotokoll und den
> Anforderungen des Systems abhängt.
Genau das ist es: ich bin mir völlig sicher, dass dieses "spezielle 
Übertragungsprotokoll" nichs mit den seriellen Bussen zu tun hat, mit 
denen du zu tun hast.

Max M. schrieb:
> Bei mir hat ChatGPT noch nie gesagt, das er meine Frage nicht versteht
Bei mir schon.
Und der Witz ist: der Automat gibt dir mit gewisser Wahrscheinlichkeit 
die richtige Antwort auf deine Frage. Du musst aber schon auch die Frage 
richtig stellen.

Wenn du die falsche Frage stellst, dann gibt das Ding einen plausiblen 
Text zurück, der aber völlig nutzlos ist. Mir scheint, das ist hier 
gerade auch der Fall.

von Alexander (alecxs)


Lesenswert?

Die Antwort mit den Füllbytes ist ja okay, da könnte man noch ansetzen 
und nachhaken. Aber die Antwort zur Startsequenz war nur blub blub. 
Seltsam dass er sich damit zufrieden gibt.

von Günter R. (guenter-dl7la) Benutzerseite


Lesenswert?

Da es sich ums SML-Protokoll dreht, meint er vermutlich die vor dem 
Ende der message gegebenenfalls eingefügten beiden Zusatzbytes, damit 
die Anzahl der bytes in der message mod 4 Null ergibt (wegen des 
abschließenden CRCs).

Fills kenne ich sonst eigentlich nur als 'idle' bei synchroner 
Übertragung. Der obige ChatGPT-Text erscheint mir dazu auch nichts 
herzugeben.
edit: typos

: Bearbeitet durch User
von Michael D. (nospam2000)


Lesenswert?

Bei Message-orientierten Übertragungen macht es Sinn Sync-Bytes 
einzufügen damit der Client sich wieder auf den Datenstrom (den Anfang 
der nächsten Message) synchronisieren kann, wenn die Kommunikation mal 
außer Tritt ist und z.B. ein paar Bytes verlorengingen.

Das kann auch dann passieren, wenn der Server immer Daten schickt und 
der Client erst später gestartet wird, dann kann man nicht davon 
ausgehen, dass das erste empfangene Byte der Anfang einer Message ist.

von Norbert (der_norbert)


Lesenswert?

Wenn Max davon überzeugt ist das ChatGPT ihm immer die besten Antworten 
gibt, dann wäre es nur logisch wenn er seine nächste Frage ebenso an 
ChatGPT richtet.
Die Frage nach dem nächstgelegenen Sanatorium.

von Max M. (Gast)


Lesenswert?

Alles klar, da sich die fragwürdigen Leute hier inzwischen wieder mit 
den üblichen fehl am Platz, Kommentaren äußern, bin ich hier raus.
Schönen Abend noch


Füllbits sind zusätzliche Bits, die in der Datenübertragung verwendet 
werden, um Lücken aufzufüllen oder bestimmte Anforderungen zu erfüllen. 
Sie dienen dazu, die Daten auf eine bestimmte Größe oder Struktur 
anzupassen, um eine effiziente Übertragung und Verarbeitung zu 
ermöglichen. Hier sind einige wichtige Punkte zu Füllbits:

Ausrichtung von Daten**: Füllbits werden verwendet, um Daten auf eine 
bestimmte Ausrichtung zu bringen. Zum Beispiel müssen bestimmte 
Netzwerkprotokolle oder Speicherstrukturen die Daten in bestimmten 
Einheiten oder auf Byte-Grenzen ausrichten. Füllbits können verwendet 
werden, um sicherzustellen, dass die Daten entsprechend ausgerichtet 
sind.

Fehlererkennung und Fehlerkorrektur**: In einigen Fällen werden Füllbits 
verwendet, um Fehlererkennungs- und Fehlerkorrekturmechanismen zu 
unterstützen. Zum Beispiel können Paritätsbits oder Prüfsummenbits 
verwendet werden, um Datenintegrität zu überprüfen und Fehler zu 
erkennen oder zu korrigieren.

Synchronisation**: Füllbits können auch verwendet werden, um die 
Synchronisation zwischen Sender und Empfänger zu erleichtern. In einigen 
Kommunikationsprotokollen werden spezielle Synchronisationsmuster oder 
Füllbits eingefügt, um den Empfänger auf den Beginn oder das Ende einer 
Datenübertragungseinheit hinzuweisen.

Reservierte oder zukünftige Verwendung**: Manchmal werden Füllbits 
verwendet, um zusätzlichen Platz für zukünftige Erweiterungen oder 
reservierte Zwecke zu schaffen. Diese Bits können später verwendet 
werden, um neue Funktionen oder Erweiterungen zu unterstützen, ohne dass 
bestehende Systeme geändert werden müssen.

Es ist wichtig zu beachten, dass die Verwendung von Füllbits stark vom 
Kontext abhängt. In verschiedenen Anwendungsbereichen können sie 
unterschiedliche Zwecke erfüllen. Die genaue Verwendung und Bedeutung 
von Füllbits kann je nach Anwendungsfall variieren.
Es grüßt, ihr ChatGPT

von Alexander (alecxs)


Lesenswert?

Bitte ein Bit

von Rolf M. (rmagnus)


Lesenswert?

Max M. schrieb:
> Das schöne and ChatGPT ist, genau solche Kommentare kann man sich
> ersparen.
> Bei mir hat ChatGPT noch nie gesagt, das er meine Frage nicht versteht,
> oder was von Salamitechnik gefaselt. Immer eine Frage gestellt und eine
> passende Antwort erhalten.

Meine Erfahrung mit ChatGPT ist, dass es immer eine Antwort hat. Ob 
diese Antwort allerdings korrekt ist oder völliger Blödsinn, steht auf 
einem anderen Blatt und ist für den Fragesteller oft schwer zu erkennen.
Das schönste Beispiel fand ich ja die Uni-Bibliothek, die sich gewundert 
hat, warum plötzlich so viele Studenten nach Büchern gefragt hatten, die 
es gar nicht gibt. Dann hat man bemerkt, dass sie alle ChatGPT nach 
Buchvorschlägen zu bestimmten Themen gefragt hatten und dieses sich 
daraufhin Phantasienamen ausgedacht hat. Weder die Bücher, noch deren 
angebliche Autoren haben je existiert.

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

ChatGPT ist ein Sprachmodell, keine Wissensdatenbank. Ich habe hier die 
Frage mal von hinten aufgezogen, mit anderen Suggestivfragen als denen 
des TE. Die Antworten fielen entsprechend anders aus.

https://chat.openai.com/share/cf31e2b3-2d0d-46a1-ad67-ca1909559c9c

Die Antwort ist A - komplett. Das mit den Füllbytes ist noch nicht 
zufriedenstellend, aber das hat Günter R. (guenter-dl7la) oben erklärt.

von Kaj G. (Firma: RUB) (bloody)


Lesenswert?

Das die Threads von diesem Kasper nicht einfach gesperrt/gelöscht 
werden...

von Rainer W. (rawi)


Lesenswert?

Max M. schrieb:
> ISt es dann das Ziel diese Startsequenz komplett zu erkennen,

nein, wie soll das funktionieren?

> oder nimmt man einige der 1B als Reaktionsreserve, falls die bei
> der Übertagung untergehen, weil der Controller noch nicht rechtzeitig
> empfangen hat?

Die erste gesendete Sequenz hat mit dem Controller überhaupt nichts zu 
tun.
Den Datenstrom braucht schon der Empfänger, damit er sich richtig 
einpegeln kann. Ein Empfänger, der vor dem Datenpaket dem Rauschen der 
Welt gelauscht hat, wird plötzlich klar, dass ein Lichtsignal auf die 
Photodiode fällt. Also muss er seine Schaltschwelle so einstellen, dass 
der Bitstrom mit minimalen zeitlichen Verzerrungen als Digitalsignal 
weitergereicht werden kann, Erst dann kann sich der Controller anhand 
der definierten Startsequenz daran machen, die Bytegrenzen zu suchen.

von Sebastian W. (wangnick)


Lesenswert?

Max M. schrieb:
> ISt es dann das Ziel diese Startsequenz komplett zu erkennen, oder nimmt
> man einige der 1B als Reaktionsreserve, falls die bei der Übertagung
> untergehen, weil der Controller noch nicht rechtzeitig empfangen hat?

Weder noch. Anfang und Ende jeder Nachricht werden im 
SML-Transportprotokoll durch bestimmte Bytesequenzen hinter einer 
Escapesequenz gekennzeichnet. Auf diese Weise kann man an beliebiger 
Stelle im Bytestrom aufsetzen und zuverlässig den Anfang der nächsten 
Nachricht finden. Dazu darf diese Anfangssequenz natürlich in der 
Nachricht nie vorkommen. Das wird dadurch erreicht, dass jedes 
eventuelle Vorkommen der Escapesequenz selbst in einer Nachricht 
verdoppelt wird.

LG, Sebastian

von Bruno V. (bruno_v)


Lesenswert?

Rolf M. schrieb:
> Meine Erfahrung mit ChatGPT ist, dass es immer eine Antwort hat.

ChatGPT ist wie ein altkluges Kind (*). Es redet mit bei Eheproblemen 
oder Autos ohne Steuerrad von  Vorderrad unterscheiden zu können. 
Beeindruckt aber, weil es den Durchschnittsverbrauch (per 
Taschenrechner) exakt angibt, wenn man die Zahlen aufschreibt.


(so bezeichnete man früher (Einzel-)Kinder, die oft 
Erwachsenen-Gesprächen lauschten. Heute gibt es zwar mehr Einzelkinder, 
aber es dreht sich alles ums Kind, wenn es dabei ist oder es gibt nur 1 
oder 2 Erwachsene.)

von Günter R. (guenter-dl7la) Benutzerseite


Lesenswert?

Max M. schrieb:
> bin ich hier raus.

Schön. Falls du mal deine Meinung änderst und wieder ChtGPT-Outputs 
posten willst, wäre es hilfreich, auch den dazugehörigen prompt-Input 
mit zu posten, denn generell gilt: garbage in => garbage out.

von Rainer W. (rawi)


Lesenswert?

Max M. schrieb:
> Wenn man Serielle Daten empfangen will, wozu dienen dann z.B. sogenannte
> Füllbytes?

Sei froh, dass du es nicht auch noch mit Füllbits zu tun hast.

Füllbytes benutzt man gewöhnlich, um irgendetwas aufzufüllen, z.B. 
Nutzdaten auf die Größe eines Übertragungsblocks.

von Peter D. (peda)


Lesenswert?

Rainer W. schrieb:
> Füllbytes benutzt man gewöhnlich, um irgendetwas aufzufüllen, z.B.
> Nutzdaten auf die Größe eines Übertragungsblocks.

So ist es, daher auch der Name.
Die 0x1B sind also keine Füllbytes, wie der Fragetitel suggeriert.
Füllbytes sind die 0x00 weiter unten in dem Link.

von Mario M. (thelonging)


Lesenswert?

Max M. schrieb:
> Ausrichtung von Daten**: Füllbits werden verwendet, um Daten auf eine
> bestimmte Ausrichtung zu bringen.

In der Steinzeit der Computertechnik dienten Nullbytes vor den 
eigentlichen Daten dazu, z.B. bei Lochstreifenstanzern einen Vorlauf zu 
erzeugen, damit man das dann den Lochstreifen besser in den 
Lochstreifenleser einspannen konnte.

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
Noch kein Account? Hier anmelden.