package ch.elexis.connect.sysmex;
import gnu.io.SerialPortEvent;
import java.io.IOException;
import java.io.InputStream;
import ch.elexis.core.ui.importer.div.rs232.AbstractConnection;
import ch.elexis.core.ui.util.Log;
public class SysmexConnection extends AbstractConnection {
private static final int STX = 0x02;
private static final int ETX = 0x03;
private static StringBuffer textBuf = new StringBuffer();
Log _elexislog = Log.get("SysmexConnection"); //$NON-NLS-1$
public SysmexConnection(String portName, String port, String settings, ComPortListener l){
super(portName, port, settings, l);
}
/**
* Handles serial event.
*/
public void serialEvent(final int state, final InputStream inputStream, final SerialPortEvent e)
throws IOException{
int data = inputStream.read();
if (data == STX) {
_elexislog.log("Start of stream: " + data + " (STX)", Log.DEBUGMSG); //$NON-NLS-1$ //$NON-NLS-2$
textBuf = new StringBuffer();
data = inputStream.read();
} else {
_elexislog.log("Continue stream..", Log.DEBUGMSG); //$NON-NLS-1$
}
while ((data != -1) && (data != ETX)) {
textBuf.append((char) data);
data = inputStream.read();
}
// Log output
String text = ""; //$NON-NLS-1$
if (data == -1) {
text = " (EOF)"; //$NON-NLS-1$
}
if (data == ETX) {
text = " (ETX)"; //$NON-NLS-1$
}
_elexislog.log("End of stream: " + data + text, Log.DEBUGMSG); //$NON-NLS-1$
if (data == ETX) {
_elexislog.log("buffer: " + textBuf.toString(), Log.DEBUGMSG); //$NON-NLS-1$
this.listener.gotData(this, textBuf.toString().getBytes());
textBuf = new StringBuffer();
}
}
}