Hallo zusammen,
ich habe ein kleines Programm gebastelt, das über die RS232 Schnittstelle Ausgaben machen kann. Das Programm wird über eine GUI mit Buttons bedient. Das meiste klappt, Problem ist nur, dass die Prozessorauslastung mit Programmstart auf 100% geht und da bleibt, obwohl das Programm eigentlich nur etwas zu tun hat, wenn ein Button gedrückt wird. Leider komm ich nicht hinter das Problem. Kann mir einer helfen?
Die main methode:
ich habe ein kleines Programm gebastelt, das über die RS232 Schnittstelle Ausgaben machen kann. Das Programm wird über eine GUI mit Buttons bedient. Das meiste klappt, Problem ist nur, dass die Prozessorauslastung mit Programmstart auf 100% geht und da bleibt, obwohl das Programm eigentlich nur etwas zu tun hat, wenn ein Button gedrückt wird. Leider komm ich nicht hinter das Problem. Kann mir einer helfen?
Die main methode:
Code:
public static void main(String[] args) {
new SteuerungsSoftware1("SteuerungsSoftware1");
boolean portFound = false;
String defaultPort = "COM4";
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()){
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL){
if (portId.getName().equals(defaultPort)){
// JOptionPane.showMessageDialog(null, defaultPort + " gefunden", "", JOptionPane.INFORMATION_MESSAGE);
System.out.println(defaultPort + " gefunden");
portFound = true;
try{
serialPort =(SerialPort) portId.open("SteuerungsSoftware1", 2000);
}catch (PortInUseException e){
JOptionPane.showMessageDialog(null, defaultPort + " wird von anderem Programm genutzt", "", JOptionPane.INFORMATION_MESSAGE);
System.out.println(defaultPort + " wird von anderem Programm genutzt");
continue;
}
try{
outputStream = serialPort.getOutputStream();
}catch (IOException e) {
}
try{
serialPort.setSerialPortParams(57600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
}catch (UnsupportedCommOperationException e) {
}
try{
serialPort.notifyOnOutputEmpty(true);
} catch (Exception e){
System.out.println("Error setting event notification");
System.out.println(e.toString());
System.exit(-1);
}
try {
serialPort.addEventListener(null);
//serialPort.addEventListener(new SerialListener(this));
System.out.println("Action listener was added!");
} catch (TooManyListenersException tmle){
System.out.println("Exception "+tmle);
}
int result = JOptionPane.showConfirmDialog(null, "Referenzfahrt jetzt starten?", "", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
if (result == 0) { //Yes
ausgeben("1OR\r\n");
}
}
}
}
if (!portFound){
System.out.println(defaultPort + " nicht gefunden");
JOptionPane.showMessageDialog(null, defaultPort + " nicht gefunden", "", JOptionPane.INFORMATION_MESSAGE);
}
// Hier wird das Programm beendet und die serielle Schnittstelle geschlossen
while (!(exit)){
}
serialPort.close();
try{
Process p = Runtime.getRuntime().exec("wmic PROCESS WHERE (name=java.exe)DELETE"); //beendet alle java Prozesse
}catch (IOException e) {
System.out.println("Problem");
}
System.out.println("Bis bald");
System.exit(1);
}
Danke für die Hilfe und Grüße...