mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Erkennung des Datenfeldendes


Autor: eckel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute hab da ne Frage, hat jemand von euch ne Ahnung wie man 
rausbekommen kann ob das Datenfeld zuende ist sprich keine db´s mehr 
vorhanden sind?

Autor: Daniel Bauer (und3rt4ker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi...

wie wärs denn mit einer von dir definierten Bytefolge am Datenfeldende, 
die du manuell überprüfst z.B: 0,255,0,254
Ein extra Befehl o.Ä ist mir nicht bekannt.


MfG und3rt4ker

Autor: eckel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab ich auch schon überlegt is aber problematisch da ich ne Laufschrift 
programmiere und da so gut wie jede kombination vorkommen kann...
Hab von meinem ausbilder mal erfaren das es ne art routine gibt die man 
programmieren kann er is aber nich weiter drauf eingegangen, er meinte 
nur sei sehr schwer verständlich...

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

Bewertung
0 lesenswert
nicht lesenswert
Ich geh mal davon aus, dass du Assembler meinst. 'db' spricht
dafür.

> aber problematisch da ich ne Laufschrift
> programmiere und da so gut wie jede kombination vorkommen kann

mag sein. Aber da 0 keinem darstellbaren ASCII Zeichen
entspricht, wird das dann ja wohl in deinen Texten eher selten
vorkommen.

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Karl heinz Buchegger
Hörte sich für mich eher an, als würde er Bit-Patterns übertragen... 
sonst auf jeden Fall mit 0 terminieren.

Was mir dazu einfällt:
- Ein Bit mehr als notwendig verwenden und damit das Ende signalisieren
- wenn das nicht geht: nur 7 der 8 Bits für Daten verwenden und das 
letzte Bit als Kennzeichen verwenden. Die Originaldaten müssen dann aus 
mehreren Bytes zusammengesetzt werden -> Aufwändig
- Einen bestimmten Wert 'Escapen' z.B. (255, 0) heißt Ende der Daten, 
(255, 255) heißt 255. Alle anderen Werte normal übertragen.
- Saubere Lösung: Daten zu Frames zusammenfassen und am Anfang eines 
jeden Frames die Länge ankündigen. (Streaming nicht ohne Weiteres 
möglich)
- Oder eine getrennte Interrupt- oder sonstwas-Leitung legen und damit 
das Ende signalisieren (entspricht etwa der ersten Lösung, ändert aber 
die Datenübertragung selbst nicht)

Hoffe da ist was brauchbares für dich bei - sonst noch mal melden ;)

Gruß

Kai

Autor: eckel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielleicht für nen Buchstaben aber als leerzeichen brauch ichs dann 
schon ansonsten kann manns nur noch schwer lesen...

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich war jetzt eher von einer Datenfütterung von außen ausgegangen. Wenn 
die Daten intern als 'db' vorliegen, dann einfach die Länge als int 
danebenlegen.

>..., er meinte
>nur sei sehr schwer verständlich...

In die Kategorie fällt weder die 0-terminierung noch die explizite 
Längenangabe ;)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Definiere ein Symbol, das im Speicher hinter dem Datenfeld liegt. 
Vergleiche die Adresse dieses Symboles mit der (Anfangs-)Adresse des 
Datenfeldes und Du kennst die Länge des Datenfeldes.

Alternative: Das Datenfeld dürfte ja wohl Text enthalten (Laufschrift?), 
daher dürften bestimmte Zeichen darin nicht vorkommen. Halte Dich an die 
C-Konvention, verwende 0 als Stringendekennzeichnung.

0, nicht "0" (0x30).

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@eckel
Kannst du mal einen Beispieldatensatz nennen? Ist dann leichter zu 
diskutieren, danke.

Autor: Daniel Bauer (und3rt4ker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich bin auch voll beim Laufschriftprogrammieren. g Und ich benutze die 
0 am Ende des Datenfeldes für den Lauftext, gab noch nie Probleme und 
ich wüsste spontan nicht, wofür man die 0 sonst dahin schreiben würde.

MfG
und3rt4ker

edit: @eckel: Das Leerzeichen entspricht im ASCII code nicht der 0 
sondern 32, oder war was anderes gemeint?

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>..., er meinte
>nur sei sehr schwer verständlich...

d.h. dass er Null Ahnung hat, es aber sich nicht sagen traut ...

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.