Waveshare Barcode Scanner

  • Hallo,


    Ich bin heute erst zu euch gestoßen und muss leider auch gleich eure Hilfe in Anspruch nehmen.


    Ich habe einen Waveshare Barcode Scanner gekauft welcher dieses Datenblatt hat.


    Ich habe vor Ihn über USB zu betreiben da ich vermutlich die Bluetooth Schnittstelle noch brauchen werde.


    Getestet wurde er bereits und Funktioniert auch gut (An USB anschließen, Texteditor öffnen, Knopf drücken).


    Jetzt zu meiner Frage. Ich möchte gern einen Befehl senden um den Scannvorgang zu starten um nicht den bereits vorhandenen Knopf benutzen zu müssen.


    Versucht habe ich bis jetzt verschiedene Bibliotheken für Java die alle nicht so recht wollten zb RXTX bzw. ich auch garnicht so recht weiß wie ich das ganze überhaupt ansteuere.


    Meines Verständnisses nach müsste ich einen Befehl in Form von 0x000 an die serielle USB Schnittstelle senden damit dieser den Scanner aktiviert. Und dort liegt momentan mein Problem weil ich davon gar keine Ahnung habe.


    Ob jetzt Java oder Python dafür benutzt wird ist mir nicht so wichtig.


    Ich hoffe ihr könnt mir helfen bzw. ich habe mein Anliegen ordentlich und ausführlich beschrieben.


    Danke euch. :)

  • Ich habe jetzt keine Erfahrung mit Barcodescannern am RasPi aber ich kann alle meine Barcodescanner so einstellen, dass sie von sich aus automatisch Scannen, sobald ein Barcode im Sichtfeld erscheint.


    Vielleicht ist das bereits die Lösung auch für Dich ?!?!

    ;) Gruß Outi :D
    PIs: 2x Pi B (Rente) / 1x Pi B+ (Rente) / 1x Pi 2 B (Tests) / 2x Pi 3 B (RaspberryMatic / Repetier Server) / 2x Pi Zero 1.2 (B. Lite) / 2x Pi Zero 1.3 (B. Lite)
    2x Pi Zero W 1.1 (B. Lite) / 1x Pi Zero 2 (noch ohne) / 1x Pi 3 B+ (Tests) / 1x Pi 4 B 4GB (Ubuntu Server 64 Bit) / Pi 400 (Bullseye) / 2x Pi Pico
    Platinen: Sense HAT / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT

  • Meines Verständnisses nach müsste ich einen Befehl in Form von 0x000 an die serielle USB Schnittstelle senden damit dieser den Scanner aktiviert. Und dort liegt momentan mein Problem weil ich davon gar keine Ahnung habe.

    Ja, das geht. Allerdings nur im UART Mode (Serielle Verbindung), nicht im HID (USB Keyboard emulation) mode.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?


    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • > Meines Verständnisses nach müsste ich einen Befehl in Form von 0x000 an die serielle USB

    > Schnittstelle senden damit dieser den Scanner aktiviert.

    Wenn es wirklich nichts weiter braucht wuerde ich es mal so probieren:


    Code
    /bin/echo -en '\0' > /dev/ttyUSB0
  • Nee, so einfach ist es dann doch nicht.

    Das meint wohl eher du musst Bit 1 an Adresse 0x0000 auf high setzen.

    Aber da bin ich raus.

    Ich kenn das nur von Sick, HHP etc. Dort geht das nur wenn die sich im RS232 Modus befinden und nicht in der HID Emulation.

    In dem Fall würdest du dann "7E 00 08 01 00 02 01 AB CD" (Achtung Hex !!) an /dev/ttyS1 senden.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?


    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Hy Danke für die Antworten und sorry das ich so lange raus war


    Hex geht auch, gar kein Problem:

    Code
    /bin/echo -en '\x7E\x00\x08\x01\x00\x02\x01\xAB\xCD' > /dev/ttyS1

    Dort bekomme ich die Fehlermeldung das ich keine Berechtigung habe.


    hab mich mal am UART versucht klappt aber nicht muss ich noch irgendwas am PI einstellen?

  • Als erstes wuerde ich mal checken welche ttyUSB* es gibt. /dev/ttyUSB1 stammt aus dem Beispiel von Der_Imperator...


    Wenn's nur ein Device gibt, dann ist es wahrscheinlich /dev/ttyUSB0. Serielle Geraete koennen aber auch unter anderen Namen auftauchen wie zum Beispiel ttyACM0.

  • Hallo Tell und Danke dir erstmal. Scanner funktioniert nur einwandfrei.


    Ein Problem habe ich allerdings jetzt noch.

    Angesprochen wird das ganze jetzt über /dev/ttyUSB0 mit einem UART zu USB Adapter.


    Jetzt sendet er die empfangen Daten natürlich nicht mehr über HID Tastatur. Mit serial.read() in Python bekomm ich erst nur Leerstrings und dann kommt eine 31. Er sollte aber eigentlich eine 13 stellige Zahl ausgeben. Kennst du dich da auch aus?


    Achse und bei serial.readline() wartet er bis ich per Hand abbreche und gibt nichts aus.

  • Nunja, wie ich es mir gedacht habe, kann Dein Scanner auch automatisch scannen, sobald sich Helligkeit/Kontrast im Scanfeld stärker ändern.


    Aber das ist scheinbar nicht das, was Du willst ….

    ;) Gruß Outi :D
    PIs: 2x Pi B (Rente) / 1x Pi B+ (Rente) / 1x Pi 2 B (Tests) / 2x Pi 3 B (RaspberryMatic / Repetier Server) / 2x Pi Zero 1.2 (B. Lite) / 2x Pi Zero 1.3 (B. Lite)
    2x Pi Zero W 1.1 (B. Lite) / 1x Pi Zero 2 (noch ohne) / 1x Pi 3 B+ (Tests) / 1x Pi 4 B 4GB (Ubuntu Server 64 Bit) / Pi 400 (Bullseye) / 2x Pi Pico
    Platinen: Sense HAT / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT

  • Outlaw ne leider nicht ganz grob möchte ich das er bei Tastendruck angeht und dann anscannt. Was dank Tell ja auch schon super funktioniert.


    Aktuell liegt das Problem darin das er vorher über usb als HID angeschlossen war was den gescannten Barcode als Tastatureingabe lieferte. Jetzt mit Uart auf USB aber nicht mehr der Fall ist.


    Ich habe auch schon versucht vom Datenblatt den QR Code „Uart Output“ anzuscannen allerdings ändert das garnicht.

    Gefühlt sendet er noch immer über USB HID weil bei dem USB Adapter die RX led nicht leuchtet wenn er einen Barcode erkannt hat.


    Beides wollte ich aber auch nicht anschließen irgendwie muss es ja gehen :-))). Einer ne Ahnung?

  • Also Erfolg. Hab’s hin bekommen. Musste vorher noch denn QR Code für die Einstellungen anscannen. Also erstmal ganz ganz lieben Dank an alle.


    Eine Frage hätte ich trotzdem noch aber nur aus reiner Neugier. Wäre es möglich es so Unversall aufzubauen das es unter jedem Betriebsystem funktioniert? Ich weiß das z.B Linux ne andere Adresse für die serielle Schnittstelle hat wie Windows. Oder kann man auch über VendorID und ProduktID kommunizieren?

  • Hallo Spielebernd,

    derzeit stehe ich vor einem ähnlichen Problem. Ich würde gerne meinen Waveshare Barcode Scanner an einen Raspberry Pi Zero anschließen. Da ich den Scanner ebenfalls per Befehl starten würde, kommt für mich auch nur die Kommunikation per UART Schnittstelle in Betracht. Nach dem durcharbeiten dieses sehr interessanten Threads stellen sich für mich nun mehrere Fragen:


    1. Ist es möglich, dass du kurz beschreibst wie du das ganze ans laufen bekommen hast (Hardware / Setup / ..)? Wenn ich es richtig sehe, sieht dein Setup wie folgt aus: Raspberry Pi -> USB Schnittstelle -> USB zu UART Adapter -> UART Schnittstelle -> Waveshare Scanner. Ist das korrekt?
    2. Hat es einen besonderen Grund, dass der Scanner nicht direkt mit den UART Pins des Raspberry Pis verbunden wurde? Geht das überhaupt? (Bin mir nicht sicher ob das so einfach geht denn UART läuft laut der Raspberry Pi Dokumentation mit 3.3V während der Waveshare Scanner gerne 5V hätte).
    3. Welchen UART zu USB Adapter verwendest Du?
    4. Wie zuverlässig ist die Kombination aus Raspberry Pi und Waveshare Barcode Scanner? Gibt es bekannte Probleme?


    Vielen Dank im Voraus!