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