Serielle Schnittstelle / COM-Port auslesen und die empfangenen Daten verarbeiten

nderim

Mitglied
Hallo Leute,

Ich habe ein Programm, welches die ID eines RFID-Chips über USB ausliest.
Mein USB-Gerät ist am COM7-Port angeschlossen.
Ich habe eine Main-Class (JFrame - "Fenster") und noch eine weitere Klasse zur Ansteuerung des Serialports.
Das Auslesen funktioniert soweit ganz gut. Die Chips werden gelesen und die Daten kommen auch an.
In der JFrame-Class hab ich bis jetzt noch nichts besonderes drin stehen, bis auf die Erzeugung des Objekts p1 (Port_Ansteuerung)

Problem:
Mein Programm soll nach dem empfangen dieser 11-stelligen ID automatisch die ID (zum Test ob es funktioniert) in der TextArea (ta1) ausgeben.

Mein String RFID soll die ID beinhalten. Dieser String soll dann ausgegeben werden.
Ich denke es ist ein simpler Fehler aber ich komm einfach nicht darauf.

Ich hab mir schon überlegt, dass das JFrame vielleicht nicht die Main-class sein sollte sondern eine neue Klasse erstellt werden sollte. Dann eine Beziehung zwischen Klasse "Port_Ansteuerung" und "Fenster" herstellen.

Könnte es so funktionieren?

bzw.: Habt ihr andere Vorschläge?

Gruß nderim

P.S.: Quellcode

JFrame-Klasse "Fenster"

Java:
public class Fenster extends javax.swing.JFrame {

    Port_Ansteuerung p1 = new Port_Ansteuerung("COM7");
    
    public Fenster() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        lb1 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        ta1 = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        lb1.setText("Testfenster");

        ta1.setColumns(20);
        ta1.setRows(5);
        jScrollPane1.setViewportView(ta1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(26, 26, 26)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 372, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(231, 231, 231)
                        .addComponent(lb1)))
                .addContainerGap(76, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(19, 19, 19)
                .addComponent(lb1)
                .addGap(85, 85, 85)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 236, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(124, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>


    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Fenster().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lb1;
    private javax.swing.JTextArea ta1;
    // End of variables declaration
}




Klasse Port_Ansteuerung
Java:
import gnu.io.*;

import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.TooManyListenersException;


public class Port_Ansteuerung {


	CommPortIdentifier serialPortId;
	Enumeration enumComm;
	SerialPort serialPort;
	InputStream inputStream;
	Boolean serialPortGeoeffnet = false;

	int baudrate = 9600;
	int dataBits = SerialPort.DATABITS_8;
	int stopBits = SerialPort.STOPBITS_1;
	int parity = SerialPort.PARITY_NONE;

        String RFID = "";
        
	public Port_Ansteuerung(String port)
	{
            oeffneSerialPort(port);
            System.out.println("Serial-Port wurde geöffnet");
	}
	
	boolean oeffneSerialPort(String portName)
	{
		Boolean foundPort = false;
		if (serialPortGeoeffnet != false) {
			System.out.println("Serialport bereits geöffnet");
			return false;
		}
		System.out.println("Öffne Serialport");
		enumComm = CommPortIdentifier.getPortIdentifiers();
		while(enumComm.hasMoreElements()) {
			serialPortId = (CommPortIdentifier) enumComm.nextElement();
			if (portName.contentEquals(serialPortId.getName())) {
				foundPort = true;
				break;
			}
		}
		if (foundPort != true) {
			System.out.println("Serialport nicht gefunden: " + portName);
			return false;
		}
		try {
			serialPort = (SerialPort) serialPortId.open("Öffnen und Senden", 500);
		} catch (PortInUseException e) {
			System.out.println("Port belegt");
		}

		try {
			inputStream = serialPort.getInputStream();
		} catch (IOException e) {
			System.out.println("Keinen Zugriff auf InputStream");
		}
		try {
			serialPort.addEventListener(new serialPortEventListener());
		} catch (TooManyListenersException e) {
			System.out.println("TooManyListenersException für Serialport");
		}
		serialPort.notifyOnDataAvailable(true);
		try {
			serialPort.setSerialPortParams(baudrate, dataBits, stopBits, parity);
		} catch(UnsupportedCommOperationException e) {
			System.out.println("Konnte Schnittstellen-Paramter nicht setzen");
		}
		
		serialPortGeoeffnet = true;
		return true;
	}

	void schliesseSerialPort()
	{
		if ( serialPortGeoeffnet == true) {
			System.out.println("Schließe Serialport");
			serialPort.close();
			serialPortGeoeffnet = false;
		} else {
			System.out.println("Serialport bereits geschlossen");
		}
	}
	
	void serialPortDatenVerfuegbar() {
		try {
			byte[] data = new byte[150];
			int num;
			while(inputStream.read() > -1) {
				num = inputStream.read(data, 0, data.length);
				System.out.println("Empfange: "+ new String(data, 0, num));
                                RFID = RFID + new String(data, 0, num);
                        }
		} catch (IOException e) {
			System.out.println("Fehler beim Lesen empfangener Daten");
		}
	}
        
        public String getRFID(){
            return RFID;
        }
        
	class serialPortEventListener implements SerialPortEventListener {
		public void serialEvent(SerialPortEvent event) {
			System.out.println("serialPortEventlistener");
			if (SerialPortEvent.DATA_AVAILABLE > 0);{
				serialPortDatenVerfuegbar();        
                        }
		}
	}	
}

Die getRFID()-Methode hab ich testweise eingbaut
 
Zuletzt bearbeitet:

nderim

Mitglied
Hallo,

also ich habe noch etwas daran rumprobiert und es hat wie ich es im ersten Beitrag schon erahnt habe funktioniert.
Einfach eine "Startklasse" als Mainclass erstellen Beziehung zwischen "Port_Ansteuerung" und "Fenster" herstellen. Dann eine Methode in Klasse "Fenster" einprogrammieren:

Java:
public void (String ID){
     ta1.setText(ID);
}

und das Problem ist gelöst.

Ich entschuldige mich für das unnötig erstellte Thema, aber vielleicht hilft es dem ein oder anderen ja doch noch.

Gruß nderim
 
Ä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
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
MQue serielle Schnittstelle Allgemeine Java-Themen 2
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
Master3000 Java Port reset (Socket) Allgemeine Java-Themen 6
G Datei senden via Xmodem an Serial-Port Allgemeine Java-Themen 35
J Serial Port Daten empfangen Allgemeine Java-Themen 5
M den richtigen COM-Port finden Allgemeine Java-Themen 1
O Serial Port Daten als Tastaturanschlag senden Allgemeine Java-Themen 0
B Problem mit Virtuellem COM Port Allgemeine Java-Themen 1
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
A Serial Port abhören auf RX und TX Allgemeine Java-Themen 7
S RxTx - langsame Port suche Allgemeine Java-Themen 3
N Port festlegen für JXMapViewer Allgemeine Java-Themen 3
G java applet und com-port Allgemeine Java-Themen 7
J Port verwendung Allgemeine Java-Themen 13
J Receive eines Hex-Bytes über COM-Port Allgemeine Java-Themen 4
J String an Port senden Allgemeine Java-Themen 2
F Java <--> Serieller Port Allgemeine Java-Themen 3
M Richtigen COM-Port bestimmen Allgemeine Java-Themen 14
M Port-Tunneln Allgemeine Java-Themen 23
H Server Threaded machen. Port-Problem Frage Allgemeine Java-Themen 2
ARadauer Welches Programm hört auf Port? Allgemeine Java-Themen 3
B welchen port muss ich angeben? Allgemeine Java-Themen 11
P Linux port Allgemeine Java-Themen 4
K Java einen Port überwachen lassen Allgemeine Java-Themen 5
G Bibliothek für Port? Allgemeine Java-Themen 2
S Usb Port ansprechen Allgemeine Java-Themen 7
B EventListener zu einem COM Port hinzufügen Allgemeine Java-Themen 10
J COM-Port unter Windows nutzen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben