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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren