Erkennung des Datenfeldendes

Gast #716162
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...
#716166
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.
#716168
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
#716171
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 ;)
Persönliche Seite #716172
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).
#716384
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?

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.