Tak znova já,
a zase vlákno.
Potřebuju nějaký brainstorming ohledně vlákna, které čeká na událost a pak ještě využít timer v c++ pod linuxem, který mi bude časovat po zadaný čas.
A nechtěl bys to radši napsat ještě maďarsky? Takhle možná někoho geniálního může napadnout, na co se vlastně ptáš.
V podstatě mi jde o to, aby vlákno zareagovalo když se na vstupu jakéhokoli pinu objeví log 1(+5V) a timer mi změřil nějaký odchylky, maximální a minimální odchylku od vzorkovací frekvence)
No a co je na tom za problém? Opět myslím, že samostatné vlákno na tohle vůbec nepotřebuješ, ale to je vedlejší, protože ať to poběží v hlavním vlákně nebo někde jinde, logika bude stejná. Prostě s dostatečnou vzorkovací frekvencí čti ze vstupu data a dle potřeby zareaguj. Stačí ti na to if a nanosleep().
Tady posílám kód, zadefinoval do threadu - vymaskování bitů.
Přiznám se, že mne tam mate to vlákno, nicméně něčím vzorkovat musím, tak mne když tak naveďte pokud je to sémanticky blbě.
Můžeš stručně popsat jakou to má mít funkci? Co vlastně od toho kódu očekáváš? Jaké parametry (časování) má signál, který měříš?
Co podle tebe má dělat tento kus kódu?
for(int i = 0; i < 8; i++){ //vymaskovani jednotlivych bitu
stav = (int)(pins & 1); //stav jednotlivych bitu po bitovem logickem soucinu
pins >>= 1; //bitovy posun doprava
}
Jestli chceš jen zjistit jestli je kterýkoliv z dolních 8 bitů v 1, proč nepoužiješ toto:
if ((pins & 0xFF) != 0) {
cout >> stav; // Ale co vlastně má v proměnné stav být? Nechceš spíš vypsat pins?
}
Jen za podmínky že jasně popíšeš co má kód dělat, ti někdo dokáže poradit.