V
valkyrie
Gast
Hallo,
in meinem Projekt sendet ein Mikrocontroller Daten an ein Java-Applet (X-Port). Dabei handelt es sich um Antworten auf Steuerbefehle. Jede dieser Antworten sieht z.B. so aus "COMMIT_C_OKAY\n\r", "GET_CONF_OKAY\n\r".
Wenn ich die Daten nicht puffere, werden die einzelnen Antworten zerhackt und ich kann sie nicht mehr auswerten. Puffere ich zu lang, sind Fragmente von anderen Antworten mit drin und ich kann das ganze wiederrum nicht auswerten.
Ich bräuchte einen Puffer der das "\n\r" erkennt und die Strings bis dahin sendet und dann den Nächsten ausliest.
das Projekt sieht bisher so aus:
Im Moment wird nur ein Befehl ausgewertet. Das Programm funktioniert so eigentlich auch meistens. Aber halt nicht immer.
Mit einem StringBuffer hab ich schon experimentiert, es aber nicht so richtig hinbekommen.
Wär echt super, wenn ihr mir helfen könntet...
in meinem Projekt sendet ein Mikrocontroller Daten an ein Java-Applet (X-Port). Dabei handelt es sich um Antworten auf Steuerbefehle. Jede dieser Antworten sieht z.B. so aus "COMMIT_C_OKAY\n\r", "GET_CONF_OKAY\n\r".
Wenn ich die Daten nicht puffere, werden die einzelnen Antworten zerhackt und ich kann sie nicht mehr auswerten. Puffere ich zu lang, sind Fragmente von anderen Antworten mit drin und ich kann das ganze wiederrum nicht auswerten.
Ich bräuchte einen Puffer der das "\n\r" erkennt und die Strings bis dahin sendet und dann den Nächsten ausliest.
das Projekt sieht bisher so aus:
Java:
public void run()
{
Thread me = Thread.currentThread();
StringBuffer buffer = new StringBuffer();
while (timer == me) {
int i;
try {
Thread.currentThread().sleep(2000);
} catch (InterruptedException e) { }
if ( (gtp != null) && ((i = gtp.available()) > 0) ) {
String received = new String(gtp.receive());
if(received.startsWith("GET_CONF_OKAY_"))
{
String payload = received.substring("GET_CONF_OKAY_".length(), received.length()-2);
String output = "GET_CONF_OKAY_( ";
for(int j = 0; j < payload.length(); j++)
{ //StringUtils.leftPad(, 2, '0')
String temp = Integer.toHexString(payload.charAt(j) & 0xFF);
String pad = "";
if(temp.length() < 2)
{
pad = "0";
}
output += pad + temp + " ";
}
output += ")\n\r";
textArea.append(output); // print output string in text area
textArea.setCaretPosition(textArea.getText().length()); // view always last row in text area
}
// for every uC response of a command, except the GET_CONFIG command
else
{
textArea.append(received); // print received string in text area
textArea.setCaretPosition(textArea.getText().length()); // view always last row in text area
}
}
}
}
Mit einem StringBuffer hab ich schon experimentiert, es aber nicht so richtig hinbekommen.
Wär echt super, wenn ihr mir helfen könntet...