Pyserial posílání dat z PC – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Pyserial posílání dat z PC – Python – Fórum – Programujte.comPyserial posílání dat z PC – Python – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
john-smith0
Newbie
18. 2. 2021   #1
-
0
-

Dobrý den,

potřebuji poradit s posíláním dat z PC. Používám Python 3.8.0. a modul pyserial-3.5.

Data posílám z PC přes USB BT modul do mikrokontroléu Picaxe, tam si je uložím a pošlu zase zpátky. V počítači je načtu a zjišťuji jestli jsem dostal to samé co jsem odeslal. Když jsem používal Python 2 ( a k němu příslušný modul pyserial) zapisoval jsem data na USB příkazem:

com.write(chr(i))


A vše fungovalo bez problému. V Pythonu 3 musím připsat kódování proměnné:

com.write(chr(i).encode("utf-8"))  


Když zkouším následující program:

import serial

cislo_portu ='COM6'

com = serial.Serial(cislo_portu, 9600, timeout=2)

for i in range(0, 255, 50):
    com.write(chr(i).encode("utf-8")) 

    x=com.readline()
    if int(x) == i:
        print(i, " - OK.")
    else:
        print(i, " ≠ ", int(x))

com.close()


Pak po spuštění dostávám ty hodnoty které odešlu. Při odeslání hodnoty i = 128 se mi vrátí hodnota 194, hodnota 194 se mi vrací až do odeslání hodnoty i = 191, od i = 192 se mi vrací hodnota 195 a ta mi chodí až do konce, tj. do hodnoty i = 254.

Umí mi někdo poradit jak odeslat hodnoty větší než 127? Tak aby mi zpět do PC přicházely ty hodnoty které jsem odelal?

Nahlásit jako SPAM
IP: 82.142.102.–
gna
~ Anonymní uživatel
1891 příspěvků
19. 2. 2021   #2
-
0
-

Ono ti přichází to, co jsi odeslal, ale odesílaš něco jiného než si asi myslíš. Nepřeváděj to na string a rovnou vyrob bytes

>>> chr(128).encode('utf8')    # toto nechceš
b'\xc2\x80'
>>> chr(128).encode('latin1')  # toto by fungovalo, ale nedělej to
b'\x80'
>>> bytes([128])               # takhle to dělej
b'\x80'
Nahlásit jako SPAM
IP: 213.211.51.–
john-smith0
Newbie
20. 2. 2021   #3
-
0
-

Super, to je přesně ono, teď mi to konečně funguje. Díky za radu.

Nahlásit jako SPAM
IP: 82.142.102.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 16 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý