Hallo Java-Experten!
Ich habe ein Mikrocontrollerboard, das mir mit 57600Baud Daten byteweise über die serielle Schnittstelle sendet. Die serielle Kommunikation mit Java Comm funktioniert bisher problemlos bei 9600Baud. Sobald ich auf 57600Baud gehe, kommt es zu Fehlern.
Die Signale auf dem Kabel sind absolut sauber. Ich vermute, meine Implementierung mittels InputStream ist unter Umständen nicht schnell genug.
Nach allem, was ich bisher gefunden habe, soll es beim häufigen lesen einzelner Bytes günstiger sein, einen InputStream in einem BufferdInputStream zu kapseln. Also habe ich folgendes gemacht:
FileWriter datafile;
try {
datafile = new FileWriter("recordedData.txt");
} catch (Exception e) {}
InputStream inputdata;
BufferedInputStream buffereddata = BufferedInputstream(inputdata);
Im SerialPortEventListener steht folgendes:
public void serialEvent(SerialPortEvent event) {
try {
i=buffer.read();
} catch (IOException e) {}
try {
datafile.append(Integer.toString(i));
datafile.append("\r\n");
} catch (IOException e) {}
}
Leider funktioniert das nicht. Es werden keine Daten in datafile geschrieben. Wenn ich es ohne ungepuffert versuche, werden zumindest, wenn auch teilweise falsche Daten, geschrieben.
Was mache ich falsch und gibt es einen besseren und saubereren Weg, Daten, die asynchron über die serielle Schnittstelle kommen, in ein File zu schreiben?
Vielen Dank für eure Hilfe!
Gruß
Michael