Beim Barcode-Scannern spezielles Form anzeigen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Beim Barcode-Scannern spezielles Form anzeigen

    Hallöchen Leute,

    ich hab' einen hübschen Barcodescanner neben mir stehen, der mir von Medikamentenschachtel die PZN-Nummern abscannern soll.
    Das tut er auch ganz gut, zumindest zeigt er mir die Nummern in einer Textbox an, wenn ich die Schachteln durchziehe.

    Mein Problem besteht jetzt darin, dass ich gern eine bestimmte Form öffnen möchte, wenn ich die Medikamente abpiepse.
    Der Vorgang sollte so aussehen:
    Medikament abpiepsen (egal von welcher Form) -> Programm erkennt, dass was abgepiepst wurde -> spezielle Form öffnet sich ...

    Das Ding ist, ich weiß nicht, an welcher Stelle ich da reingreifen kann bzw. welche Events getriggert werden, wenn ich die Schachtel abscanne.
    Kann ich da in irgendein "DataReceived"-Event eingreifen?? Gibt's das für die Forms oder muss ich noch was Spezielles importieren??

    Die Doku zu dem Scanner schweigt sich da massiv aus, dewegen hoffe ich auf eure Unterstützung.

    GLG, Noyne
    Your computer is running... You better go chase it! :P :D
    @Noyne Wie kommt die Scanner-Info in Dein Programm?
    • Wird der Scanner als Tastatur behandelt, d.h., das Fenster mit dem Fokus bekommt die Info (z.B. auch Word oder Notepad)
    • Wird der Scanner als RS232 angesprochen, da kannst Du im DataReceived-Event was tun.
    Ich hatte mal einen USB-Scanner, der verhielt sich beim Einstecken wie eine Tastatur. Wenn man da einen Treiber nachinstallierte, verhielt er sich wie ein RS232-Gerät und alles war fein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das kommt darauf an was für ein Scanner du hast? Metrologic? Cino? Jarltech? Model?

    Ich gehe einfach mal davon aus, dass du einen USB-Scanner verwendest, der sich verhält wie eine Tastatur. Sonst hättest du ja schon Kontakt zu dem DataReceived Event gehabt.... Es sei denn es ist noch eine Bibliothek im Einsatz? Handelt es sich um ein Scanner mit eingebautem Speicher? Verwendest du die CSP2.DLL ?

    Die meisten Hersteller konfigurieren den Barcodescanner z.B.: Prefix Zeichen (z.B.: ein White-Space Char oder ne Raute), welches du verwenden kannst um zu erkennen, dass es sich um ein Barcode handelt und nicht um eine Tastatureingabe.


    RodFromGermany schrieb:

    Wird der Scanner als Tastatur behandelt, d.h., das Fenster mit dem Fokus bekommt die Info (z.B. auch Word oder Notepad)
    Japp, genau so ...

    RodFromGermany schrieb:

    Wenn man da einen Treiber nachinstallierte, verhielt er sich wie ein RS232-Gerät und alles war fein.
    Das Porblem ist, da wird in der Doku (Seite 7ff. )
    Spoiler anzeigen
    https://www.honeywellaidc.com/CatalogDocuments/7580-DE-QS Rev A.pdf
    auf eine Seite verwiesen und die nutzt mir nichts, weil wenn ich nach einigem Suchen dann die Barcodescanner endlich gefunden hab honeywellaidc.com/de-DE/Pages/…e-barcode-scanner&cat=HSM , dann ist gleich der erste links oben, der der bei mir steht und zu dem krieg ich einfach mal null Informationen oder irgendwelche Treiber oder sowas ...
    Your computer is running... You better go chase it! :P :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Noyne“ ()

    Real-TTX schrieb:

    Das kommt darauf an was für ein Scanner du hast?
    Einen Honeywell Genesis 7580g ...

    Real-TTX schrieb:

    Handelt es sich um ein Scanner mit eingebautem Speicher?
    Nein, ich glaube nicht, dass der so was hat.

    Real-TTX schrieb:

    Verwendest du die CSP2.DLL ?
    Noch nie gehört, also nein ... Was ist das für eine dll??

    Real-TTX schrieb:

    Die meisten Hersteller konfigurieren den Barcodescanner z.B.: Prefix Zeichen (z.B.: ein White-Space Char oder ne Raute), welches du verwenden kannst um zu erkennen, dass es sich um ein Barcode handelt und nicht um eine Tastatureingabe.
    Whitespace könnte sein, aber was nützt mir das?? Ich mein', wenn die abgescannte Nummer in der Textbox steht, ist's eigentlich schon zu spät, weil ich ja eigentlich nach dem Scannen eine andere Form öffnen will und nicht die Daten in irgendeine Textbox reinschreiben möchte ... An sich wäre das DataReceived-Event schon cool, aber wenn ich da nicht hinkomme, dann muss ich wohl mal was anderes probieren ...
    Your computer is running... You better go chase it! :P :D
    @Noyne Was für einen Anschluss hast Du? Auf Seite 3 des Dokuments ist von RS232 die ede.
    Sind im Lieferumfang ggf. mehrere Anschlüsse dabei?
    ---------------

    Noyne schrieb:

    weil ich ja eigentlich nach dem Scannen eine andere Form öffnen will
    Das lässt sich im TextChange-Event einer TextBox machen.


    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Sind im Lieferumfang ggf. mehrere Anschlüsse dabei?
    Nein, nur USB direkt am Gerät ... Ich hab eben doch was gefunden, allerdings weiß ich nicht genau, welchen der drei Treiber ich denn gebrauchen könnte (obwohl ich den ersten auslassen würde, weil ich nix mit Java mache) honeywellaidc.com/de-DE/Pages/…&cat=HSM&pid=genesis7580g und dort unter "Software" stehen die Dinger ... Dauert aber eine ganz4e Weile bis da was lädt ...

    RodFromGermany schrieb:

    Das lässt sich im TextChange-Event einer TextBox machen.
    Houh, okay ... Dann könnt' ich das auch probieren ... Hm ... Mit dem Event hab ich auch noch nicht gearbeitet. Man merkt's, sonst wäre ich da auch drauf gekommen ...


    Your computer is running... You better go chase it! :P :D

    Noyne schrieb:

    Honeywell Genesis 7580g
    ist der da ühaupt gelistet?
    Es steht nicht da, wie er heißt. :/
    --------------------
    Dieses Honeywell POS4NET Suite version 1.13.3.13?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    da
    Wo ist "da" bei dir?? Auf der Page?? Gelistet, jain. Wenn du auf das Bildle bei den Präsentationsscannern klickst, ist unter dem Bild eine Liste, in der "Merkmale, Zubehör, Produktinformation, Software, Links" steht. Wenn du dann auf den "Software"-Reiter gehst, dann kommen da auch diverse Treiber.
    Your computer is running... You better go chase it! :P :D

    Noyne schrieb:

    diverse Treiber
    Genau da hab ich den von mir rauskopierten her.
    Dieser scheint der "richtigste" zu sein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hm, gut ... Die kann ich ja mal testen, wenn ich mich dazu durchringe, denen noch ein paar Zusatzinformationen über mich zu geben ||

    Hm, ich hab' mir eben deren EULA durchgelesen, da gefällt mir was nicht ... Da heißt es groß und breit
    DISCLAIMERS AND LIMITATIONS OF LIABILITY: [...] IN NO EVENT SHALL LICENSOR OR ITS SUPPLIERS BE LIABLE FOR ANY AMOUNT IN EXCESS OF (1) THE INITIAL LICENSE FEE THAT LICENSOR RECEIVED FROM YOU FOR THE PRODUCTS, IN THE CASE OF LICENSOR, OR (2) U.S. TWO HUNDRED AND FIFTY DOLLARS (U.S. $250.00), IN THE CASE OF LICENSOR’S SUPPLIERS.
    Ich hab sonst nirgendwo irgendwas von einer "License fee" gelesen oder davon, dass irgendwelche Drittpartien irgendwas von mir wollen ... Aber es irritiert mich etwas, dass die trotzdem was davon an der Stelle reinschreiben ... Ich hab' keinen Bock hier irgendwo meine Seele zu verkaufen oder sowas ... Nach 3 Seiten gebundenem, grässlig geschriebenem englischen Lizens-Kram kann es aber auch sein, ich versteh' was falsch ... Aber ganz geheuer ist mir's nicht ...
    Your computer is running... You better go chase it! :P :D

    Noyne schrieb:

    durchgelesen
    Pack mal diesen Un-Text in den Google-Translator. Ich glaube eher, die übernehmen keine Haftung, wenn nix bezahlt wurde.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    die übernehmen keine Haftung, wenn nix bezahlt wurde.
    Ja, das mit der Haftung und der Bezahlung das ergibt sich mir schon, nur ist es so merkwürdig geschrieben, dass ich es nicht ganz blicke ... Das English ist der größte Rotz!! Ich übersetz mir das grad so: "In keinem Fall kann der Lizenzgeber oder dessen Zulieferer/ Lieferanten haftbar gemacht werden für jeglichen Überschussbetrag der Anfangslizens, die der Lizensgeber von Ihnen für das Produkt erhalten hat, im Falle eines Lizensgebers, oder 250$, im Falle von Lizensgeberzulieferern" ... Was ist das denn für Quark?!

    ----------------------------------------------------------------------------------------------------

    windowsfan schrieb:

    - Haben die Nummern immer die selbe länge?.
    Jain, entweder 7 oder 8 Stellen. Die neuen Medis haben 8 Stellen, die alten 7 ....

    windowsfan schrieb:

    - "drückt" der BC-Scanner nach dem scannen Enter?
    Nein, ich glaube nicht ...
    Your computer is running... You better go chase it! :P :D
    @Noyne Mir wär das zunächst egal und ich würde mich um die Ansteuerung kümmern.
    Für das andere gibt es eine Rechtsabteilung oder so.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    hmm ja weisst du im vorhinein die hat jz 7 stellen und die andere 8?
    dannn kannst im textbox text-changed event abfragen, sobald 7 bzw. 8 zeichen in der textbox sind dann die form öffnen.


    Das mit dem Enter kannst einfach testen:
    öffnet notepad klick in rein, scann etwas - bist du dann in der nächsten zeile oder in der selben?
    evtl. kannst du irgd. wie einstellen, dass er enter sendet, dann kannst im textbox key-down event die form öffnen

    windowsfan schrieb:

    bist du dann in der nächsten zeile oder in der selben?
    Ich bin in der gleichen Zeile, also kein Enter ...

    windowsfan schrieb:

    hmm ja weisst du im vorhinein die hat jz 7 stellen und die andere 8?
    An sich steht es ja auf der Packung drauf, wie lang die Nummer ist, also man sieht es ...

    Das was ich haben will, ist allerdings nichts, wo vorher eine Textbox gefüllt und danach deren Inhalt überprüft wird, um die Form zu öffnen.
    Ich möchte, dass ich egal, welches Control oder welche meiner zig Forms den Fokus hat, ich das Medikament abscanne, die Form geöffnet wird und die PZN dann in der Form irgendwo eingetragen wird.
    Heißt, es soll auch möglich sein, dass die gewünschte Form aufgeht, wenn grad ein Button oder eine DGV den Fokus hat.
    -------------------------------------------------------------------------------------------------------------------
    @RodFromGermany "ich würde mich um die Ansteuerung kümmern."
    - Ja, das will ich ja auch, aber ich will nicht, dass ich hier meine Seele verkaufe und dann zusehen muss, wie ich alles wieder hinbiege ...
    Your computer is running... You better go chase it! :P :D
    Das ist doch so alles Käse? Der schnellste und relativ vernünftige Weg wäre:

    1. Prefix konfigurieren - Bin nur mal über die Anleitung geflogen, sollte ja kein Problem darstellen. Nimm die Raute als Prefix.

    1.1 Suffix konfigurieren - Einfache ein Zeilenumbruch (10, 13 / CrLf)

    2. Form KeyPreview = True

    3. Im KeyDown event des Formulares prüfst du ob es sich um ne Raute handelt und speicherst die alle Zeichen bis zum Suffix zwischen. Anschließentd noch das neue Formular auf machen und dem Formular die Zeichenfolge übergeben.


    Habe das mal eben getestet (Honeywell / Metrologic Barcode Scanner - Prefix: #, Suffix: Zeilenumbruch) Funktioniert eigentlich soweit einwandfrei.