RFID Chip auslesen

nderim

Mitglied
hallo zusammen,

ich sollte für n projekt ein RFID-Gerät auslesen können.
Mit der RXTX (welches die JavaComm API ersetzt hat) habe ich auch eine verbindung zu meinem serialport hergestellt.
das ganze zeug hab ich aus einem beispiel-programm und funktioniert auch wunderbar. Die ID des Chips wird ausgelesen usw...
Das Problem jedoch ist, dass das Programm nur über eine gewisse Zeit hinweg die Ports ausliest (in dem fall 200 sec)
Mein Programm sollte aber von Beginn an den SerialPort überwachen können und auslesen sobald ein Chip über das Lesegerät gezogen wird. Hat jemand einen Vorschlag wie ich dieses Problem gelöst bekomme.

habe den Java-Quelltext mal angefügt dass ihr euch n bild machen könnt was ich da fürn zeugs gemacht hab.
(Dieses Programm liest alle Ports aus... das heißt auch Tastatureingaben usw. jedoch zum testen reicht es vorest)

Danke schon im Voraus nderim.


Java:
package reader;


import java.io.*;



public class Read implements Runnable{


    public static void main(String[] args) {
        Runnable runnable = new Read();
        new Thread(runnable).start();
        System.out.println("Main fertig");
        
    }
    
    InputStream inputStream;
    

    Integer sec = 200;
    public void run() {
        while(sec>0){
            System.out.println("Sekunden verbleiben: " + sec.toString() );
			sec--;
			try {
				Thread.sleep(1000);
			} catch(InterruptedException e) { }
        }
    }
    
    void datenVerfuegbar(){
        try{
            byte [] data  = new byte [150];
            int num;
            while(inputStream.available() > 0){
                num = inputStream.read(data,0,data.length);
                System.out.print("RFID: " + new String(data, 0,num));
            }
        }
        catch (IOException e) {
            System.out.println("Fehler beim Lesen");
            
        }
    }
    

}
 

kama

Top Contributor
Hi,

Das Problem jedoch ist, dass das Programm nur über eine gewisse Zeit hinweg die Ports ausliest (in dem fall 200 sec)
Wenn man sich den Quelltext anschaut ist das nicht verwunderlich....
Da gibt es eine Methode "run", die eine While-Schleife enthält, die mit einer Variablen sec auf 200 gesetzt ist....Ich würde einfach mal versuchen hier einen anderen Wert reinzuschreiben....Weiterhin scheint mir das auch nicht vollständige Quelltext zu sein...

Java:
    Integer sec = 200;
    public void run() {
        while(sec>0){
            System.out.println("Sekunden verbleiben: " + sec.toString() );
			sec--;
			try {
				Thread.sleep(1000);
			} catch(InterruptedException e) { }
        }
    }
    
}
[/QUOTE]

Gruß
Karl Heinz Marbaise
 

nderim

Mitglied
ich weiß dass die schleife abhängig von der variable ist und ich könnte den wert auch auf 10000000 setzen.
jedoch würde mein problem dadurch nicht gelöst werden, weil es immer noch begrenzt ist.
ich habe ja um einen vorschlag gebeten der es nicht von dieser variable abhängig macht sondern die komplette (programm)laufzeit über ausliest.
hier ist der vollständige quelltext des beispielprogrammes das ich im internet gefunden habe.

Java:
import gnu.io.*;
import java.util.*;
import java.io.*;

public class V1_0 implements Runnable{

    public static void main(String[] args) {
                Runnable runnable = new V1_0();
		new Thread(runnable).start();
		System.out.println("main finished");
    }
    
	CommPortIdentifier serialPortId;
	Enumeration enumComm;
	SerialPort serialPort;
	//OutputStream outputStream;
	InputStream inputStream;
	Boolean serialPortGeoeffnet = false;

	int baudrate = 9600;
	int dataBits = SerialPort.DATABITS_8;
	int stopBits = SerialPort.STOPBITS_1;
	int parity = SerialPort.PARITY_NONE;
	String portName = "COM7";
	
	int secondsRuntime = 30;

	public V1_0()
	{
		System.out.println("Konstruktor: EinfachSenden");
	}
	
    public void run()
    {
        Integer secondsRemaining = secondsRuntime;
        if (oeffneSerialPort(portName) != true)
        	return;
        
		while (secondsRemaining > 0) {
			System.out.println("Sekunden verbleiben: " + secondsRemaining.toString() );
			secondsRemaining--;
			try {
				Thread.sleep(1000);
			} catch(InterruptedException e) { }
		}
		schliesseSerialPort();
    	
    }
    
	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 {
			outputStream = serialPort.getOutputStream();
		} catch (IOException e) {
			System.out.println("Keinen Zugriff auf OutputStream");
		}
*/
		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.available() > 0) {
				num = inputStream.read(data, 0, data.length);
				System.out.println("Empfange: "+ new String(data, 0,num));
                        }
		} catch (IOException e) {
			System.out.println("Fehler beim Lesen empfangener Daten");
		}
                
	}

	class serialPortEventListener implements SerialPortEventListener {
		public void serialEvent(SerialPortEvent event) {
			System.out.println("serialPortEventlistener");
			switch (event.getEventType()) {
			case SerialPortEvent.DATA_AVAILABLE:
				serialPortDatenVerfuegbar();
				break;
			case SerialPortEvent.BI:
			case SerialPortEvent.CD:
			case SerialPortEvent.CTS:
			case SerialPortEvent.DSR:
			case SerialPortEvent.FE:
			case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
			case SerialPortEvent.PE:
			case SerialPortEvent.RI:
			default:
			}
		}
        }
        
        
}
 

kama

Top Contributor
Hi,

Dann musst Du die Schleife "Unendlich" machen...
Code:
while (true) do...
...aber hier muss dann eine Abbruch-Bedingung reingemacht werden (CTRL-C oder etwas ähnliches oder bestimmte Daten auf einem anderen Port )...habe ich in Java noch nicht gemacht...

Gruß
Karl Heinz Marbaise
 

HoaX

Top Contributor
Der größte Fehler dürfte erstmal sein, dass du eine Schleife mit InputStream#available() > 0 verwendest anstatt InputStream#read != -1.

Und wenn du dieses dann im Hauptthread ausführst, dann beendet sich das Programm auch erst wenn der Port geschlossen wird.

Was hat das Problem jetzt direkt mit RFID zu tun, so wie es der Titel andeutet?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G RFID Allgemeine Java-Themen 3
L Input/Output Email mit großer Pdf Anhang auslesen? Allgemeine Java-Themen 7
Ernesto95 HTTP Mit JavaScript erzeugte dynamische Webseite auslesen und nach einem Schlüsselwort durchsuchen Allgemeine Java-Themen 6
K Bildschirm auslesen/ Text erkennen Allgemeine Java-Themen 5
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
T INI - Einträge auslesen Allgemeine Java-Themen 6
H Auslesen eines (LDAP-)Attributs in Active Directory Allgemeine Java-Themen 2
O PDF auslesen und verändern, was ist besser iText oder PDFBox ? Allgemeine Java-Themen 9
Robertop Status von Caps- und NumLock auslesen Allgemeine Java-Themen 1
Master3000 Java Konsole über Buffered Reader Zeilenweise auslesen ? Allgemeine Java-Themen 26
G Mac Package auslesen Allgemeine Java-Themen 17
W Versionsnummer auslesen - Regex ist zickig Allgemeine Java-Themen 2
F Junit Test + Cucumber - JSON auslesen und in einem weiteren Schritt nutzen Allgemeine Java-Themen 0
G verschiedene Dokumente auslesen Allgemeine Java-Themen 1
Gaudimagspam CSV-Datei auslesen in Java Allgemeine Java-Themen 7
L Dateien richtig auslesen Allgemeine Java-Themen 6
F WireGuard Status auslesen Allgemeine Java-Themen 3
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
I DOM-Parser - Element im Element an bestimmten Stellen auslesen Allgemeine Java-Themen 1
N Txt Datei auslesen. Allgemeine Java-Themen 5
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
J Information von getSource() Objekt auslesen Allgemeine Java-Themen 1
V EMail, Attachments auslesen von einer Email Allgemeine Java-Themen 0
K Aus String zwei Jahreszahlen auslesen Allgemeine Java-Themen 18
E CSV mit Text und Binärdaten auslesen Allgemeine Java-Themen 7
x46 Webseite in Java auslesen Allgemeine Java-Themen 2
M Html Seite auslesen Allgemeine Java-Themen 16
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
J Fenstergröße eines anderen Programmes auslesen Allgemeine Java-Themen 9
B Cookie auslesen Allgemeine Java-Themen 3
B Input/Output Programm zum Auslesen/Beschreiben von Textdateien, wie Geschwindigkeit erhöhen? Allgemeine Java-Themen 18
J Variablen Mehrere int-variablen in txt abspeichern und danach wieder auslesen Allgemeine Java-Themen 1
J Daten aus Website-Quelltext auslesen Allgemeine Java-Themen 62
J Teil einer URL auslesen Allgemeine Java-Themen 13
denny86 NetBeans Ordnernamen rekursiv auslesen und in Variable verarbeiten Allgemeine Java-Themen 38
C Atfx mit Hilfe von OpenAtfx auslesen Allgemeine Java-Themen 1
C Position von Pixeln in Bilder auslesen Allgemeine Java-Themen 2
M aktive WLAN Teilnehmer auslesen? Allgemeine Java-Themen 6
X JSONObject auslesen und in HashMap hinterlegen Allgemeine Java-Themen 16
S Kann man mit Java auf einem lokalen PC/Mac Benutzergruppen auslesen und Rechte ändern? Allgemeine Java-Themen 11
C Webseite auslesen Allgemeine Java-Themen 3
D Best Practice Gesamten Bildschirminhalt auslesen und Email schicken sobald kein Pixel sich ändert Allgemeine Java-Themen 11
A Erste Schritte Daten aus einer Website auslesen Allgemeine Java-Themen 7
J Bestimmte Zeile aus Textdatei auslesen Allgemeine Java-Themen 18
G Aus JTextField Zahlen auslesen und random generieren Allgemeine Java-Themen 10
M Tastatureingabe von Sondertasten auslesen Allgemeine Java-Themen 6
C Auslesen auslösen über Button-Click Allgemeine Java-Themen 8
M xlsx File auslesen Exception occured Allgemeine Java-Themen 13
U OOP Warum kann ich aus meiner Methode keinen String auslesen Allgemeine Java-Themen 4
J Auslesen Daten Java/HTML Allgemeine Java-Themen 15
4a61766120617274697374 PDF iText Wort Koordinaten auslesen Allgemeine Java-Themen 1
KeVoZ_ Bestimmte Zeile aus Console finden & auslesen Allgemeine Java-Themen 2
T Url aus txt Datei auslesen und öffnen? Allgemeine Java-Themen 4
N Werte aus Hashmap auslesen und übertragen Allgemeine Java-Themen 8
KeVoZ_ Properties mit String auslesen Allgemeine Java-Themen 11
I HTML einer Website auslesen liefert nur head Allgemeine Java-Themen 6
D Aktuell installierte Java Version auslesen unter Windows Allgemeine Java-Themen 5
M Parameter auslesen im Servlet Allgemeine Java-Themen 0
M Input/Output USB Geräteinstanzkennung auslesen Allgemeine Java-Themen 3
W 2D-Grafik Erstellungsdatum JPG direkt aus Header (EXIF) auslesen. Allgemeine Java-Themen 5
M Daten aus anderen Programmen auslesen Allgemeine Java-Themen 2
T Datei Byteweise auslesen Allgemeine Java-Themen 1
T Datentypen MNIST Datenbank auslesen (.gz) Allgemeine Java-Themen 0
T Ini Datei auslesen Allgemeine Java-Themen 3
J Temperatur aus bytes auslesen. Allgemeine Java-Themen 13
I JSoup Class auslesen Allgemeine Java-Themen 1
Bluedaishi Textdateien auslesen Allgemeine Java-Themen 12
T ELM327 OBD2 auslesen Allgemeine Java-Themen 0
D Double aus String auslesen Allgemeine Java-Themen 8
Z Zahlen aus Bild auslesen Allgemeine Java-Themen 1
A interaktives PDF auslesen/auswerten? Allgemeine Java-Themen 0
G Daten aus Website auslesen Allgemeine Java-Themen 7
S CSV Eintrag der nächsten Zeile auslesen funktioniert nicht Allgemeine Java-Themen 8
I Java FX JsonObjekt Children auslesen Allgemeine Java-Themen 23
M RXTX Details auslesen Allgemeine Java-Themen 6
N Input/Output Website Text auslesen und bestimmte Zeilen wiedergeben Allgemeine Java-Themen 4
X HTTP Auslesen der Ergebnisse von einer Webseite und in eine Liste packen Allgemeine Java-Themen 1
J Wav-Datei aus .jar auslesen Allgemeine Java-Themen 7
J Daten aus GUI auslesen und in Objekte umwandeln Allgemeine Java-Themen 6
D CSV Datei auslesen Allgemeine Java-Themen 23
N Werte aus Arrays auslesen funktioniert nicht Allgemeine Java-Themen 5
J Java JSON-Datei aus .Zip auslesen und Download mit Progress Bar Allgemeine Java-Themen 20
V Tooltips mit Java auslesen Allgemeine Java-Themen 1
I Inhalt einer Website auslesen Allgemeine Java-Themen 6
A JTable - CellRange auslesen Allgemeine Java-Themen 2
V 2d-Barcodes mit zxing auslesen Allgemeine Java-Themen 2
A Auslesen einer Datei sowie ausgeben als Liste in App Allgemeine Java-Themen 5
K Website in Programm einbinden und auslesen Allgemeine Java-Themen 2
M Image auslesen Allgemeine Java-Themen 2
S Zahlen aus (String mit zahlen) immer wieder neu auslesen Allgemeine Java-Themen 5
T datei auslesen ind der richtigen reihenfolge Allgemeine Java-Themen 2
A Probleme beim auslesen von Quelltext (HTML) Allgemeine Java-Themen 5
I Methoden Quellcode auslesen (Refelction o.ä.) Allgemeine Java-Themen 5
B Compiler-Fehler NullPointerException beim Auslesen von .lang-Datei Allgemeine Java-Themen 3
A Metadaten von Bildern auslesen und verändern Allgemeine Java-Themen 5
M InputStream auslesen Allgemeine Java-Themen 1
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5
I Best Practice Properties auslesen und splitten (RegExp?) Allgemeine Java-Themen 0

Ähnliche Java Themen

Neue Themen


Oben