 |
Softpicks.Net Deutsch Software Forum Deutsch
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Anmeldedatum: 01.01.1970 Beiträge: 312655
|
Verfasst am: Mo Feb 05, 2007 2:45 pm Titel: Change-Ereignis / Magnetkartenleser |
|
|
Hallo,
>
> Dim Rdr As SU
> Set Rdr = New SU
>
> 'Zieh an dieser Stelle mal eine Karte durch den Reader.
>
> Debug.Print SU.GetJ1S2Data
Muss natuerlich
Debug.Print Rdr.GetJ1S2Data
heissen.
Gruss - Ingrid
.
|
|
| Nach oben |
|
 |
Jürgen Biallas
Anmeldedatum: 01.01.1970 Beiträge: 70
|
Verfasst am: Mo Feb 05, 2007 3:04 pm Titel: Change-Ereignis / Magnetkartenleser |
|
|
Hallo Peter,
"Peter Doering" <nospam [at] doering.org> schrieb im Newsbeitrag
news:52oql8F1pk6jbU1 [at] mid.individual.net...
> Hallo,
>
> Jürgen Biallas wrote:
> > "Peter Doering" ...
> >>
> >> Ich denke, den Return brauchst du nicht, wenn du damit arbeitest. Um
damit
> >> arbeiten zu koennen, solltest du jetzt noch den Klassennamen
rausfinden,
> >> ein Objekt referenzieren und spielen:
> >>
> >> Dim Rdr As <Klassenname>
> >> Set Rdr = New <Klassenname>
> >
> > das wird ja jetzt richtig spannend. Der Klassenname ist SU. Und auf
> > entsprechende Eingabe Deines Code-Schnipsels in eine Funktion spricht
Access
> > auch an. Aber trotzdem brauche ich noch Deine Hilfe, denn ich habe mit
> > Klassen noch nicht (bewusst) gearbeitet. Wie "spiele" ich denn jetzt
damit?
>
> So richtig helfen werde ich nicht koennen, weil ich die OCX einfach nicht
> kenne. Und die Herstellerseite ... naja.
>
> Du musst einfach nur im Code SU. eingeben und die Member der Klasse werden
> im Intellisense angezeigt. Du kannst auch folgende Zeilen schrittweise
> ausfuehren und dich rantasten:
>
> Dim Rdr As SU
> Set Rdr = New SU
>
> 'Zieh an dieser Stelle mal eine Karte durch den Reader.
>
> Debug.Print SU.GetJ1S2Data
> usw.
>
> Gruss - Peter
>
> --
> Ich beantworte keine Fragen per Email.
> Mitglied im http://www.dbdev.org
> FAQ: http://www.donkarl.com
ich muss leider weg. Aber ein erster Versuch bruingt keine verwertbaren
Ergebnisse; entweder kryptische Zeichen, Fehlermeldungen oder 0/falsch.
Gruß, Jürgen
.
|
|
| Nach oben |
|
 |
Jürgen Biallas
Anmeldedatum: 01.01.1970 Beiträge: 70
|
Verfasst am: Di Feb 06, 2007 1:03 am Titel: Change-Ereignis / Magnetkartenleser |
|
|
Hallo Oliver,
"Oliver Straub" <oliver.straub_NoS [at] web.de> schrieb im Newsbeitrag
news:%23XzsDySSHHA.3440 [at] TK2MSFTNGP03.phx.gbl...
> Hallo Jürgen,
>
> gegen den Timer ist aber nichts einzuwenden. Wenn es Dir nicht gefällt,
> warum machst Du dann nicht den Tipp vom Karl mit dem Sendkeys ?
>
> Es ist doch gut möglich, dass auf den Karten nicht der richtige
> Satzabschluss drauf ist. Aus diesem Grund erkennt das Gerät nicht, dass es
> ein Return schicken soll. Falls das daran liegt, dass die verwendeten
Karten
> eigentlich für ein anders System sind, und Du also die richtig codierten
> Karten noch bekommst, mühst Du Dich hier sinnlos ab.
>
> Was steht den eigentlich im Gerätemanager für ein Treiber für den Leser.
Den
> müsstest Du doch da finden. Irgendwie muss doch die Tastatursimulation
> abschaltbar sein. Dann kannst du das ocx benutzen.
>
> set su= new su.application (?)
> su.Connect
> Spur1=su.GetJ1S2Data
> us.Disconnect
>
tut mir leid, aber ich komme erst jetzt dazu zu antworten. Fange ich mal
mit dem Leichtesten an. Im Gerätemanager wird der Leser als HID-Tastatur
erkannt. Treiber sind kbdclass.sys und kbdhid.sys. Dann wird's aber schon
schwerer. Mein Versuch, den auf der CD (das ist eine handbeschriebene Kopie
von dem Verkäufer - ich habe schon Zweifel, ob die überhaupt ok ist)
angegebenen Treiber zu installieren, scheitert absolut. Windows sagt immer,
dass auf der angegebenen Datei keine Hardwareinformationen enthalten sind.
Das ist möglicherweise Ursache dafür, dass sich die Software (u.a. eine
Demo-Software für die Verwendung des ocx mit VBA) nicht mit dem Gerät
verbinden kann. Und so sind alle Versuche, das ocx einzubinden, zum
Scheitern verurteilt, weil das Gerät nicht erkannt wird. Alle ocx-Elemente
setzen zum Funktionieren das "Connect" voraus - und das schlägt fehl.
Den Timer benutze ich schon. Das Ganze funktioniert jetzt wie folgt:
Das Formular, das die Magnetkarteneingabe checken und später geschlossen
werden soll, erhält beim Öffnen den Focus auf einem bestimmten Feld. Beim
Durchziehen der Magnetkarte tritt das Change-Ereignis in diesem Feld ein
Private Sub ID_Change()
StartTimer (2) 'wird unten aufgerufen
'Dann Abarbeitung verschiedener Prozeduren
docmd.close acForm, "Dieses_Formular"
End
End Sub
Function StartTimer(Pause As Long)
'Pause nach Magnetkarteneingabe; erforderlich zur fehlerfreien Funktion
Dim Start, Ende, Dauer
Start = Timer
Do While Timer < Start + Pause
DoEvents
Loop
Ende = Timer ' Ende festlegen.
Dauer = Ende - Start ' Gesamtdauer berechnen.
End Function
Ich brauche also nicht mehr das "Sendkeys", sondern kann das Formular auch
mit Close schließen. Den Timer brauche ich, damit das Change-Ereignis die
gesamte Eingabe abwartet und das "End" verhindert Wiederholungen. Ich weiß
nicht, ob das so gut organisiert ist, auf jeden Fall funktioniert es vorerst
einwandfrei, wobei man sehen muss, ob es sich im Belegungssystem auf dem
Tennisplatz auch bewährt oder auf Dauer dann doch eine Hardwarelösung
gefunden werden muss.
Also, ein unmittelbarer Handlungsbedarf besteht nicht mehr, aber trotzdem
geht mir das Fehlen der Verbindung zwischen Hardware und mitgelieferter
Software erheblich gegen den Strich.
Vielen Dank für Deine Unterstützung.
Gruß, Jürgen
.
|
|
| Nach oben |
|
 |
Jürgen Biallas
Anmeldedatum: 01.01.1970 Beiträge: 70
|
Verfasst am: Di Feb 06, 2007 1:08 am Titel: Change-Ereignis / Magnetkartenleser |
|
|
Hallo Oliver,
"Oliver Straub" <oliver.straub_NoS [at] web.de> schrieb im Newsbeitrag
news:eEQnm5SSHHA.3500 [at] TK2MSFTNGP05.phx.gbl...
> Hallo Jürgen,
>
> gibt's da denn Konstanten für die Methode QueryReaderState?
> Könnte so gehen:
> ...
> su.connect
> su.read
> while su.QueryReaderState<>suReady: DoEvents: wend
> sSpur1=su.GetJ1S2Data
> su.Disconnect
>
> Gruss
> Oliver
keine Konstanten bei den SU-elementen gefunden. Jeder Code scheitert, weil
er das Connect voraussetzt und das funktioniert nicht (s. ausführliche
Antwort zu Deinem letzten Beitrag).
Gruß, Jürgen
.
|
|
| Nach oben |
|
 |
Jürgen Biallas
Anmeldedatum: 01.01.1970 Beiträge: 70
|
Verfasst am: Di Feb 06, 2007 10:45 am Titel: Change-Ereignis / Magnetkartenleser |
|
|
Hallo Sascha,
"Sascha Trowitzsch" <ng [at] moss-soft.de> schrieb im Newsbeitrag
news:eHCQHNYSHHA.1228 [at] TK2MSFTNGP06.phx.gbl...
>
> Allerdings! Wenn ich mir die Seite von transmac so anschaue... bei denen
> würde ich niemals was kaufen.
> Keine Docs, keine Treiberdownloads, fast Null Information.
> Wenn deren Demo und Treiber nicht zu installieren sind, dann wende dich
doch
> mal an die Firma direkt?! Evtl. mit einem Hinweis auf diesen ellenlangen
> Thread. Vielleich kommen sie dann auf die Idee, ihre Seite mal etwas
> aufzupeppen.
>
> Gruß, Sascha
>
also, gekauft hat mein Tennisfreund bei einer noch anderen Firma (grossherr
components, Berlin - www.grossherr.com) , bei der überhaupt keine
Informationen abrufbar sind. Inzwischen sind wir uns einig, dass das wegen
des fehlenden Supports ein Fehlkauf war.
Zur Thread-Größe: da bin ich auch wirklich überrascht. Aber es bestätigt
meine Einschätzung, dass in diese Newsgroup wirklich echt geholfen wird und
sich die Helfenden auch in schwierigen Fragen Mühe geben. In Verbindung mit
der exzellenten FAQ von Karl Donabaur finde ich sie absolut hervorragend.
Gruß, Jürgen
.
|
|
| Nach oben |
|
 |
Jürgen Biallas
Anmeldedatum: 01.01.1970 Beiträge: 70
|
Verfasst am: Di Feb 06, 2007 5:31 pm Titel: Change-Ereignis / Magnetkartenleser |
|
|
Hallo Oliver,
"Oliver Straub" <oliver.straub_NoS [at] web.de> schrieb im Newsbeitrag
news:ueg7hFeSHHA.2256 [at] TK2MSFTNGP02.phx.gbl...
> Hallo Jürgen,
> das hatte ich mir aber anders vorgestellt.
> Eigentlich wäre es schon einmal interessant, wie lange jetzt der String
ist,
> der auf den Karten gespeichert ist. Endlos lange, ist ja doch mehr ein
> Freiraum, bei dem sich jeder was anderes vorstellt. Es ist einfach
wichtig,
> ob alle Karten die selbe Anzahl von Zeichen auf der Spur gespeichert
haben.
> Wenn das so wäre, müsstest Du nur mitzählen und nach dem letzten Zeichen,
> Deine Folgeoperationen starten.
> Jedes Mal wenn Du ein Zeichen in ein Textfeld eingibst, wird das Change
> Ereignis ausgelöst. Bei Dir müsste das bedeuten, dass Du zig Mal Deine
> Timer-Schleife aufrufst. Wenn nach dem letzten Zeichen, die 2 Sekunden rum
> sind, sind natürlich auch bei alle anderen Schleifen die Bedingungen
> erfüllt, sodass diese beendet werden, aber das kann trotzdem nicht der
> richtige Weg sein.
>
> Du brauchst eine Private Variable im Formular.
>
> Private AnzZeichen as integer
>
> Im Change Ereignis schreibst Du einen If-Block:
>
> if len(me.kartendaten.text)=stdMinSpurLen then
> me.timerintervall=500
> endif
>
> Dann wird nach 500 ms diese Prozedur gestartet:
>
> Private Sub Form_Timer()
> me.timerintervall=0
>
> if len(me.kartendaten.text)<>AnzZeichen then
> AnzZeichen=len(me.kartendaten.text)
> me.timerintervall=100
> else
> Deine Prozeduren
> docmd.close acform, me.name
> endif
>
> End Sub
>
> Wenn eigentlich anzunehmen ist, dass alle Zeichen von der Spur übertragen
> wurden, wird der Zeitgeberintervall auf eine halbe Sekunde eingestellt.
Dann
> wird mit einem Delay von dieser halben Sekunde die Bei Zeitgeber
> Ereignisprozedur aufgerufen. Dort setzt man immer erst den
> Zeitgeberintervall auf 0, damit die Prozedur nicht doppelt aufgerufen
werden
> kann. Dann merkt sich das Programm erst mal die momentane Länge des
> eingelesenen String und setzt den TimerInterval erneut, um nach 100
> Millisekunden noch mal zu prüfen, ob das Einlesen, Anzunehmenderweise,
> beendet ist. Wenn also beim zweiten Aufruf die Länge von
me.kartendaten.text
> unverändert ist, wird davon ausgegangen, dass die Karte ausgelesen wurde,
> und nun die Folgeoperationen ausgeführt werden sollen.
>
> Dann kannst Du noch in einem KeyDown-Event des Formulars ebenfalls
> schreiben:
> if keycode=27 then
> me.timerinterval=500
> keycode=0
> endif
>
> So hast Du auch noch die Möglichkeit den ganzen Lesevorgang händisch mit
der
> ESC-Taste abzubrechen. (Da sollten dann aber kein ASC 27 Zeichen auf der
> Kartenspur vorhanden sein.)
mit Deinem "das hatte ich mir aber anders vorgestellt" hast Du mich aber
erwischt. Leider ist es so, dass ich als "Angelernter" ohne entsprechende
Anlaufstation mir vieles selbst bastele und dabei auch oft das Gefühl habe:
das kann es nicht sein. Aber in Ermangelung jeder Kontrollinstanz (ich kann
schließlich nicht jeden Prozedurchschritt hier mit der NG abstimmen - da
würdet Ihr Euch auch schön bedanken) ist es dann aber doch so. Also, ich
werde mir Deinen Vorschlag in Ruhe durcharbeiten und ihn einbauen, wenn ich
damit klar komme. Und wenn ich noch irgendwelche Fragen dazu habe, werde ich
mich hier wieder melden.(aber in einem neuen Thread!!!)
Zur Anzahl der Zeichen auf der Magnetkarte:
%010C07006580124600000000 BIALLAS J. 0000000?;E?;E?
Hier habe ich eben meine Karte durchgezogen. Der Zeichenaufbau ist auf allen
Karten gleich. Meine eigentliche Kartennummer 1246 ermittle ich mit
"Mid(Magnetkarte, 14, 4)". Das funktioniert auch, bleibt aber nicht so. Das
sind alte Karten aus dem System, das wir ersetzen wollen. Wir werden uns
gesondert Karten drucken lassen, auf denen praktisch nur noch die Nummern
sind, die dann in der Tennis-Datenbank den einzelnen Spielern zugeordnet
werden. Und nach diesen Nummern soll dann eben auch nach Möglichkeit ein
Return kommen, dann kann ich mir nämlich den Timer sparen.
Gruß, Jürgen
.
|
|
| Nach oben |
|
 |
Jürgen Biallas
Anmeldedatum: 01.01.1970 Beiträge: 70
|
Verfasst am: Di Feb 06, 2007 7:59 pm Titel: Change-Ereignis / Magnetkartenleser |
|
|
Hallo Jens,
"Jens Schilling" <JensSchillingBitteLoeschen [at] fissership.de> schrieb im
Newsbeitrag news:%23hn6MNhSHHA.3980 [at] TK2MSFTNGP02.phx.gbl...
> Hallo, Jürgen
>
> >Und nach diesen Nummern
> > soll dann eben auch nach Möglichkeit ein Return kommen, dann kann ich
> > mir nämlich den Timer sparen.
>
> Nun suchst Du also doch noch eine andere Lösung ?
> Mir ist aus Deinen Antworten immer noch nicht klar geworden, ob Du es denn
> nun schon im AfterUpdate-Event des Feldes probiert hast, Dein Formular zu
> schliessen. Ich hatte nicht mehr nachgefragt, weil Du sinngemäss
geschrieben
> hattest, Du wärst nun zufrieden. Dein Satz oben klingt anders...
>
danke für Deine und Olivers Hartnäckigkeit. Das AfterUpdate funktioniert
einwandfrei - ohne Timer!!!! Ich hatte zunächst im Belegungsformular einen
Timer eingebaut, um den Wechsel in der Uhrzeit auch auf der
Belegungsübersicht deutlich zu machen. Und dieser Timer, den ich wohl falsch
eingesetzt habe, hat offenbar das AfterUpdate verhindert - und ich habe
durch den zweiten Timer diesen Fehler zu überspielen versucht.
Ich brauche jetzt wohl nur nach Olivers Maßgabe den Timer für den
Uhrzeitwechsel in Ordnung zu bringen - und dann müsste alles "AfterUpdate"
laufen. Meine Güte, das ist mir ja richtig peinlich!
Gruß, Jürgen
.
|
|
| Nach oben |
|
 |
Jürgen Biallas
Anmeldedatum: 01.01.1970 Beiträge: 70
|
Verfasst am: Di Feb 06, 2007 8:04 pm Titel: Change-Ereignis / Magnetkartenleser |
|
|
Ach du liebe Zeit - im wahrsten Sinne des Wortes. Dir entgeht aber auch
nichts! Aber es ist trotzdem Zeit die richtige Zeit, den längsten Thread
meines Lebens zu schließen.
Danke nochmals an alle Beteiligten!
Gruß, Jürgen
> Hauptsache es läuft - da braucht Dir nichts peinlich zu sein.
> Hmm, oder vielleicht doch...... - Deine Uhrzeit
>
> Gruss
> Jens
.
|
|
| Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht teilnehmen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|