[LUGOS-PROG] Dostop do serijskega porta

Anze anze at volja.net
Tue Jun 28 11:20:15 CEST 2005


> Odlicno; najprej sem jo odprl, potem pa se odstranil bzero in sedaj stvar
> "dela". V narekovaje sem postavil zato, ker moram seda razvozlati, kako
> izvest ucinkovito branje. Enota namrec po vsakem ukazu vrne nek niz znakov,
> ki pa ni na voljo takoj, ko izvedem ukaz (sleep(1) pomaga, vendar je
> predolg)...

Ce res uporabljas blocking read, ti be read blokiral, dokler ne dobi EOL znaka 
(ker imas canonical branje). Pri non-canonical ti bo blokiral, dokler ne 
prebere N znakov. 
Canonical branje je uporabno samo v primeru, da tvoja enota vraca neke znake, 
ki se zakljucijo z newline znakom. Ce temu ni tako, tega ne mores 
uporabljati. 

Pa jaz bi na tvojem mestu razmislil o non-blocking branju ali pa vsaj uporabi 
c_cc[VTIME] timeouta (to opcijo uporabljam jaz, pa se je izkazala za zelo 
zanesljivo in preprosto za uporabo - beres v interni buffer, ce ti timeout-ne, 
ves, da je nekaj narobe). 
Ce se tvoji napravi zmesa, je dobro, da vsaj softver obdrzi glavo na pravem 
mestu... :)

LP!

Anze


More information about the lugos-prog mailing list