serielle Schnittstelle

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Hallo,

ich hätte eine Frage zu der seriellen schnittstelle und zwar habe ich eine GUI und mit dieser GUI verbinde ich mich mit einer anderen GUI.
Mein Problem ist jetzt folgendes: damit ich auf meiner GUI noch was machen kann, wenn ich mit der seriellen Schnittstelle verbunden bin, habe ich die Verbindung in eine Run- Methode gegeben. Jetzt implementiere ich das Interface SerialPortEventListener und muss daher die Methode serialEvent überschreiben. Diese Methode soll aber innerhalb der run- Methode stehen, damit meine GUI nicht blockiert wird.

Hat da vielleicht jemand eine Idee, wie ich da elegant lösen könnte, innerhalb der run- Methode die serialEvent- Methode implementieren geht ja nicht.

vielen Dank für die Hilfe!!

lg
Michl

Code:
public class ComListener implements SerialPortEventListener{       
     
       public ComListener() {}
         
//die Methode serialEvent soll in der run- Methode stehen, da sonst meine GUI blockiert wird
  
        public void serialEvent(SerialPortEvent event) {
       
            if(event.getEventType()==SerialPortEvent.DATA_AVAILABLE){         
                String sNachricht = "";

                byte[] readBuffer = new byte[120];
                try {
                    //System.out.println("in SerialEvent");
                    while (ins.available() > 0) {int numBytes = ins.read(readBuffer);}
                    String nachricht = new String(readBuffer);         
                    char c = (char)0;
                    System.out.println("Nachricht: " + sNachricht);
                }
                    catch (IOException e) {System.out.println("Fehler: "+e);
                }     
            }
        } 
    }
 

Rock Lobster

Bekanntes Mitglied
Eigentlich müßte das doch so funktionieren, da der Listener ja zurückgerufen wird, sobald ein Event kommt. Dieses wird kurz ausgegeben, aber danach geht's ja gleich weiter. Da dürfte eigentlich nix blockieren.

Falls doch, müßtest Du vielleicht ein bißchen mehr Code zeigen, damit man verstehen kann, wieso da was blockieren sollte.
 

MQue

Top Contributor
Mein code schaut momentan so wei unten angeführt aus, Ich empange sehr viele Daten und die Methode serialEvent würde dann sehr oft (bis andauern) aufgerufen werden, daher möchte ich die Kommunikation in einem eigenen Thread laufen lassen´. Unten im code habe ich momentan die 2 Methoden "serialEvent" und die "run" - Methode extra.

Vielleicht hättet ihr noch eine Idee, wie ich diese beiden Methoden verbinden könnte oder iwe ich das machen könnte, das während der Kommunikation (die ja fast andauernd statfindet) meine GUI- Oberfläche nicht blockiert.

vielen Dank auf jeden Fall für Eure Hilfe

lg Michl




Code:
public class SerielleSchnittstelle extends Thread implements SerialPortEventListener /* implements SerialPortEventListener */  {
     private Enumeration portList;		    /* Variablen für das Schreiben und Lesen über die serielle Schnittstelle */
     private CommPortIdentifier portId;
     private SerialPort serialPort;
     private OutputStream outs;    
     private InputStream ins;       
     
     public SerielleSchnittstelle()
	{
	try { 
	    portList = CommPortIdentifier.getPortIdentifiers();
	    while (portList.hasMoreElements()) 
		{
		portId = (CommPortIdentifier) portList.nextElement();
		if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) 
		    {
		    if (portId.getName().equals("COM1")) 
			{
			try {serialPort = (SerialPort) portId.open("COM1Application", 5000);} 
			catch (PortInUseException e) {System.out.println("Fehler bei open");}
			try {ins = serialPort.getInputStream();
			     outs = serialPort.getOutputStream();} 
			catch (IOException e) {System.out.println("Fehler bei Output Stream öffnen");}
			serialPort.notifyOnDataAvailable(true);
			try {serialPort.setSerialPortParams(57600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);} 
			catch (UnsupportedCommOperationException e) {System.out.println("Fehler bei der Initialisierung der seriellen Schnittstelle");}   
			}
		    }	    
		}		
	    }
	catch (Exception ex) 
	    {
	    
	    }
	}
     
     public void run()
	{
	try {	    
	    byte[] readBuf = new byte[643];
	    byte[] writeBuf = new byte[643];
	    boolean hasData = true;
            int len = 0;
	    try {
		while (hasData)
		    {
		    System.out.println("Available: " + ins.available());
                    len = ins.read(readBuf);                        //lesen	
                    outs.write("das zu schreibende".getBytes());    //schreiben				
		    }
		} 
	    catch (IOException e) {System.out.println("Fehler beim Lesen: " + e);}
	    } 
	catch (Exception e) {}
	} 
     
     public void serialEvent(SerialPortEvent event) 
        {      
        if(event.getEventType()==SerialPortEvent.DATA_AVAILABLE){         
            String sNachricht = "";
        byte[] readBuffer = new byte[120];
        try {
            while (ins.available() > 0) 
                {
                int numBytes = ins.read(readBuffer);
                }
            String nachricht = new String(readBuffer);         
            char c = (char)0;
            System.out.println("Nachricht: " + sNachricht);
            }
        catch (IOException e) {System.out.println("Fehler: "+e);}     
            }
        }  
 }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Daten über serielle Schnittstelle empfangen Allgemeine Java-Themen 4
Q Selbständig ActionEvent auslösen zum Daten senden über serielle Schnittstelle Allgemeine Java-Themen 7
stroggi Serielle Schnittstelle (jssc) - Flush benötigt? Allgemeine Java-Themen 2
T Input und Outputstream , serielle Schnittstelle Allgemeine Java-Themen 1
S Threads Serielle Schnittstelle mit Listener / Aufrufendes GUI Allgemeine Java-Themen 4
M Serielle Schnittstelle ansteuern - mit Processing Bibliothek Allgemeine Java-Themen 4
I Serielle Schnittstelle Allgemeine Java-Themen 5
N Serielle Schnittstelle / COM-Port auslesen und die empfangenen Daten verarbeiten Allgemeine Java-Themen 1
O Zugriff auf Serielle Schnittstelle - Keine Ports gefunden. Allgemeine Java-Themen 8
G serielle Schnittstelle einlesen Allgemeine Java-Themen 13
D Datenübertragung über serielle Schnittstelle Allgemeine Java-Themen 4
G Problemme mit serielle Schnittstelle Allgemeine Java-Themen 9
E serielle Schnittstelle Allgemeine Java-Themen 6
N Serielle Schnittstelle ansprechen Allgemeine Java-Themen 9
J serielle Schnittstelle unter Linux Allgemeine Java-Themen 3
W Zugriff auf lokale serielle Schnittstelle via Applet Allgemeine Java-Themen 3
A Serielle Schnittstelle | Barcodescan | ohne Tastatur Allgemeine Java-Themen 11
G Zugriff auf serielle Schnittstelle mit Java 1.5.0 Allgemeine Java-Themen 11
J serielle schnittstelle unter linux Allgemeine Java-Themen 3
ms_cikar RS232 Serielle Baudrate automatisch einstellen Allgemeine Java-Themen 1
L Java und Serielle COM Ports Allgemeine Java-Themen 4
R Virtuelle Serielle Schnittstellen mit RXTX Allgemeine Java-Themen 2
F Serielle Kommunikation Allgemeine Java-Themen 20
J javax.comm findet serielle ports nicht Allgemeine Java-Themen 2
L Serielle Kommunikation Allgemeine Java-Themen 6
G Serielle Verbindung zu einem Handy Allgemeine Java-Themen 3
P serielle Schnitttstelle Allgemeine Java-Themen 14
G javax.comm bzw serielle Schhnittstelle? Allgemeine Java-Themen 2
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
Tarrew OpenAPI Schnittstelle - Mehrere Kunden mit unterschiedlichen Zugriffsrechten Allgemeine Java-Themen 2
B Schnittstelle zwischen MySQL und Apache Allgemeine Java-Themen 8
Meeresgott Best Practice Mini REST-Schnittstelle Allgemeine Java-Themen 4
P Schnittstelle java Programm zu Webserver / Browser Allgemeine Java-Themen 2
M Schnittstelle Datanorm Allgemeine Java-Themen 2
H Daten via COM Schnittstelle erhalten Allgemeine Java-Themen 2
I Java - perfekte Schnittstelle für Hacker? Allgemeine Java-Themen 8
M Java-Pawn Schnittstelle ? Allgemeine Java-Themen 0
L COM Schnittstelle in Java programmieren Allgemeine Java-Themen 4
T Schnittstelle zu Bash?! Allgemeine Java-Themen 2
D Aufgabe: Schnittstelle und Proxy implementieren Allgemeine Java-Themen 2
H Interface Generische Schnittstelle (rekusiv) Allgemeine Java-Themen 2
B Schnittstelle von Facebook zu Java(Eclipse) für meine Internetseite Allgemeine Java-Themen 20
U Realisierung einer "Plugin-Schnittstelle": Allgemeine Java-Themen 12
A Input/Output Applet-Zugriff auf PHP-Schnittstelle (externer Server) Allgemeine Java-Themen 22
M Schnittstelle für durchgereichte Interaktionen in Komponentenhierarchie? Allgemeine Java-Themen 3
P Auslesen serieller Schnittstelle - umwandeln von byteArray Allgemeine Java-Themen 3
S Problem mit serieller Schnittstelle Allgemeine Java-Themen 10
M Zugriff auf Parallel-Schnittstelle Allgemeine Java-Themen 2
P Schnittstelle über Webservice SOAP Allgemeine Java-Themen 11
MQue Schnittstelle programmieren Allgemeine Java-Themen 2
H lpt1 schnittstelle Allgemeine Java-Themen 6
M Schnittstelle java.util.Set Allgemeine Java-Themen 9
G Kommunikation mit der seriellen Schnittstelle Allgemeine Java-Themen 6
M Paralle Schnittstelle ansprechen Allgemeine Java-Themen 2
P TCPIP Schnittstelle Allgemeine Java-Themen 2
D Daten aus einer Seriellen Schnittstelle empfangen Allgemeine Java-Themen 22
D HTML Schnittstelle Allgemeine Java-Themen 4
T parallele Schnittstelle auslesen Allgemeine Java-Themen 5
S Problem mit Ansteuerung von serieller Schnittstelle Allgemeine Java-Themen 7
Q Schnittstelle/Abstrakte Klasse schreibt Annotation vor? Allgemeine Java-Themen 4
T Java Schnittstelle Active Directory Allgemeine Java-Themen 5
Q Typecast zwischen Klassen mit implementierter Schnittstelle Allgemeine Java-Themen 4
M RS232 Schnittstelle ansteuern (Floppy durch Laptop ersetzen) Allgemeine Java-Themen 2
Z java->schnittstelle->excel Allgemeine Java-Themen 2
V gezielte Datenbankeinträge über JDBC schnittstelle Allgemeine Java-Themen 10
H javax.comm und Parallele Schnittstelle (PIN für PIN) Allgemeine Java-Themen 7
X Java Schnittstelle zu AIML Allgemeine Java-Themen 2
S String an COM-Schnittstelle senden Allgemeine Java-Themen 6
D Schnittstelle zwischen zwei Klassen? Allgemeine Java-Themen 2
J PS/2-Schnittstelle ansprechen Allgemeine Java-Themen 7
Y Zugriff auf Com-Schnittstelle Allgemeine Java-Themen 5
S Abhören der com-Schnittstelle Allgemeine Java-Themen 3
H Zugriff auf parallele Schnittstelle Allgemeine Java-Themen 4
C Implementieren einer Schnittstelle (Interface), Ausnahmen Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben