QR-Code über Tastatur einlesen

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Scarmo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 188
Registriert: Di, 24. Jul 2007 9:17

QR-Code über Tastatur einlesen

Beitrag von Scarmo »

Hallo zusammen

Ich muss einen QR-Code einlesen, welcher von einem Scanner in die Tastatur-Queue eingespeist wird. Mein Ansatz war wie folgt:

Code: Alles auswählen

lEnde := false
cQR_Code := ""
do while !lEnde
     nEvent := AppEvent( @mp1, @mp2, @oXbp, 0)
     if nEvent == xbeP_Keyboard
          if mp1 == 27   // Escape-Taste
               lEnde := true
          else
               cQR_Code := cQR_Code +chr(mp1)
          endif
          if at("EPD",upper(cQR_Code)) >0
               lEnde := true
          endif
    endif
enddo
Das klappt zwar, aber irgendwie überzeugt mich der Code nicht und es dünkt mich zu langsam... Gibt es eine bessere Variante?

Danke und Gruss
Marco
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: QR-Code über Tastatur einlesen

Beitrag von Marcus Herz »

Hallo Marco

Im Prinzip richtig. Ich löse das allerdings im Keyboard des SLE auf und nicht in der App Schleife (du hast ja Xclass im Einsatz?). Dadurch ist es schnell

Code: Alles auswählen

::Scan	:xkeyboard		:= {|n| KB_Scanner(self, n)}
==============================================================================*/
FUNC KB_Scanner(oSelf, mp1)
	LOCAL nEvent 	:= xbeP_Keyboard
	LOCAL cScan		:= ""
	LOCAL lOk		:= false
	LOCAL mp2		:= NIL
	LOCAL oXbp  	:= NIL

	if mp1 = snStartStop
		DO WHILE nEvent == xbeP_Keyboard
   		nEvent := AppEvent( @mp1, @mp2, @oXbp, 0)
#ifdef DEBUG_SCAN
			debugout(Event(nEvent, {xbeM_Motion}), nEvent, mp1, mp2, oXbp)
#endif
			if nEvent == xbeP_Keyboard
				if mp1 = snStartStop
					lOk	:= true
					exit
				ENDIF
				cScan	+= chr(mp1)
			else
#ifdef DEBUG_SCAN
			debugout(Event(nEvent, {xbeM_Motion}), nEvent, mp1, mp2, oXbp)
#endif
   		endif
		ENDDO
		if lOk
			clear typeahead
			::scan:setdata(cScan)
		endif
	endif
RETURN lOk
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: QR-Code über Tastatur einlesen

Beitrag von adrian »

Falls es nicht nur QR ist, habe einen etwas anderen Ansatz: (Thema QR-Rechnung)

Code: Alles auswählen

	@ DSSLE ::sleSuchLief	PICTURE "@K!"  VALID {|oSle| IF(::Suchen(oSLE),::SetFocus(::sleRDatum),.F.)}
Ich habe ein Suchfeld für Kreditoren und in der Funktion "Suchen" werte ich aus was kommt.

Daher, Alphanumerisch oder Numerisch = Suchen in der Lieferanten-Datenbank, wenn es mit "<QRCH>" anfängt wird das XML entsprechend eingelesen, der Kreditor über die QR-IBAN gesucht und falls vorhanden alles relevante angezeigt, damit der Kunde nur noch das Datum und Konto ausfüllen muss.

Adrian
es Grüessli

Adrian
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: QR-Code über Tastatur einlesen

Beitrag von Marcus Herz »

Adrian hat recht.
Eigentlich muss du gar nichts machen, weil der Scanner ja in den Tastaturpuffer schreibt. Wenn die einzulesenden Zeichen genauso lang sind wie die Länge des SLE, wird automatisch die Validierung aufgerufen, Ich mach das mit dem überschriebenen Keyboard nur, um das QR Ende zuerkennen und dann das SLE zu verlassen, damit PostValidate ausgelöst wird. Dann ist es egal, ob mit der Hand und Enter erfasst oder mit Scanner gelesen wird.
Gerade QR Codes können beliebige Längen haben
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: QR-Code über Tastatur einlesen

Beitrag von adrian »

Ich habe hier einfach ein SLE verwendet mit einem GROSSEM Tatsturbuffer.

Die meisten QR-Scanner kann man so einrichten, dass Sie automatisch ein Enter auslösen. Beim PayEye-Leser in der Schweiz habe ich dies dem Support gemeldet (da war es eben nicht möglich) nun haben Sie ein Script angepasst und der Kunde kann meine Firma als Script auswählen, so wird der QR-Code eingelesen, automatisch ein Enter ausgelöst und ich dadurch mein "Suchen" ausgeführt.

Adrian
es Grüessli

Adrian
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: QR-Code über Tastatur einlesen

Beitrag von ramses »

Es gibt Lesegeräte die in das Clipboard schreiben und dann Tastendrücke auslösen können.
Wir verwenden eines das schreibt den QR-Code Inhalt in das Clipboard und löst F8 aus.
Im Programm kann dann auf F8 reagiert und das Clibboard ausgelesen und verarbeitet werden.

Zudem ist dies die einzige wirklich funktionierende Möglichkeit die EIngabe in einen Virtuellen PC einzubringen und vorallem ist dies so unabhängig vom gerade aktivierten SLE und sehr viel schneller als über die Tastatur möglich.

Bei dem von Ardrian erwähnten PayEye ist dies sehr einfach möglich und auch selbst weitere eigene Aktionen und Wünsche und Auswahlnamen einzubauen.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Scarmo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 188
Registriert: Di, 24. Jul 2007 9:17

Re: QR-Code über Tastatur einlesen

Beitrag von Scarmo »

Vielen Dank für die Antworten. Ich werde mal schauen, ob Adrians Lösung auch für uns praktikabel ist. Zudem muss ich mal schauen, ob wir unsere Scanner auch dahingehend konfigurieren können, den Scan direkt im Clipboard abzulegen (was vermutlich deutlich schneller ist statt den Weg über die Tastatur-Queue).

Gruss
Marco
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: QR-Code über Tastatur einlesen

Beitrag von ramses »

den Scan direkt im Clipboard abzulegen (was vermutlich deutlich schneller ist statt den Weg über die Tastatur-Queue)
Nicht nur deutlich schneller sondern Blitzartig!
Uns ist es nicht gelungen den QR-Code Inhalt über den Keyboard Buffer fehlerfrei in eine Remotedesktop Sitzung (TS) einzulesen. Wir fanden nur die Clipboard Lösung Problemlos.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: QR-Code über Tastatur einlesen

Beitrag von Koverhage »

ich benutze den
2D Barcode Scanner Albasca MK-5600 Datamatrix QR-Codes USB (4260170610126)
und habe keine Probleme damit
Gruß
Klaus
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: QR-Code über Tastatur einlesen

Beitrag von ramses »

Bei dem erwähnte QR-Code handelt es sich um einen grössen QR Code mit grösserem Dateninhalt.
Der QR-Code muss mit Level M Korrektur mit 46mm Seitenlänge gedruckt werden und kann bis 997 Zeichen enthalten.

Er wird im automatisierten Zahlungsverkehr verwendet und die meisten Banken bieten dazu das Lesegerät PayEye von Crealogix an.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: QR-Code über Tastatur einlesen

Beitrag von Muecke »

Hallo zusammen

Für einen Qr Scanner für die Schweiz(Zahlungsverkehr)
habe ich diese Adresse

Dative
1462 Yvonand

Die passen dir den Scanner auf deinen Wunsch an.
Beim Scann kannst du über den Tastaturpuffer den String auslesen.

Schöne Grüsse
Thomas
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: QR-Code über Tastatur einlesen

Beitrag von ramses »

Leider nützt dir momentan ein reiner QR-Code Leser eigentlich noch nicht allzuviel. Während der übergangszeit müssen QR-Code und die VESR-Codierzeile gelesen werden können. Dies ist meiners Wissens zur Zeit nur mit dem PayEye möglich. Damit ist es momentan am einfachsten eine Universelle Lösung zu bauen die jetzt und nach der Übergangszeit ohne Anpassung läuft.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: QR-Code über Tastatur einlesen

Beitrag von Muecke »

Ja das stimmt, wenn man VESR noch nicht hat.

Schöne Grüsse
Thomas
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: QR-Code über Tastatur einlesen

Beitrag von ramses »

Hallo Thomas

auch wenn mann VESR bereits hat geht es doch hauptsächlich darum dem Kunden ein einheitliches Arbeiten zu ermöglichen und das Programm so zu gestalten dass er einfach nur den entsprechenden Beleg Scannen kann (egal welcher Art) und das Programm den Rest, spricht die benötigten Eingabefelder anzeigt und z.T automatisch befüllt. Auch mit VESR lässt sich anhand Teilnehmernummer und den ersten 6 Stellen der Referenz meist in den bereits bezahlten Posten alle Angaben finden.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: QR-Code über Tastatur einlesen

Beitrag von Muecke »

Hallo Carlo

Da gebe ich dir recht.

Schöne Grüsse
Thomas
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: QR-Code über Tastatur einlesen

Beitrag von Herbert »

Denkt daran, dass ein QR-Codeleser nur dann Sinn macht, wenn sehr viele Codes eingelesen werden müssen. Andernfalls empfehle ich, mit Handy-Apps (entweder selbstprogrammiert oder eines der vielen bestehenden Programme) den Code zu interpretieren und die simple Text-Antwortdatei in eure Programm zurückzusenden.
Dass man nur den Vesr-Teil braucht, ja, aber nur bedingt sinnvoll, da auch sehr die Informationsfelder geliefert werden (Betreff-Hinweise) und die Adressen zur tieferen Verfikation.
Wir haben dieses System bei uns so implementiert und der Transfer in die Desktop-Programme klappt gut.

Abgesehen davon, ist es auch möglich, einen QR-Code mittels Interpretation auch am PC (aus z.B. .PDF oder .TIF) zu entschlüsseln. Die Erfahrung zeigt aber, dass dies momentan doch fehleranfällig und deshalb noch nicht sehr empfehlenswert ist.
Grüsse Herbert
Immer in Bewegung...
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: QR-Code über Tastatur einlesen

Beitrag von ramses »

Hallo Herbert

nach Ablauf der Übergangsfrist hat jede eingehende Rechnungen einen QR-Code Einzahlungsschein. Natürlich ist dieses System so aufgebaut dass die Daten auch eingetippt werden können.
Das VESR System ist ein völlig anderes System es stammt ursprünglich aus den 70er Jahren und besteht lediglich aus einer Codierzeile die das automatische Verarbeiten der Zahlungen ermöglicht. Adressen / Betreff Hinweise wurden in diesem System nicht übermittelt.

Ein besonderes Detail im QR-Code ist hier die QR-IBAN (5.Zeichen von vorn == 3) diese muss den Benutzer zwingen die 27 stellige Referenznummer zu erfassen. Ohne diese Nummer ist die Zahlung fehlerhaft und wird nicht verarbeitet also keine überweisung durchgeführt.

Sicher das einlesen der QR-Codes klappt auch über Handy-Apps. Es ist recht einfach z.B. mit xb2net und JS Code eine Web-App zu bauen die den QR-Code liest und sendet. Auch Handy-Apps gibt es einige die den QR-Code an eine Adresse senden können.

Der Einsatzbereich des QR-Code ist das einlesen von sensiblen Rechnungsdaten also Adressen, Beträgen und Kontonummen an die Geld gesandt wird. Ausser bei selbständigen oder in Kleinbetrieben ist die Verwendung von Handys in der Buchhaltung nicht vorgesehen oder meist sogar strikte verboten oder in einigen Betrieben müssen die Handys in den Garderobeschränken deponiert sein.

Die andere Frage ist ob aus Sicht des Datenschutzes die Verwendung privater Geräte zur Erfassung von sensiblen Firmendaten überhaupt zulässig ist.
Insbesonders weil einige der QR-Leseprogramme Handy-Apps die gelesenen Daten auch an den Hersteller der App senden.........
Valar Morghulis

Gruss Carlo
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: QR-Code über Tastatur einlesen

Beitrag von Marcus Herz »

Hallo
Ich hab auch einen Schweizer Kunden und das Anforderungsprofil für den QR Code auf dem Tisch liegen.
Aber eine andere Frage an die Schweizer:
Ich drucke da auch einen UBS- BESR Schein, ist VESR noch was anderes oder nur ein Sprachfehler?
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: QR-Code über Tastatur einlesen

Beitrag von Herbert »

...die Verwendung privater Geräte zur Erfassung von sensiblen Firmendaten...
Wie kommst du auf private Handy als Gerät? Ich spreche von Handy, von denen es genug davon gibt, die keiner mehr verwendet und so eingesetzt werden können aber im Büro bleiben und nicht privat genutzt werden. Ich finde es kompletten Abriss, wenn Anbieter im vierstelligen Bereich Geräte anbieten, um simple QR-Codes zu lesen.
...einige der QR-Leseprogramme Handy-Apps die gelesenen Daten auch an den Hersteller der App senden...
Genau deshalb erstellen wir die App selber...
Es ist recht einfach z.B. mit xb2net und JS Code eine Web-App zu bauen die den QR-Code liest und sendet
Ja, muss aber nicht unbedingt so aufwändig gehen. Es reicht wenn du einen ftp in einen Bereich des Firmenservers machst und von dort die Daten abfragst. Auch hier, nur wenn weniger Daten gebraucht werden.
...Ein besonderes Detail im QR-Code ist hier die QR-IBAN...
Ich spreche nicht von der QR-IBAN, das ist die Identifikation des Erstellers.
Es gibt bekanntlich mehrere Arten von QR. Wir sprechen hier vordergründig vom QR mit Referenzzeile. Die Referenzzeile entspricht annähernd der Codierzeile des Vesrs. Daher meine Bemerkung dazu. Das Datenschema mit seinen gut 30 Linien als Antwortdatei enthält einfachmehr Informationen als nur die eine Linie. Daher macht es Sinn, diese Datei als Ganzes zu verwenden.
Grüsse Herbert
Immer in Bewegung...
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: QR-Code über Tastatur einlesen

Beitrag von ramses »

Für das alte Verfahren werden 2 Abkürzungen verwendet die das selbe beschreiben:

VESR = Verfahren für Einzahlungsscheine mit Referenznummer
BESR = Bank Einzahlungsscheine mit Referenznummer

entworfen hat das System ursprünglich die Post als VESR.


Handy-Recycling eine gute Idee. Auf die sind wir noch nicht gekommen.

Den QR Leser "PayEye" bekommst du in der Kabelgebundenen Ausführung für knapp 200 Euro......
Die Referenzzeile entspricht annähernd der Codierzeile des Vesrs.
Wenn man es genau nimmt nicht.

Die Codierzeile enthält Betrag, Referenznummer (16 oder 27 Stellen) und Teilnehmernummer (5 oder 9 Stellig)
Die Referenznummer ist neu genau 27 Stellen. Wobei die ersten 6 Stellen von den Banken bestimmt werden.(Nötig für Bankinterne Sortierung für CAMT.054 Zahlungeingangsdateien)

Als Variante gibts noch die sog. Kreditorenfreferenz mit der ist aber keine sichere Durchgehende Verarbeitung möglich.

Weitere Infos finden sich unter:
https://www.six-group.com/dam/download/ ... ill-de.pdf
Valar Morghulis

Gruss Carlo
Antworten