Krankenversichertenkarte auslesen!

wusaa

Grünschnabel
hallo leute ich hab zur zeit ein projekt zu bewältigen und mir fehlt gerade absolut der gedanke dafür.

ich soll ein programm schreiben das mir bei einstecken der krankenversichertenkarte in die Tastatur (Cherry G80-150 ist die Tastatur) die daten ausspuckt und in eine datenbank speichert.

ich habe schon gegoogelt und leider nichts gefunden. ich habe auch nach beispielen gesucht weil ich mir gedacht habe das hätte manch einer schon mal gemacht aber leider ohne erfolg.
habe hier im board auch schon gesucht aber auch nichts passendes gefunden.

weiss jemand evtl wo ich etwas finden kann wie ein beispiel oder so?
oder hat jemand eine idee die mich weiter bringt?

ich bedanke mich schonmal im voraus für die hilfen.

liebe grüße niko
 
vielen dank ultraflip,

ich werde mir das mal ansehn und hoffe das ich was damit anfangen kann. wenn nicht seh nwir uns wieder hier wenn ich fragen stelle was ich nicht hoffen werde.

lieben gruß niko
 
Hi ultraflip,

also habe mir das tool mal gezogen.
hab auch gesehn wie die demos meine Karte auslesen. Bis dahin auch ok.
Ich würd gern wissen wie ich das in code umsetze?
also da gibt es die Datei WRICC32.exe wenn ich diese ausführe schreibt er mir die Daten die sich auf der KvK befinden in die Datei chipcard.dat.
Diese Daten müssen ja dann wieder vom Programm aus der Datei eingelesen werden und in Variablen gespeichert werden nehm ich an.
Mein Problem ist der Code dabei wie ich diesen schreibe.

mfg Niko und danke im voraus für weitere Hilfen

Ps. may be kann auch jemand anderes mir weiter helfen...
 
Zuletzt bearbeitet:
Hi Leute,

vielen Dank für die Hilfe hat prima geklappt.

Hab da nun eine frage und zwar ob sich dieser code vereinfachen lässt?
Hab den code mal angehängt.
ich meine diese methode 'Thread.sleep(1000); ob man die vereinfachen kann unter anderem?
ich hab das gemacht weil bei jedem Programmstart erst die Wricc32.exe gestartet wird und dann diese in die chipcard.dat schreibt. diese ist ja vorhanden bei jedem neuen Programmstart.
Wenn ich dann eine neue Karte in dieTastatur stecke und das Programm starte dann wirft es mir immer noch die Daten der vorherigen Karte heraus.
Darum verzögere ich diesen Prozess dann klappt das.
Ich würd gern wissen ob man das eleganter lösen kann?
Wenn es sonst noch anregungen zum code gibt höre ich gerne weitere Vorschläge an.

liebe grüße Niko
 

Anhänge

Zuletzt bearbeitet:
Nabend,

mir würde nur einfallen, eventuell mit File.lastmodified() den Zeitpunkt der letzten Änderung herauszuholen, liegt sie länger als 1 Sekunde zurück, dann sind die Daten in der Datei veraltet.

Nun kannst du alle meinetwegen 20ms schauen, ob sich was geändert hat, wenn ja stellst du es halt dar .. Ist zwar auch nicht so ganz sauber, aber viell. ein bisschen besser als die jetzige Lösung und arbeitet fast verzögerungsfrei.

Aber ich bin mir jetzt nicht sicher, ob es da eventuell Probleme mit dem Dateizugriff gibt ..

Gruß teppi
 
Nabend,

ok dann werde ich morgen mal danach schauen denn habe hier gerade keine Tastatur zur Hand um das mal zu testen.
Auf alle fälle besten dank bis hier her.
Gruß Niko
 
Hi leute ich bin es schon wieder,

steh mal wieder auf dem schlauch.
Und zwar würde ich gern die Daten die ich aus der Krankenversichertenkarte rausschreibe in variablen speichern damit ich diese dann weiter verarbeiten kann.
Habe an ein Array oder Vector gedacht. Wenn es besser gehen sollte dann sagt mir das bitte.
Das hier ist die Methode mit der ich die Daten hole und rausschreibe.
Kann mir jemand helfen?

Code:
public void datenHolen()
	{
		try
		{
			FileReader fr = new FileReader("chipcard.dat");
			BufferedReader reader = new BufferedReader(fr);
			
			// warte kurz ab, falls die Datei noch nicht neu geschrieben wurde
			// sonst übernimmt er beim ersten Kartenwechsel nicht die Daten
			try
			{
				Thread.sleep(1000);
			}
			catch (Exception e)
			{
			}
			String str;
			int zaehler = 0;
			//String ist null, wenn Datei am Ende ist:
			while((str = reader.readLine()) != null)
			{
				System.out.print(str.substring(3)+"\n");
				zaehler++;
			}
			
			fr.close();
			reader.close();
		}
		catch(FileNotFoundException e)
		{
			e.printStackTrace();
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
	}
 
Wichtig ist, die innere Struktur der *.dat-Datei zu kennen.

Ist der Aufbau so?:
xyz=78
alpha=66
user=niemand

Dafür gibt's eine elegante Lösung:

Code:
Properties p = new Properties();
p.load(new FileInputStream("chipkarte.dat"));
 
//jetzt stehen alle Angaben drin
 
String user = p.getProperty("user", "-"); //"-" würde zurückgegeben, falls kein Eintrag für "user" vorhanden ist
System.out.println(user);
 
//Manipulation
 
p.setProperty("user", "ich");
 
//speichern
 
p.store(new FileOutputStream("chipkarte.dat"), null);
 
Zurück