Witajcie!
Mam problem ze swoim programem w C++. Problematyczna funkcja liczy czas pomiędzy wyciśnięciem fizycznego przycisku, a wciśnięciem go. Przycisk podłączony jest pod port LPT, obsługa jego działa sprawnie. Funkcja czas()
jest wywoływana w momencie, kiedy użytkownik programu wciśnie przycisk (tym razem taki w programie), a przycisk fizyczny jest wciśnięty. Potem następuje sprawdzanie, kiedy przycisk zostanie wyciśnięty (stan napięcia zmieni się na inny niż 1), uruchamiany jest stoper, potem znowu jest sprawdzanie, tym razem kiedy przycisk zostanie wciśnięty. Te oba sprawdzania zrobiłem za pomocą instrukcji goto
, co ja wiem, ani nie jest eleganckim rozwiązaniem, ani (w tym wypadku) wydajnym, bo w momencie sprawdzania procesor jest maksymalnie obciążony. Czym można by to zastąpić? W kodzie źródłowym pominąłem sam mechanizm odliczania czasu, uprościłem także funkcję odpowiedzialną za sprawdzanie napięcia na porcie, ale to chyba nie jest istotne do rozwiązania problemu. Z góry dzięki za pomoc.
void czas()
{
skok1:
if(Napiecie(LPT)==1)
goto skok1;
// w tym miejscu jest uruchamiany stoper
skok2:
if(Napiecie(LPT)==0)
goto skok2;
// w tym miejscu jest zatrzymywany stoper
}