Methodenaufruf funktioniert nicht



  • hallo,

    ich bin hier ziemlich neu und mache die ersten JAVA Schritte.
    Habe eine Programm, welche das Beispielprogramm SimpleRead von der seriellen Schnittstelle von SUN benutzen will.
    Dazu habe ich die Methode main umbenannt (in readcomm) und rufe diese dann in meiner Applikation in der main Methode auf.
    Leider funktioniert es nicht, bzw nur die Hälfte . Es gibt keine Fehlermeldung. Meine Erkenntnis ist bis jetzt, daß die Thread- Methode nicht ausgeführt wird.
    Ich denke , daß der Fehler im Konstruktor von SimpleRead liegt.
    Außerdem verstehe ich nicht , warum ein neues Objekt reader von SimpleRead erzeugt wird. wie wird dieses ausgeführt???

    Das Beispielprogramm SimpleRead im Original funktioniert einwandfrei.

    ich hoffe ihr habt paar Tips , die ein Anfänger auch versteht.

    EDIT: das habe nicht ich geschrieben (original Hotblack), sondern mein Vater. Ich hab mal codetags reingemacht, helfen kann ich aber nicht 🙄

    beste Grüße

    Hier noch mein Code:

    in der Klasse DD steht ff.
    ..
    ..
    SimpleRead comport = new SimpleRead();
    ..
    in der main steht ff.
    ..

    DD dat = new DD();
    dat.comport.commread;
    .. 
    
    public  class SimpleRead implements Runnable, SerialPortEventListener {
        static CommPortIdentifier portId;
        static Enumeration	      portList;
        InputStream		      inputStream;
        SerialPort		      serialPort;
        Thread		      readThread;
    
         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 static void readcomm() {
        boolean		      portFound = false;
        String		      defaultPort = "COM1";
    	portList = CommPortIdentifier.getPortIdentifiers();
    	while (portList.hasMoreElements()) {
    	    portId = (CommPortIdentifier) portList.nextElement();
    	    if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                System.out.println("Found port " + portId.getName());
    		   if (portId.getName().equals(defaultPort)) {
    		    System.out.println("Found port: "+defaultPort);
    		    portFound = true;
    		 SimpleRead reader = new SimpleRead();
     		}
    	    }
    	}
    	if (!portFound) {
    	    System.out.println("port " + defaultPort + " not found.");
    	}
        }
    
        public void run() {
    	try {
    	    Thread.sleep(20000);
    	} catch (InterruptedException e) {}
        }
    
        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(numBytes);
    		}
    		System.out.print(new String(readBuffer));
    	    } catch (IOException e) {}
    	    break;
    	}
        }
    }
    


  • Ich habs gefunden


Anmelden zum Antworten