Python: čtení z COM portu a odstranění balastu

Python: čtení z COM portu a odstranění balastu
« kdy: 13. 12. 2020, 19:17:24 »
Zdravim.
Citam si data s USB QR scannera. uplne jednoducho
Kód: [Vybrat]
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
Kód: [Vybrat]
☻]Q1Bohuzial stale mi to vracia ☻]Q1http://www.shortl.online♥ ako to ocesat?
« Poslední změna: 13. 12. 2020, 21:22:01 od Petr Krčmář »


Re:Python citanie s COM portu a odstranenie "balastu"
« Odpověď #1 kdy: 13. 12. 2020, 19:44:36 »
Nestacilo by vypsat jen ASCII znaky?
Kód: [Vybrat]
res = s.read_until(b"\x03").decode('ascii','ignore')
print(res)

Re:Python citanie s COM portu a odstranenie "balastu"
« Odpověď #2 kdy: 13. 12. 2020, 20:26:54 »
Skusil som vracia to presne ten isty string.

Re:Python citanie s COM portu a odstranenie "balastu"
« Odpověď #3 kdy: 13. 12. 2020, 20:35:45 »
Tak nakoniec aj ked nie som 2x happy
Kód: [Vybrat]
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)

_Jenda

  • *****
  • 1 608
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Python citanie s COM portu a odstranenie "balastu"
« Odpověď #4 kdy: 13. 12. 2020, 20:40:47 »
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š.


Re:Python: čtení z COM portu a odstranění balastu
« Odpověď #5 kdy: 13. 12. 2020, 21:44:03 »
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.

Re:Python: čtení z COM portu a odstranění balastu
« Odpověď #6 kdy: 14. 12. 2020, 01:02:09 »
Balast je tam možná kvůli špatně nastavenému COM portu. Mělo by to dávat data čistá...

Re:Python: čtení z COM portu a odstranění balastu
« Odpověď #7 kdy: 14. 12. 2020, 01:17:54 »
No je to symbol resp. Zebra CDC Scanner MIN-D3508. Ovladace standardne od Zebry

tecka

  • ***
  • 161
    • Zobrazit profil
    • E-mail
Re:Python: čtení z COM portu a odstranění balastu
« Odpověď #8 kdy: 14. 12. 2020, 03:17:45 »
Kód: [Vybrat]
"\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.
« Poslední změna: 14. 12. 2020, 03:19:23 od tecka »

Re:Python: čtení z COM portu a odstranění balastu
« Odpověď #9 kdy: 15. 12. 2020, 13:29:17 »
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...

Re:Python: čtení z COM portu a odstranění balastu
« Odpověď #10 kdy: 15. 12. 2020, 13:32:37 »
Petr Blahos.
BINGO. Tam bol pes zakopany dakujem!!!