[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