A
Anfänger
Gast
hallo,
ich rätsle seit einiger zeit was der Code Thread .sleep usw. für einen Einfluß in den nachff. Code haben soll.
Ich kann zwar merken , dass der Thead nach 20s endet , aber sehe keinen Sinn für die Schnittstelle.
Die Schnittstelle empfängt auch während und nach dem Thread. Welcher Teil ganz genau schläft, und welcher Teil läuft weiter ??
was passiert mit Events ?
In meiner appl. ist alles möglich, d.h. das Programm reagiert auchauf Buttons oder MenüEinträge.
der Code ist von Sun als Beispiel für Comm API gedacht.
ich rätsle seit einiger zeit was der Code Thread .sleep usw. für einen Einfluß in den nachff. Code haben soll.
Ich kann zwar merken , dass der Thead nach 20s endet , aber sehe keinen Sinn für die Schnittstelle.
Die Schnittstelle empfängt auch während und nach dem Thread. Welcher Teil ganz genau schläft, und welcher Teil läuft weiter ??
was passiert mit Events ?
In meiner appl. ist alles möglich, d.h. das Programm reagiert auchauf Buttons oder MenüEinträge.
der Code ist von Sun als Beispiel für Comm API gedacht.
Code:
import java.io.*;
import java.util.*;
import javax.comm.*;
public class SimpleRead implements Runnable, SerialPortEventListener {
static CommPortIdentifier portId;
static Enumeration portList;
InputStream inputStream;
SerialPort serialPort;
Thread readThread;
public static void main(String[] args) {
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
if (portId.getName().equals("COM1")) {
// if (portId.getName().equals("/dev/term/a")) {
SimpleRead reader = new SimpleRead();
}
}
}
}
public SimpleRead() {
try {
serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
} catch (PortInUseException e) {}
try {
inputStream = serialPort.getInputStream();
} catch (IOException e) {}
try {
serialPort.addEventListener(this);
} catch (TooManyListenersException e) {}
serialPort.notifyOnDataAvailable(true);
try {
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {}
readThread = new Thread(this);
readThread.start();
}
public void run() {
try {
System.out.println("Start der Schlafzeit");
Thread.sleep(20000);
} catch (InterruptedException e) {}
System.out.println("20 sek vorbeit");
}
public void serialEvent(SerialPortEvent event) {
switch(event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE:
byte[] readBuffer = new byte[20];
try {
while (inputStream.available() > 0) {
int numBytes = inputStream.read(readBuffer);
}
System.out.print(new String(readBuffer));
} catch (IOException e) {}
break;
}
}
}