Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Wangarad 13. 12. 2020, 19:17:24

Název: Python: čtení z COM portu a odstranění balastu
Přispěvatel: Wangarad 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?
Název: Re:Python citanie s COM portu a odstranenie "balastu"
Přispěvatel: IDontCare 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)
Název: Re:Python citanie s COM portu a odstranenie "balastu"
Přispěvatel: Wangarad 13. 12. 2020, 20:26:54
Skusil som vracia to presne ten isty string.
Název: Re:Python citanie s COM portu a odstranenie "balastu"
Přispěvatel: Wangarad 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)
Název: Re:Python citanie s COM portu a odstranenie "balastu"
Přispěvatel: _Jenda 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š.
Název: Re:Python: čtení z COM portu a odstranění balastu
Přispěvatel: Jakub Štech 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.
Název: Re:Python: čtení z COM portu a odstranění balastu
Přispěvatel: Ondrej Nemecek 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á...
Název: Re:Python: čtení z COM portu a odstranění balastu
Přispěvatel: Wangarad 14. 12. 2020, 01:17:54
No je to symbol resp. Zebra CDC Scanner MIN-D3508. Ovladace standardne od Zebry
Název: Re:Python: čtení z COM portu a odstranění balastu
Přispěvatel: tecka 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.
Název: Re:Python: čtení z COM portu a odstranění balastu
Přispěvatel: Petr Blahos 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...
Název: Re:Python: čtení z COM portu a odstranění balastu
Přispěvatel: Wangarad 15. 12. 2020, 13:32:37
Petr Blahos.
BINGO. Tam bol pes zakopany dakujem!!!