Rizeni hejblatek pres RS232

Petr Skoda skoda na sunstel.asu.cas.cz
Středa Duben 29 16:21:12 CEST 1998


Prosim profiky o rady , jiste budou zajimat i ostatni.

Pro ty , co cetli thread "nahrada funkce system() .." doplnuji proc se
stale ptam:
Jelikoz se ukazalo, ze problem neni jen ve volani demona executor, ale
tuhne to i po vsech upravach, rozhodl jsem se problem analyzovat poradne -
verim, ze se najdu profici, kteri ukazi ostatnim jak na to"


PROBLEM:

Mejme pripojene na seriovem portu jakesi zarizeni, kteremu posilam kratke
prikazy v textovem rezimu - ty ma vykonat a cosi zapnout, vypnout, ci
otocit nejakym motorkem apod. Jinym priklad - citac (expozimetr) merici
mnozstvi svetla (tiky za sekundu) a ovladam jeho spousteni, zastaveni ci
nulovani.

Zaroven ovsem chci znat, v jakem je zarizeni stavu - napr kam az se
pootocil uz motorek, ci kolik citac aktualne dava. Takze po stejnem portu
mi zarizeni posila informace o svych jednotlivych agregatech.  Cele to
probiha periodicky s krokem 1 sec. Tzn. ze s periodou jedne sekundy mi
bude nejaky demon (nazveme jej treba infod ) cist ze serioveho portu cca
50 byte se stavovou informaci a ukladat v citelne podobe do daneho souboru
DATA.  Pravidelnym vycitanim tohoto souboru (i treba pres NFS) muzu napr
kreslit skalu momentalni intenzity svetla ci nejakou rucicku apod. 

Pritom ovsem chci z nejakeho programu - nazveme ho RADIC, vysilat povely
na zarizeni - po stejnem seriovem portu. Ty povely prijdou velmi zridkave
- ale pak treba 10 naraz behem mene nez sekundy.

Prosim o radu, jak spravne realizovat takovy system - bez moznosti
HW handshaku(jen 3 draty) - to ze dane zarizeni povel splnilo a vykonava
se dozvim az v dalsi sekunde po precteni jeho stavove informace. 

Ma nekdo neco podobneho udelane a mohl mi poslat zdrojaky?  Kde se da
poucit o programovani seriovych portu ? V man pages toho moc nevykoukam. A
navic stale mi neni jasne zda ttyS ci cua (i kdyz jsem cetl drivejsi
thread na tohle tema a tam se tvrdi, ze ttyS se otevre az po carrirer
detect - ale tady mam jen 3 draty - to se tedy neotevre vubec?), a jak
otevirat port - jestli O_BLOCK pomuze ci naopak uskodi apod.


Jde o to, aby se nejak ten port zamykal - tj, pokud z nej infod cte, aby
program zapisujici vedel, ze musi pockat, dokud se neuvolni a neposlal
neco ven v domeni, ze to zarizeni prikaz prijalo a vykona.

Jak napsat obecne takoveho infod (tj. otevri port, precti data a zapis do
souboru , zavri port a cekej nez budes cist znovu, pritom hlidej pri
otvirani, zda se prave nezapisuje)
a jak napsat ovladaci program RADIC (tj jak otevrit port tam a zapsat
data, pritom to nedelat v dobe, kdy cte infod)?

Budu velmi vdecen za kazdy napad.


************************************************************************* 
*  Petr Skoda                         Tel   : (0204) 649201, l. 361     * 
*  Stelarni oddeleni                          (0204) 620361, 620136     *
*  Astronomicky ustav AVCR            Fax   : (0204) 620250             *
*  251 65 Ondrejov                    e-mail: skoda na sunstel.asu.cas.cz  *
*  Ceska republika                            pskoda na mbox.cesnet.cz     *
*************************************************************************





Další informace o konferenci Linux