Hallo,
Ich bestize einen Stromzähler der alle 3-4 Sekunden eine SML-Protokoll aussendet.
Das SML-Protokoll hat 396 Bytes und ich lese den Binärstrom über einen COM-Port
mit der Klasse BufferedInputStream ein.
Mein Problem ist das ich nie komplett die 396 Bytes in den readBuffer bekomme sonder nur 8-56 Bytes gespeichert werden.
Mache ich irgendetwas falsch, oder gibt es eine anderen möglichkeit den Datenstrom komplett auf
einmal einzulesen?
Speichert die seriele Schnittstelle die Daten in irgendeinen Buffer auf den ich dann zugreifen kann?
Viel Dank im voraus
Ich bestize einen Stromzähler der alle 3-4 Sekunden eine SML-Protokoll aussendet.
Das SML-Protokoll hat 396 Bytes und ich lese den Binärstrom über einen COM-Port
mit der Klasse BufferedInputStream ein.
Mein Problem ist das ich nie komplett die 396 Bytes in den readBuffer bekomme sonder nur 8-56 Bytes gespeichert werden.
Mache ich irgendetwas falsch, oder gibt es eine anderen möglichkeit den Datenstrom komplett auf
einmal einzulesen?
Speichert die seriele Schnittstelle die Daten in irgendeinen Buffer auf den ich dann zugreifen kann?
Java:
public void serialEvent(SerialPortEvent event) {
//getEventType() gibt eine Int-Wert zurück
switch(event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE:
byte[] readBuffer = new byte[396];
BufferedInputStream bufferinputstream = new BufferedInputStream(inputStream,396);
try {
numBytes=bufferinputstream.read(readBuffer,0,396)+numBytes;
for (int i=0; i<readBuffer.length; i++)
System.out.println(i + " : " + readBuffer[i]);
System.out.printf("%d\n",numBytes);
System.out.printf("fertig");
serialPort1.close();
}
catch (IOException e)
{
System.out.print(new String(readBuffer));
}
break;
}
}
Zuletzt bearbeitet von einem Moderator: