Zdravim.
Citam si data s USB QR scannera. uplne jednoducho
import serial
s = serial.Serial('COM3')
QR_code_data = ""
while True:
res = s.read_until(b"\x03").decode('utf-8')
QR_code_data = res
QR_code_data = QR_code_data.replace("☻]Q1", "")
print (QR_code_data)
Kde sa snazim odstranit prave ten border ☻]Q1
Bohuzial stale mi to vracia ☻]Q1http://www.shortl.online♥ ako to ocesat?
Nestacilo by vypsat jen ASCII znaky?
res = s.read_until(b"\x03").decode('ascii','ignore')
print(res)
Skusil som vracia to presne ten isty string.
Tak nakoniec aj ked nie som 2x happy
import serial
import re
s = serial.Serial('COM3')
QR_code_data = ""
while True:
res = s.read_until(b"\x03").decode('UTF-8')
QR_code_data = res
QR_code_data = re.sub('[^A-Za-z0-9]+', '', QR_code_data)
QR_code_data = QR_code_data [2:] #toto lebo to davalo Q1 ale netusim preco?
print (QR_code_data)
Prováděj nahrazování ještě na binárních, nedekódovaných datech. Takhle do toho vstupují různé formy reprezentace unicode stringů a kdo ví, jestli opravdu nahrazuješ to, co si myslíš, že nahrazuješ.
Co je to za scanner? Vypadá to, že posílá pakety s dekódovanou zprávou, a tak by měl existovat jednoznačný postup, jak paket deserializovat.
Balast je tam možná kvůli špatně nastavenému COM portu. Mělo by to dávat data čistá...
No je to symbol resp. Zebra CDC Scanner MIN-D3508. Ovladace standardne od Zebry
"\x02" - STX
"]Q1" - Symbology ID (typ dat/kódu)
...
"\x03" - ETX
První problém je v decode. To prostě není text v utf-8. Druhý možná v nahrazování, tj. co ti editor uložil místo toho smajlíku.
Obojí tady už zaznělo, prostě to tak nedělej a dekóduj to podle protokolu.
Nemá ten scanner nastavenej nějakej prefix nebo suffix, kterej posílá ke každýmu kódu? Stáhněte si nastavovací příručku a nastavte si to, jak potřebujete...
Petr Blahos.
BINGO. Tam bol pes zakopany dakujem!!!