Fehlerbehandlung

Hallo,

Ich habe ein kleines Programm in Visual Basic mit man Daten von einer Chipkarte einlesen und anschließend automatisch ausdrucken kann. Die Chipkarte wird seitlich in eine Tastatur geschoben. Bei der Software für die Tastatur war eine exe Datei dabei, die die Daten von der Chipkarte in eine Datei schreibt.
Diese exe Datei führe ich in meinem VB Programm mit der shell Anweisung aus und lese anchließend die Datei mit dem Daten ein.

Das Problem ist nun, wenn der Benutzer das VB Programm mit der exe Datei ausführt bevor er die Chipkarte eingeschoben hat verursacht diese Exe Datei eine Fehlermeldung. Ich möchte nun den Text dieser Fehlermedlung so umändern, dass die Benutzer damit was anfangen können z.B „Vor dem Klicken Chipkarte einschieben“.

Alternativ könnte man mit VB auch prüfen ob die Chipkarte steckt und dann vom VB heraus eine eigene Fehlermeldung machen.
Hat jemand von euch vielleicht ein paar Ideen wie das geht?

Mfg,
yuna

Hallo,

Alternativ könnte man mit VB auch prüfen ob die Chipkarte
steckt und dann vom VB heraus eine eigene Fehlermeldung
machen.
Hat jemand von euch vielleicht ein paar Ideen wie das geht?

Den Fehler gar nicht erst entstehen lassen, den Button auf disabled lassen, bis die Karte steckt und entsprechende Texte anzeigen.

Die Prüfung, ob die Karte steckt würde ich ganz simpel mit einer unsichtbaren Filelist oder Drive gastalten, je nachdem, ob das Gerät auch one die Karte einen Laufwerksbuchstaben hat. Ist das Laufwerk nicht vorhanden oder die Filelist leer (.Liscount=0) steckt die Karte nicht, oder es sind keine Daten zur Verarbeitung vorhanden.

Nur so als Idee, wie ich als Faulpelz das machen würde. :wink:

Gruß, Rainer

Hallo Rainer,

Danke für Deinen Vorschlag:
Wie das mit der „unsichtbaren Filelist oder Drive“ geht verstehe ich nicht ganz. Kannst du nochmal erklären was Du damit meinst.

Mfg,
yuna

Hallo yuna,

Wie das mit der „unsichtbaren Filelist oder Drive“ geht
verstehe ich nicht ganz. Kannst du nochmal erklären was Du
damit meinst.

gern. Wenn Du das nicht verstanden hast, wird’s allerdings schwer. …

Ich nehme mal an, daß der Kartenleser einen Laufwerksbuchstaben hat, bei mir ist das so.

Suche Dir das Steuerelement ‚FileListBox‘, wähle es an und ziehe dann einen Rahmen auf der Form. Im Eigenschaften-Fenster steht dann:
Eigenschaften - File1
Scrolle in dem Fenster nach unten und suche den Eintrag ‚Visible‘. Dahinter steht ‚True‘. Klicke darauf doppelt und es steht da ‚False‘.
Die FileListBox ist dann nicht sichtbar, wenn das Programm ausgeführt wird. :wink:

Dann mußt Du nur noch den Pfad auf Dein laufwerk stellen …

Private Sub Form\_Load()
 On Error GoTo Fehler
 File1.Path = "D:\"
 Button1.Enabled = True
 If File1.ListCount = 0 Then
 MsgBox "Keine Daten auf der Karte!"
 Button1.Enabled = False
 End If
 Exit Sub
Fehler:
 On Error GoTo 0
 MsgBox "Speicherkarte bitte einstecken!"
 Button1.Enabled = False
End Sub

… und die Liste zeigt den Inhalt Deines Laufwerks an.
Srteckt die Karte nicht, wird das angezeigt, ist die Karte leer, wird das angezeigt.

Gruß, Rainer

Das Problem ist nun, wenn der Benutzer das VB Programm mit der
exe Datei ausführt bevor er die Chipkarte eingeschoben hat
verursacht diese Exe Datei eine Fehlermeldung. Ich möchte nun
den Text dieser Fehlermedlung so umändern, dass die Benutzer
damit was anfangen können z.B „Vor dem Klicken Chipkarte
einschieben“.

Hallo
Wie erscheint denn diese Fehlermeldung, ist es der Inhalt eines Windows-Fensters?
Da kann man dann vielleicht den Inhalt des Fensters ermitteln. (Noch nicht selber ausprobiert.)
Auf jeden Fall hast Du keine neue Ergebnisdatei(oder?) und das kannst Du per Programm prüfen.

Alternativ könnte man mit VB auch prüfen ob die Chipkarte
steckt und dann vom VB heraus eine eigene Fehlermeldung
machen.

Dafür brauchst Du z.B. so etwas wie eine Dll, eine Bibliothek mit Code, den Du aus VB aufrufen kannst.
Vorraussetzung ist eine Dokumentation der Software und/oder der Hardware.
Mit der Dokumentation ist eine Lösung möglich.
Die Tricksereien können sich sonst sehr langwierig gestalten.

MfG
Matthias

Hallo Mathias,

Wie erscheint denn diese Fehlermeldung, ist es der Inhalt
eines Windows-Fensters?
Da kann man dann vielleicht den Inhalt des Fensters ermitteln.
(Noch nicht selber ausprobiert.)
Auf jeden Fall hast Du keine neue Ergebnisdatei(oder?) und das
kannst Du per Programm prüfen.

Alternativ könnte man mit VB auch prüfen ob die Chipkarte
steckt und dann vom VB heraus eine eigene Fehlermeldung
machen.

Dafür brauchst Du z.B. so etwas wie eine Dll, eine Bibliothek
mit Code, den Du aus VB aufrufen kannst.
Vorraussetzung ist eine Dokumentation der Software und/oder
der Hardware.
Mit der Dokumentation ist eine Lösung möglich.
Die Tricksereien können sich sonst sehr langwierig gestalten.

Für den Zweck das handle des Fensters zu verarbeiten ist viel zu aufwändig. Wenn man im Umgang mit API nicht geübt ist, barucht Deine Lösung leicht Wochen an Programmierarbeit.
Ein simples ‚On Error …‘ tut’s hier auch.

Gruß, Rainer

@Rainer:
Danke für deine Antwort.
Es handelt sich nicht um einen Kartenleser, sondern um eine Tastatur mit der nur ganz spezielle Chipkarten eingelesen werden können. Dieser Art von Kartenleser hat keinen Laufwerksbuchstaben. Die Tastatur ist eine Cherry G00-1501. Ein ‚On Error‘ von Visual Basic heraus bringt hier nichts, da der Fehler nicht in meinem VB Programm entsteht, sondern beim ausführen der externen exe Datei. Ich werd wohl doch noch mal nach einer Dokumentation googeln müssen.

Mfg,
yuna

Hallo,

gibt die Tastatur im Normalfall die gelesenen Daten nicht an
den Tastaturpuffer aus, ohne eine *.exe für die Abfrage zu starten ?

Von Cherry gibt es ein kostenloses Konfigurationstool, mit dem kann
man eine „Escape Sequenz“ an der Tastatur einstellen --> wird eine
Karte ausgelesen beginnt die Zeichenkette mit dieser frei zu vergeben-
den Zeichenfolge und lässt sich mit VB einfach abfangen.

Gruß Andreas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]