Prozess stopen

Sergunja

Grünschnabel
Hallo
ich habe mal eine Frage, wie stopt man ein Prozess bzw. ihn anhaltet. Ich will Daten von Seriellen Stittstellen auswerten.Man schreibt daten auf RS232 und dann warten bis was zürück kommt, denn amsonsten ist es zu schnell, standig komm Fehler java.lang.NullPointerException
Code:
public static void main(String[] args) {
	try {
		portID = CommPortIdentifier.getPortIdentifier("COM1");
		serss = (SerialPort) portID.open("mein_programm", 2000);
			MeinProbe f = new MeinProbe();
			f.write();
			//  AN DIESE STELLE  ?
			telegram.auswerten(feld);
		} catch (Exception exc) {
			System.out.println("Fehler :" + exc);
		}
	}
	
	public MeinProbe() {
		
		try {
			ins = serss.getInputStream();
			out = serss.getOutputStream();
		} catch (Exception e) {
			System.out.println("Fehler: " + e);
		}
		try {
                                     serss.addEventListener(this);
		} catch (TooManyListenersException e) {}
                                     serss.notifyOnDataAvailable(true);
		try {
		                   serss.setSerialPortParams(9600,
				SerialPort.DATABITS_8,
				SerialPort.STOPBITS_1,
				SerialPort.PARITY_NONE);
		} catch (UnsupportedCommOperationException e) {
		}
	}

	public void write() {
		try {
	                   out.write(daten);
			      
                                     } catch (IOException e1) {}
	}

	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:
	            
	        	try {
	        	byte[] readBuffer = new byte[ins.available()];
	            
	                while (ins.available() > 0) {
	                	
	                	int numBytes = ins.read(readBuffer);
	                	feld= new int[numBytes];
	                	for(int i=0;i<readBuffer.length;i++){
			        feld[i]=(readBuffer[i]&0xff);
							                                          //System.out.print(feld[i]);	
			}
						
		}
		} catch (IOException e) {
			System.out.println("Fehler: " + e);
		}
		break;
		}
}
 
Du könntest mit zwei Threads arbeiten.

Code:
try {
  object.wait(); //der Thread, der für die Programmausführung ist
}
catch (Exception e) {}
 
//...
 
object.notify(); //der Thread, der das Ergebnis des Schnittstellentests bringt

Näheres zu wait() und notify() steht auch gut erklärt im Javabuch (http://download.javabuch.de/hjp3html.zip).

CU schnuffie :)
 
Zurück