Hallo,
In meiner Applikation empfange ich einen Byte Stream via InpuStream.
Die Bytes sind dabei speziell kodiert:
A... Anfang eines data frames (immer 0x20)
L... Länge, gibt an wieviel bytes in diesem data frame folgen
D1-DN... Datenbytes
CS... Ein Byte checksumme
Der Datenstream sieht als z.b. so aus:
Nun habe ich mich gefragt wie ich das am besten (effizient) dekodieren kann.
Ich habe mir gedacht einen BufferedInputStream zu verwenden ist sicher nich verkehrt. Ich stelle mir das dann so vor (Semipseudocode):
Wäre das so okay (üblich)?
Zuerst wollte ich die Methode public int read(byte[] b,int off,int len) und ein Bufferarray verwenden aber da hätte ich das problem dass read nie zuverlässig "len" Anzahl an Bytes zurückliefert.
Ist meine oben beschriebene Vorgehensweise halbwegs effizient oder geht es schneller/performanter oder einfacher?
Grüße
In meiner Applikation empfange ich einen Byte Stream via InpuStream.
Die Bytes sind dabei speziell kodiert:
Code:
A L D1 D2 ...DN CS
A... Anfang eines data frames (immer 0x20)
L... Länge, gibt an wieviel bytes in diesem data frame folgen
D1-DN... Datenbytes
CS... Ein Byte checksumme
Der Datenstream sieht als z.b. so aus:
Code:
0x20 0x05 0x01 0x02 0xD1 0xA1 0xAF
0x20 0x05 0x12 0x03 0x02 0x3A 0xF2
...
...
Ich habe mir gedacht einen BufferedInputStream zu verwenden ist sicher nich verkehrt. Ich stelle mir das dann so vor (Semipseudocode):
PHP:
BufferedInputStream bufIS = new BufferedInputStream(mInStream);
while (true ) {
byte startFrame = bufIS.read();
if(startFrame == 0x20) {
int length = bufIS.read();
byte dataframe[] = new bye[length];
for (int i = 0; i<length i++) {
dateframe[i] = bufIS.read();
}
if(verifyChecksum(bufIS.read()) postEvent(dataframe);
}
}
Wäre das so okay (üblich)?
Zuerst wollte ich die Methode public int read(byte[] b,int off,int len) und ein Bufferarray verwenden aber da hätte ich das problem dass read nie zuverlässig "len" Anzahl an Bytes zurückliefert.
Ist meine oben beschriebene Vorgehensweise halbwegs effizient oder geht es schneller/performanter oder einfacher?
Grüße
Zuletzt bearbeitet: