Hallo, ich will auf Atmega128 meinen Hand-Barcode-Scanner Opticon OPL-6845 über UART div. Barcodes-Etiketten einlesen. Der Scanner ist auf 9600/8/N/1 eingestellt und liefert auf Hyperterminal die Dezimalzahlen z.B. "0122190370006000000114273898" das ganze endet mit CR. Mich interessieren nur die ersten 13 Stellen. Den Rest bräuchte ich nicht unbedingt.Den Scanner versorge ich mit 5VDC extern, später dann über die 5V vom Atmega. Masse habe ich gemeinsam verbunden. Mit folgendem Programm habe ich vor einiger Zeit meinen RFID-Scanner zum Laufen gebracht, der heute noch super seine Dienste verrichtet. '*********************************************************************** * $regfile = "m128def.dat" $crystal = 14745600 $hwstack = 64 $swstack = 40 $framesize = 80 $baud = 9600 ' ******************************************* Variabeln dimensionieren Dim S As String * 10 Dim Wert As Long ' ******************************************************************** ' *************************** LCD konfigurieren ******************* Config Lcd = 40 * 4 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.1 , E2 = Portc.2 , Rs = Portc.0 Config Lcdbus = 4 ' einmaliges Initialisieren des Displays Dim ___lcdno As Byte ___lcdno = 0 : Initlcd : Cursor Off : Cls ___lcdno = 1 : Initlcd : Cursor Off : Cls ' ** Interrupts ******************************************** On Urxc Onrxd Enable Urxc Enable Interrupts ' ** Hauptprogramm ****************************************** ___lcdno = 1 : Cls ___lcdno = 0 : Cls Locate 1 , 1 Lcd " " Locate 2 , 1 Lcd " " Do If Len(s) > 9 Then Wert = Hexval(s) ___lcdno = 0 : Cls Locate 1 , 1 Lcd Wert ; " " S = "" Wert = 0 End If Loop ' ** Unterroutine *************************************** Onrxd: S = S + Hex(udr) Return ' *************************************************************** End '***************************************************************** Ich bekomme aber ums Verrecken die Zahlen des Barcodes auf mein LCD. Irgenwo habe ich mich festgefahren. Kann mir jemand einen Tip geben? Bin für jede Hilfe dankbar. Danke und schöne Grüße, bastelwastel2708
Andreas R. schrieb: > Ich bekomme aber ums Verrecken die Zahlen des Barcodes auf mein LCD. Was erscheint den statt dessen auf deinem LCD. > Irgenwo habe ich mich festgefahren. Vielleicht hier? > S = S + Hex(udr)
Hallo, danke für die schnelle Antwort. Bei jedem Scan des Etiketts 0122190370000600114273898 bekomme ich die 9 Stellen "875967555" und "826488899". Es ist also nichts was Sinn ergäbe. Stimmt hex ist wohl falsch, da der RFID-Scanner hex bringt, klappt das da. Eigentlich müsste ich ja gar nicht wandeln, da die Zahlen ja wie von der Tastatur kommen. Wie mache ich das denn schon wieder? Ich habe es auch schon mit input versucht, aber irgendwie wird CR nicht erkannt und das Programm hängt sich auf. Ich hoffe du kannst damit was anfangen und kannst mir noch nen Tip geben. Danke Gruß, Andreas
Hi, jetzt bin ich ein bischen weitergekommen. Mit den folgenden Änderungen habe ich jetzt schon einmal reproduzierbare Zeichen, mit denen ich was anfangen kann: ' ***************************************************** On Urxc Onrxd Enable Urxc Enable Interrupts ' *** Hauptprogramm ****************************************** ___lcdno = 1 : Cls ___lcdno = 0 : Cls Locate 1 , 1 Lcd " " Locate 2 , 1 Lcd " " Do If Len(s) > 0 Then Wert = Hexval(s) ___lcdno = 0 : Cls Locate 1 , 1 Lcd "*" ; Wert ; "* " S = "" Wert = 0 End If Loop ' **** Unterroutine *************************************** Onrxd: S = Hex(udr) Return ' ******************************************************************** Wenn ich hiermt einen Barcode mit einstelligen Zahlen scanne bekomme ich auch immer gleiche Zahlenwerte. Z.B.: 0 = 198 1 = 103 2 = 51 3 = 102 4 = 25 5 = 101 Die angezeigten Zahlen sind auch reproduzierbar. Insofern schon mal ein kleiner Lichtblick. Außer mit dem Befehl: Hex(udr) bekomme ich keine plausiblen Resultate. Im Prinzip könnte ich jetzt mit Select Case ja eine Zuordnung machen und ich könnte somit den mehrstelligen Barcode auch auswerten. Jetzt muss ich nur noch versuchen mehrstellige Codes nacheinander zu lesen. Das klappt noch nicht so richtig. Es wird immer nur das erste Zeichen gelesen, das zweite wird ignoriert. Ich benötige nur die ersten 10-11 Stellen. Wie bekomme ich die Zahlen hintereinander in ein Array? Wie komme ich nacheinander an die weiteren Stellen ran? Danke und Gruß, Andreas
:
Bearbeitet durch User
Was denkst du denn was "long" für einen Wertebereich hat und wann der überläuft ;-)
Hallo, funktioniert, Problem gelöst. Schöne Grüße, Andreas
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.