Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Toy
Anmeldungsdatum: 07.07.2005 Beiträge: 3
|
Verfasst am: 07.07.2005, 16:47 Titel: Hilfe: Barcodescanner auf COM2 lesen und auswerten |
|
|
Guten Tag,
bin neu in der "Basic" Szene,
kenn mich auch schon bissl aus,
ich bin zufällig auf das forum hier gestoßen und dachte mir ich frag mal nach meinem problem.
So:
Ich hab nen Barcodescanner der mir alle Barcodes lesen kann. Dieser Barcodescanner läuft über COM2. Ich hab zuerst geschaut was mir das "Hyper Terminal" so ausspuckt wenn ich ein paar codes einscanne.
Mit Freude konnte ich feststellen, dass der da den Code sehr gut lesen kann. Die nächste aufgabe war mal so ein "terminal" mit Q-Basic zu schreiben. Das hab ich mit dem Monster-FAQ hier noch gut hinbekommen.
Das sieht jetzt in etwa so aus:
Code: |
OPEN "COM2:9600,N,8,1,DS0,CS0,CD0,BIN" AS 1
LokalesEcho% = 0
DO
a% = LOC(1)
IF a% > 0 THEN
z$=INPUT$(a%, 1)
PRINT z$;
END IF
LOOP UNTIL t$=CHR$(27)
|
Das funktioniert auch ohne Probleme.
Jetzt will ich aber dass der Barcode der da erscheint als ein anderer Text ausgegeben wird und auf dem screen nur z.b. "LABEL1" steht.
Das problem iss nur, dass sehr komische ASCII Zeichen wie z.B. ein Herzchen oder ein Smilie und andere Steuerzeichen mitgesendet werden und ich die nicht rausfiltern kann. Kann mir wer helfen und etwas programmieren / bzw zeigen wie ich die Daten in einen Text umwandeln kann
Mit freundlich Grüßen
Toy |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 07.07.2005, 17:07 Titel: |
|
|
schau mal in der Online-Hilfe nach den Ascii-Zeichencodes, du musst einfach sagen, dass er zeichen nur benutzen soll, wenn ASC in den entsprechenden Bereichen liegt, die du dir an der Zeichencode-tabelle ausdenken kannst. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 07.07.2005, 18:25 Titel: |
|
|
Hallo,
diese Zeichen sind nicht als Text, sondern als Zahlen zu betrachten.
Wenn du Näheres wissen möchtest, google mal nach Barcode, EAN.
Hier gibts Infos;
http://www.gs1-germany.de/content/e39/e50
http://www.barcode24.com/barcode-typen/CodeEAN.html
Gruß
Volta _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
Toy
Anmeldungsdatum: 07.07.2005 Beiträge: 3
|
Verfasst am: 07.07.2005, 18:57 Titel: |
|
|
ich glaube ich habe mich falsch ausgedrückt, denn mit euren comments / links komme ich nicht weiter.
die richtigen Zahlen habe ich ja, (z.B. bei einem Nahrungsmittelprodukt wurde der gleiche Zahlencode ausgeben der auch auf dem produkt stand)
der bar code wird bei mir im terminal so ausgegeben:
#EAX◙◙◙5614654561◙◙◙#STX
(die ◙ sind smilies herzchen o.ä. steuerzeichen)
so jetzt will ich zum beispiel sagen, dass der eigentliche code (hier: 5614654561 ) vom meinem programm erkannt wird und dann statt dieser zahlenreihe und diesen steuerzeichen ein Text erscheint:
z.b. hab ich 2 verschiedene codes:
1. code wird erkannt und als "Label1" auf meinem screen ausgeben (also wird im grunde nur der zahlencode in ein text umgewandelt)
2. code wird erkannt und als "Label2" auf meinem screen ausgeben
und wenn kein code erkennt wurde soll er z.B. "ERROR" ausgeben
das problem bei der sache ist eben das, dass ich nicht weiß wie das geht (ein Text über COM2 empfangen und anders ausgeben auf dem screen) und außerdem kann ich trotz ASCII - Tabelle diese steuerzeichen nicht ins qbasic kopieren o.ä
Gruß
Toy |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 07.07.2005, 19:24 Titel: |
|
|
ja, wenn das dein Problem ist,
der Befehl ist MID$(z$,start,länge)
Wenn z$ die empfangenen Zeichen (vom Barcodescanner) enthält und immer die gleiche Länge (Anzahl der Zeichen) hatt, dann:
Code: | p$=MID$(z$,8,10) 'ab dem 8.Zeichen 10 Zeichen aus z$ kopieren
PRINT p$ |
Gruß
Volta
EDIT/
Dieser Link ist Empfehlenswert wenn du passende QBasicbefehle suchst
http://www.antonis.de/faq/ _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
Toy
Anmeldungsdatum: 07.07.2005 Beiträge: 3
|
Verfasst am: 07.07.2005, 19:45 Titel: |
|
|
das hilft mir weiter ! dankeschön
so: jetzt noch eine Sache,
ich hab jetzt praktisch die Zahlenkette rausgefiltert und will jetzt, dass zu jeder verschiedenen Zahlenkette ein verschiedener Text kommt.
ich hab schon ne ahnung wie ich das mache aber sicher ist sicher.
also:
wenn Zahlenkette1 = 5614654561
print "Label1"
wenn Zahlenkette2 = 3298472873
print "Label2"
wenn Zahlenkette3 = 0
print "ungültiger Code"
sry dass ich so fragen "newbie" fragen stelle (bin halt doch nur ein "tüftler" und hab qbasic eigentlich net so drauf)
Gruß
Toy |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 07.07.2005, 20:14 Titel: |
|
|
Wo ist das Problem?
So müsste es doch gehen
/EDIT: Ich sehe gerade, du schreibst
Zitat: |
wenn Zahlenkette1 = 5614654561
print "Label1"
wenn Zahlenkette2 = 3298472873
print "Label2"
wenn Zahlenkette3 = 0
print "ungültiger Code"
|
Du darfst da keine fortlaufende Nummer nehmen, da du dann ja immer eine andere
Variable abfragst.
jb |
|
Nach oben |
|
|
Kai Bareis
Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 07.07.2005, 20:39 Titel: |
|
|
Dazu ist der befehl SELECT CASE sehr nützlich.
mal ein kleines Beispiel
Code: |
Z$="blabla1" 'das was rausgefilterd wird
SELECT CASE Z$
CASE "00001"
PRINT "Label1"
CASE "00002"
PRINT "Label2"
....
...
END SELECT
|
_________________ MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht! |
|
Nach oben |
|
|
|