Problemer med SerielEvent og thread
Hej ExperterJeg har lavet følgende kode:
/*
* CommunicationThread.java
* Created on 1. December 2005, 09:18
* Version 0.01
*
* Tested using TestCommunication.java on 10/12-05
* Done by commenting out:
*
* @author: 05gr551
* @contact: 05gr551@control.aau.dk
*
* Target device:
* Windows XP SP2
*/
package Network;
import java.io.*;
import javax.comm.*;
import Core.Domain;
public class ReceiveThread implements SerialPortEventListener, Runnable{
static BufferedReader reader;
public ReceiveThread() {
Thread receive = new Thread(this);
receive.start();
}
synchronized public void serialEvent(SerialPortEvent event) {
try {
char[] charInteger = new char[2];
reader = new BufferedReader(new InputStreamReader(Domain.communication.inputStream));
if (reader.ready()){
charInteger[0] = (char) reader.read();
charInteger[1] = (char) reader.read();
char commandId = (char)reader.read();
char numBytes = (char) reader.read();
int senderId = 0;
senderId += (int)((((byte)charInteger[0]) << 8) & 0xFF00);
senderId += (int)(((byte)charInteger[1])& 0xFF);
byte[] data = new byte[numBytes];
for(int i=0; i<numBytes; i++){
data[i]=(byte) reader.read();
}
Domain.ingoingMessageHandler.addMessage(new Message(senderId, commandId, data));
}
}
catch (IOException e) {
System.out.println(e);
}
}
public void run() {
}
}
Når der kommer en event ind på comporten registreres det og behandles. Det virker også fint nok og jeg får læst min data og sendt videre. Problemet ligger bare i at når jeg sender en pakke til den
00 00 F1 02 01 01
Beskeden bliver fint behandlet og jeg kan fint sende flere af dem fra et eksternt termnialprogram. Problemet ligger i at hvis jeg sender:
00 00 F1 02 01 01 00 00 F1 02 01 01
Altså sender to beskeder over samlet, så registrere den kun den ene besked. Jeg har været ved at implementere noget thread, men ved heller ikke om det er der problemet ligger. Den opfatter bare det som et samlet event og starter derfor ikke forfra med a tlæse når den første del af beskeden er læst.
