Serial Port Daten empfangen

Jochim

Mitglied
Guten Abend,

ich programmiere in laufe eines Schulprojektes ein Warenwirtschaftssystem und verwende dabei auch einen RFID-Kartenleser, den ich über einen Serial-Port anschließe.

In einem Beispielprogramm werden die Daten mit der folgenden Methode empfangen:
Java:
void serialPortDatenVerfuegbar() {
		try {
			byte[] data = new byte[150];
			int num;
			while(inputStream.available() > 0) {
				num = inputStream.read(data, 0, data.length);
				System.out.println("Empfange: "+ new String(data, 0, num));
				empfangen.append(new String(data, 0, num));
			}
		} catch (IOException e) {
			System.out.println("Fehler beim Lesen empfangener Daten");
		}
	}
In der Ausgabe in der Konsole werden lediglich nur Bruchstücke angezeigt, aber in der TextArea sind dann die vollständigen Codes zu sehen.

Nun möchte ich die Daten aber in einem Array speichern. Nun habe ich wieder das Problem, dass ich in dem Array auch nur Bruchstücke angezeigt bekomme. Hier einmal mein Code:
Java:
public void serialPortDatenVerfuegbar(){
        empfang =new String[150];
        try {
            byte[] data = new byte[150];
            int num;
            int i=0;
            while(inputStream.available() > 0) {
                num = inputStream.read(data, 0, data.length);
                empfang[i]=new String(data, 0, num);
                System.out.println("Empfang: "+empfang[i]);
                i++;
            }
        } catch (IOException e) {
            System.out.println("Fehler beim Lesen empfangener Daten");
        }
        //rs=dh.searchRFID((String)cb_database.getSelectedItem(), empfang);
        //tbl_database.setModel(DbUtils.resultSetToTableModel(rs));
    }

Freundliche Grüße

Damien Jochim
 

AntiMuffin

Bekanntes Mitglied
Oh ok, ich habe das ganze jetzt mal mit Strings nachgebildet:
Java:
public static void main (String[] args){
	
		InputStream inputStream = new ByteArrayInputStream("012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789".getBytes());
		
	
       String[]  empfang =new String[150];
        try {
            byte[] data = new byte[10];
            int num;
            int i=0;
            while(inputStream.available() > 0) {
                num = inputStream.read(data, 0, data.length);
                empfang[i]=new String(data, 0, num);
                System.out.println("Empfang: "+empfang[i]);
                i++;
            }
			for(int j = 0 ; j < i ; j++){
                System.out.print(empfang[j]);
			}
			
        } catch (IOException e) {
            System.out.println("Fehler beim Lesen empfangener Daten");
        }
        //rs=dh.searchRFID((String)cb_database.getSelectedItem(), empfang);
        //tbl_database.setModel(DbUtils.resultSetToTableModel(rs));
        
		
	}
Ich lese jetzt halt nur mit einem Buffer von 10, also immer von 0-9!
Und dabei folgende Ausgabe bekommen:
Code:
Empfang: 0123456789
Empfang: 0123456789
Empfang: 0123456789
Empfang: 0123456789
Empfang: 0123456789
Empfang: 0123456789
Empfang: 0123456789
Empfang: 0123456789
Empfang: 0123456789
Empfang: 0123456789
Empfang: 0123456789
Empfang: 0123456789
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
Ich schätze dein Problem liegt evtl. an der größe vom Buffer. Somit bekommst du immer Bruchstücke wie "Hallo mein na" , "me ist AntiM", "uffin". Aber da du ja das ganze in der TextBox wieder zusammen fügst wird aus den Teilen wieder "Hallo mein name ist AntiMuffin".
 

AntiMuffin

Bekanntes Mitglied
Hier noch ein Lösungsansatz für dein Problem:
- Trenne jede Nachricht mit einem bestimmten zeichen bsp. ";"
- Benutze zum Beispiel den Scanner und keine InputStream!!!

Hier ein kleines Beispiel mit verschiedenen Nachrichten:
Java:
public static void main (String[] args){
	
		
		
		Scanner input = new Scanner("msg1;nachricht2;text3;"); //Bei dir new Scanner (inputStream);
		input.useDelimiter(";"); // ; als trennzeichen
       String[]  empfang =new String[150];
        
            
            
            int i=0;
            while(input.hasNext()) {
               
                empfang[i]= input.next();
                System.out.println("Empfang: "+empfang[i]);
                i++;
            }
			for(int j = 0 ; j < i ; j++){
                System.out.println(empfang[j]);
			}
			
       
		
	}

Nun ist immer eine Nachricht in einem String drinnen ! :bae:
P.S. Benutze eine ArrayList wenn es nicht immer 150 Elemente sind!

Gruß,
AntiMuffin
 
Zuletzt bearbeitet:

Jochim

Mitglied
Hallo,
ich entschuldige mich, dass es die Antwort ein bisschen verzögert kommt. Ich konnte das Problem inzwischen selbst beheben. Es lag nicht an der Byte Größe, sondern an einem einfachen Fehler im Ablauf. Ich habe die Daten in der while-Schleife immer neu hinzugefügt und nicht ergänzt.

Außerdem habe ich es jetzt auch zu einer ArrayList geändert, so wie es Vorgeschlagen wurde.

Hier meine aktuelle Funktion:
Java:
public void serialPortDatenVerfuegbar(){
        try {
            byte[] data = new byte[10];
            int num;
            while(inputStream.available() > 0) {
                num = inputStream.read(data, 0, data.length);
                input+=new String(data, 0, num);
            }
            System.out.println("Empfang: "+input);
        } catch (IOException e) {
            System.out.println("Fehler beim Lesen empfangener Daten");
        }
        empfang.add(input);
        //rs=dh.searchRFID((String)cb_database.getSelectedItem(), empfang);
        //tbl_database.setModel(DbUtils.resultSetToTableModel(rs));
    }

Nun habe ich aber noch eine Frage: Ich möchte die Daten verwenden, um Produkte in meiner Datenbank zu suchen.
Kann ich, wenn ich mit dem PreparedStatement arbeite, Auch, per setString(), mehrere Daten einem Parameter zuweisen?

Gruß

Jochim
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Serial Port Daten als Tastaturanschlag senden Allgemeine Java-Themen 0
G Datei senden via Xmodem an Serial-Port Allgemeine Java-Themen 35
A Serial Port abhören auf RX und TX Allgemeine Java-Themen 7
K serial-port Allgemeine Java-Themen 5
A Serial Port Probleme Allgemeine Java-Themen 4
A serial Version UID field of type long Allgemeine Java-Themen 5
Master3000 Java Port reset (Socket) Allgemeine Java-Themen 6
M den richtigen COM-Port finden Allgemeine Java-Themen 1
B Problem mit Virtuellem COM Port Allgemeine Java-Themen 1
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
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
N Serielle Schnittstelle / COM-Port auslesen und die empfangenen Daten verarbeiten Allgemeine Java-Themen 1
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
Z Parallel Port, setzen der einzelnen Pins Allgemeine Java-Themen 4
E Konflikte bei lokaler Adresse/Port Allgemeine Java-Themen 2
S Com-Port auslesen.Probleme Allgemeine Java-Themen 2
E Seriellen Port unter Windows ansprechen Allgemeine Java-Themen 16
C Kommunikation mit USB Port Allgemeine Java-Themen 1
I Mehrere Klassen mit den selben Daten Allgemeine Java-Themen 5
padde479 Collections Daten in Dreiecksform Allgemeine Java-Themen 13
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
A Hartgecodete Daten auslagern Allgemeine Java-Themen 4
F Laden von bestimmten Daten aus TAR Archiv Allgemeine Java-Themen 23
S Webservices für binäre Daten? Allgemeine Java-Themen 5
OnDemand Daten in RAM zwischenspeichern oder lieber aus DB holen? Allgemeine Java-Themen 24
J Daten über serielle Schnittstelle empfangen Allgemeine Java-Themen 4
J JSON Daten von einer Webseite erhalten Allgemeine Java-Themen 2
S Entities aus XML - Daten. Allgemeine Java-Themen 1
M Schnelleres Speichern von XML-Daten über URLConnection Allgemeine Java-Themen 4
kodela Klasse mit "gezipten" Daten Allgemeine Java-Themen 6
M Daten aus MatLab Datei lesen Allgemeine Java-Themen 8
N Daten einer JCoTable in JTextArea anzeigen Allgemeine Java-Themen 7
kodela Klassen Klasse "vergisst" ihre Daten Allgemeine Java-Themen 2
C Daten für Klassifikationsverfahren gewinnen Allgemeine Java-Themen 6
J Daten von Quelltext Allgemeine Java-Themen 5
K OOP Daten addieren sich bei GUI-Eingabe Allgemeine Java-Themen 10
J Jasper Reports - Daten vom Hoster Allgemeine Java-Themen 2
kodela Daten während Laufzeit zugriffsbereit Allgemeine Java-Themen 15
J Millisekunde zwischen 2 Daten Allgemeine Java-Themen 6
Q Selbständig ActionEvent auslösen zum Daten senden über serielle Schnittstelle Allgemeine Java-Themen 7
J Daten aus Website-Quelltext auslesen Allgemeine Java-Themen 62
R Android Daten online senden Allgemeine Java-Themen 0
P Datenbank-MiniGUI fügt keine Daten ein Allgemeine Java-Themen 4
K Gespeicherte Daten von einer LinkedList auf vier LinkedList verteilen Allgemeine Java-Themen 6
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
A Erste Schritte Daten aus einer Website auslesen Allgemeine Java-Themen 7
OnDemand Desktop-Applikation schreiben, wie daten persistent? Allgemeine Java-Themen 9
S Erste Schritte Fehlender Gedanken-Ansatz bei Interpretation von Daten Allgemeine Java-Themen 1
J Auslesen Daten Java/HTML Allgemeine Java-Themen 15
K Große Mengen an Daten speichern Allgemeine Java-Themen 9
D Daten in MySQL-Datenbank schreiben Allgemeine Java-Themen 13
A Swing FileWriter schreibt keine Daten in Datei Allgemeine Java-Themen 13
M Daten aus anderen Programmen auslesen Allgemeine Java-Themen 2
D Best Practice Login-Daten: Wie am besten abrufen? Allgemeine Java-Themen 6
L Best Practice Log Dateien analysieren und eventuell passende Daten am Chart darstellen Allgemeine Java-Themen 1
H Daten via COM Schnittstelle erhalten Allgemeine Java-Themen 2
J Daten persistent speichern Allgemeine Java-Themen 14
S Allgemeine parallelisierte Loesung um Daten im Hintergrund zu laden..? Allgemeine Java-Themen 6
L Daten ohne Datenbank richtig abspeichern Allgemeine Java-Themen 5
G Daten aus Website auslesen Allgemeine Java-Themen 7
J Daten aus GUI auslesen und in Objekte umwandeln Allgemeine Java-Themen 6
N Zeitabstand zwischen 2 Daten(Mehrzahl von Datum) Allgemeine Java-Themen 3
T Input/Output Daten in eine Datei schreiben Allgemeine Java-Themen 4
Z daten bindung Allgemeine Java-Themen 1
A Datentypen Gregorian Calendar - 2 Daten sind gleich?? Allgemeine Java-Themen 3
L Vergleich-Xml-Daten Allgemeine Java-Themen 3
vandread Daten verschlüsseln mit Java oder Datenbank Allgemeine Java-Themen 15
A Daten in Formularen/Vorlagen erstellen und ausdrucken Allgemeine Java-Themen 3
C HtmlUnit Daten einer Tabelle bekommen ohne, dass diese eine ID aufweist Allgemeine Java-Themen 1
Todesbote Excel Blattschutz aufheben und Daten einfügen Allgemeine Java-Themen 3
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
OnDemand PC identifizieren / Daten auslesen Allgemeine Java-Themen 15
G Combobox füllen mit daten aus einer Tabelle Allgemeine Java-Themen 4
J Maven .war enthält veraltete Daten Allgemeine Java-Themen 3
N Daten aus Jar laden Allgemeine Java-Themen 10
P Datentypen String-Daten zu Byte-Zahlen konvertieren - Komme nicht weiter nach vielem versuchen :-/ Allgemeine Java-Themen 7
K Input/Output Daten speichern / laden Allgemeine Java-Themen 2
M Best Practice: Daten aufnehmen-speichern-bereitstellen Allgemeine Java-Themen 8
T Daten effizient verwalten Allgemeine Java-Themen 4
B JTable eigene Daten Add Methode Allgemeine Java-Themen 2
S OOP Apache Commons Math - Verwendung von Genetics - Wie werden Daten in Chromosomen gespeichert? Allgemeine Java-Themen 4
C Daten über URL an PHP verschicken Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben