Ahoj všem..
Prvně musím autorovi poděkovat za pěkný článek. Se sériovým portem teprve začínám, tak jsem rád mj. i za upřesněné názvosloví (například termín UART)
Nicméně mám doplňující otázku. Když z počítače pošlu do nějakého zařízení po sériové lince příkaz a očekávám odpověď, tak co se s tím příkazem děje? Ten se v tom zařízení uloží do fronty a to zařízení příkazy z fronty čte? A když mi pak zařízení odpovídá, tak mi zpátky vyšle odpověď a ta se uloží ve frontě v počítači? Takže pokud pošlu 2 příkazy rychle po sobě, tak se nejprve vykoná první a potom druhý a následně mi přijdou 2 odpovědi v rychlém sledu? (Vycházím z příkladu o Telegrafu)
Nyní to dělám tak, že pošlu příkaz z PC do zařízení a pak ve smyčce WHILE čtu patřičný COM a čekám, až načtu ukončovací znak, který má ono zařízení poslat na konci odpovědi. Používám správný princip?
Často se mi stává, že zařízení né a né odpovědět a WHILE běží a běží a počítač nereaguje. Jak jsem se dozvěděl na webu, je u RS-232 časté, že se informace ztrácí, takže příkaz do zařízení vůbec nemusí dorazit. Řeším to tak, že ten samý dotaz pošlu 2x rychle po sobě. A bojím se, abych připojené zařízení nezahltil, nebo, aby se mi v PC nehromadily odpovědi, kterých je v podstatě 2x více, než chci. (Protože každý příkaz posílám 2x, ale pak ho jen jednu čtu - a čtením se nejspíš zmenšuje ta fronta, od které se ukládají odpovědi)
Může mi to někdo okomentovat? Dík..
PS: o nespolehlivosti RS-232 jsem četl zde:
http://robotika.cz/guide/pc-robot-control/cs