# String formatieren



## S91sPlayer (18. Jan 2012)

Huhu Java Programmierer

ich könnte abermals eure Hilfe gebrauchen und hoffe ihr könnt mir helfen, da es mir schon an einem Ansatz fehlt.

Folgendes Problem :
Ich habe ein Programm geschrieben welches von einem seriellen Gerät dauerhaft Daten zugesendet bekommt, die ich auslese und dann in eine Datei schreiben möchte.

Die ankommenden Daten sind in einem String gespeichert und ich habe dort das Problem das das serielle Gerät ununterbrochen Daten sendet und ich jedoch nur komplette Sätze abspeichern muss.

Die Probe sendet mir Sätze in folgendem Format. 

Byte 0 ist immer null
Byte 1 enhält die Satzlänge

Satzlänge + 7 = ein ganzer Satz und dieser interessiert mich

Kann mir vielleicht jmd ein Stichwort oder ähnliches senden, womit und wie ich diesen String so formatiere, wie ich es beschrieben habe ?

Vielen Dank schonmal im vorraus

Lg Simon


Edit: Mir geht es nicht darum das mir jetzt jemand ein fertiges Programm vorlegt, mir würden Stichwörter oder ähnliche Beispiele helfen, über die ich dann auf die Lösung kommen würde.


----------



## SlaterB (18. Jan 2012)

du schreibst zwar von einem gewissen Format, aber auch dass die Daten bereits in diesem Format ankommen,
was willst du da selber noch formatieren? oder möchtest du PARSEN?

lies die bytes in endloser Menge ein und wenn du meinst, dass Zeit dafür ist, dann unterbreche das Einlesen oder arbeite in einem separaten Thread,
dann/ dort schaue die Daten an, die Länge der bytes, hole damit die benötigen x bytes heraus,
kopiere sie in eine neues Array oder was auch immer,

was du dann damit anstellen kannst/ willst/ sollst ist bisher unklar,
sie in einen String zu parsen/ transformieren wäre eine Sache, 
aber nicht so schlau falls du danach wieder die bytes in denselben Format haben willst?
oder brauchst du den String in lesbarer Java-String-Form?


----------



## Gast2 (18. Jan 2012)

Naja, du liest das ganze byteweise ein, schaust dir byte 1 an, und extrahierst dann die nächsten x+7 bytes. Das kannst du alles auf deinem byte[] Array machen. Wenn der Satz ein String ist kannst du dir den String mit 
	
	
	
	





```
new String(satzAlsBytes)
```
 daraus einen String bauen.


----------



## S91sPlayer (18. Jan 2012)

das problem ist nur das das gerät dauerhaft sendet auch wenn mein programm welches eig nur mitliesst noch aus ist, sodass ich mit hoher wahrscheinlichkeit mitten im satz anfange mitzulesen

ich habe nur informationen über das format, aber nicht an welcher stelle er gerade ist

die daten die ich bekomme erhalten eine signatur in etwa so

beispielsignatur|: satz 

diese daten möchte ich dann so in eine datei schreiben, die dann von einem Decoder decodiert und ausgewertet werden


----------



## Gast2 (18. Jan 2012)

> sodass ich mit hoher wahrscheinlichkeit mitten im satz anfange mitzulesen


Dann wartest du einfach bis du die nächste 0x00 bekommst. Dann weißst du dann nen neuer Satz beginnt.


----------

