MessageBox öffnet sich zwei mal beim auslesen des COM3 ports ?

Code46

Erfahrenes Mitglied
Hi Leute,

Ich lese den COM3 Port aus und lasse das denn im JOptionPane.showMessageBox anzeigen.Es wird ein 10 Zifferige nummer ausgegeben vom COM Port.
Jedoch zeigt er mir den byteArray in 2 fenstern an. Die ersten 2 ziffern in einem fenster und die restlichen 8 ziffern in einem anderem nachdem ich OK gedrückt habe.

Ich wandle es auch um von ByteToHex. Köönte das umwandeln, das problem sein ?

Hier mein Code:

Code:
import java.io.*;
import java.util.*;
import gnu.io.*;
import javax.swing.JOptionPane;

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("COM3")) {
			//                if (portId.getName().equals("/dev/term/a")) {
                    SimpleRead reader = new SimpleRead();
                }
            }
        }
    }

    public SimpleRead() {
        try {
            serialPort = (SerialPort) portId.open("SimpleReadApp", 9600);
        } catch (PortInUseException e) {System.out.println(e);}
        try {
            inputStream = serialPort.getInputStream();
        } catch (IOException e) {System.out.println(e);}
	try {
            serialPort.addEventListener(this);
	} catch (TooManyListenersException e) {System.out.println(e);}
        serialPort.notifyOnDataAvailable(true);
        try {
            serialPort.setSerialPortParams(9600,
                SerialPort.DATABITS_8,
                SerialPort.STOPBITS_1,
                SerialPort.PARITY_NONE);
        } catch (UnsupportedCommOperationException e) {System.out.println(e);}
        readThread = new Thread(this);
        readThread.start();
    }

    public void run() {
        try {
            Thread.sleep(20000);
        } catch (InterruptedException e) {System.out.println(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[10];
            String ret = "";

            try {
                while (inputStream.available() > 0) {
                    int numBytes = inputStream.read(readBuffer);
                    bytesToHexString(readBuffer);
                    JOptionPane.showMessageDialog(null, new String(readBuffer));
                }              

            } catch (IOException e) {System.out.println(e);}
            break;
        }
    }
        public static String bytesToHexString(byte[] bytes) {  
        StringBuilder sb = new StringBuilder(bytes.length);  
      
        Formatter formatter = new Formatter(sb);  
        for (byte b : bytes) {  
            formatter.format("%02x", b);  
        }  
      
        return sb.toString();  
    }  
}



Würde mich freuen wenn ihr mir weiter helfen könntet.

Danke
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück