UART hodnota 0x00

Miroslav Mraz mrazik na volny.cz
Čtvrtek Leden 17 13:30:14 CET 2019


Ten sériový port už s námi je hodně dlouho a postupně se používal k 
různým účelům, takže se přidávaly různé i dost divné vlastnosti. Takže 
napsat správně ovladač není triviální a dnes už programátoři nemusí 
vůbec tušit proč jsou některé věci udělané tak jak jsou. A i když už je 
driver "správně" napsán, zase není jednoduché nastavit ho tak, aby námi 
požadované vlastnosti fungovaly tak, jak si přejeme.
Jak tady už padlo, znak NUL 0 v zásadě není odlišitelný od ukončení 
stavu BREAK, signalizující např. zkrat na lince, prostě musíte driveru 
nějak sdělit jak s tím má nakládat. Tazatel to má zřejmě nastaveno tak, 
že se BREAK prostě ignoruje.
Tazatel píše, že po USB znaky NUL procházejí, takže problém je někde v 
ovladači sériového portu.
1. Ovladač je blbě napsaný.
2. Program, kterým to testujete ten ovladač blbě nastavuje.
Pravděpodobnější je možnost 2. Windows sice už léta nepoužívám, ale 
pokud si pamatuji existuje k tomu C/C++ API, kde jde nastavit různé 
chování ovladače. Ale když tak koukám po modernějších možnostech, tak 
např. python API už takováto podrobnější nastavení běžně neumožňuje.

Mrazík

Dne 17. 01. 19 v 12:49 Zuffa Jan napsal(a):
> No na linuxe (openwrt) som sa stretol s tym,
> ze cez serial neprechadzali niektore znaky (vyslovene sa stratili ako tie 0x00)
> musel som nejakym prikazom port prenastavit aby bol
> uplne transparenty
> 
> j.
> 


Další informace o konferenci Hw-list