Servus,
kann mir bitte jemand erklären was der this-operator genau bei addEventListener(this) macht?
Müsste hier nicht ein SerialPortEventListener Object stehen anstelle des this-Operator sein, oder geht das nicht direkt mit einem Interface?
Danke
kann mir bitte jemand erklären was der this-operator genau bei addEventListener(this) macht?
Müsste hier nicht ein SerialPortEventListener Object stehen anstelle des this-Operator sein, oder geht das nicht direkt mit einem Interface?
Java:
import java.io.IOException;
import java.io.InputStream;
import javax.comm.CommPortIdentifier;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
public class PortReader implements SerialPortEventListener {
//@SuppressWarnings("unchecked")
// private static Enumeration ports;
//static CommPortIdentifier pID;
private InputStream inStream;
private static SerialPort serPort=null;
public PortReader(CommPortIdentifier pID) throws Exception{
ReaderWindow.getTa().append("Lausche auf Port:"+pID.getName()+"\n");
try{
serPort = (SerialPort) pID.open("PortReader", 2000);
inStream = serPort.getInputStream();
[COLOR="Red"]serPort.addEventListener(this);[/COLOR]
serPort.notifyOnDataAvailable(true);
serPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
}catch(PortInUseException piu){
ReaderWindow.getTa().append("Der Port ist in Benutzung\n");
}
}
public void serialEvent(SerialPortEvent event) {
switch (event.getEventType()) {
case SerialPortEvent.BI:
ReaderWindow.getTa().append("SerialPortEvent.BI occurred\n");
case SerialPortEvent.OE:
ReaderWindow.getTa().append("SerialPortEvent.OE occurred\n");
case SerialPortEvent.FE:
ReaderWindow.getTa().append("SerialPortEvent.FE occurred\n");
case SerialPortEvent.PE:
ReaderWindow.getTa().append("SerialPortEvent.PE occurred\n");
case SerialPortEvent.CD:
ReaderWindow.getTa().append("SerialPortEvent.CD occurred\n");
case SerialPortEvent.CTS:
ReaderWindow.getTa().append("SerialPortEvent.CTS occurred\n");
case SerialPortEvent.DSR:
ReaderWindow.getTa().append("SerialPortEvent.DSR occurred\n");
case SerialPortEvent.RI:
ReaderWindow.getTa().append("SerialPortEvent.RI occurred\n");
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
ReaderWindow.getTa().append("SerialPortEvent.OUTPUT_BUFFER_EMPTY occurred\n");
break;
case SerialPortEvent.DATA_AVAILABLE:
ReaderWindow.getTa().append("SerialPortEvent.DATA_AVAILABLE occurred\n");
byte[] readBuffer = new byte[20];
try {
while (inStream.available() > 0) {
int numBytes = inStream.read(readBuffer);
ReaderWindow.getTa().append("Bytes: "+numBytes+"\n");
}
ReaderWindow.getTa().append(new String(readBuffer));
} catch (IOException ioe) {
ReaderWindow.getTa().append("Exception " + ioe+"\n");
}
break;
}
}
public static SerialPort getSerPort() {
return serPort;
}
public void setSerPort(SerialPort serPort) {
PortReader.serPort = serPort;
}
}
Danke
Zuletzt bearbeitet von einem Moderator: