Wykrycie dwóch zdarzeń

Wykrycie dwóch zdarzeń
TM
  • Rejestracja: dni
  • Ostatnio: dni
0

Jak wykonać coś takiego:

Mam stoper który odlicza od 100 do 0 przy wykorzystaniu komponentu Timer1 z taktem co 1sek.

(w form create przypisuje Liczba:=100;)

Kopiuj
begin
  Dec (Liczba);
  if Liczba = 0 then //"ZADANIE"
    begin
       Timer1.Enabled:=FALSE;
       //... inne instrukcje
    end 
end;

Czyli po odczekaniu 100sek program wykonan jakąś instrukcje.
Chcę dodać do programu kolejny warunek czyli żeby z zewnątrz można było przerwać odliczanie 100sek do czasu wykonania "ZADANIA" poprzez przyciśnięcie przycisku. Mam takie urządzenie co monituje swój stan poprzez komende

Kopiuj
IOPort.GetLine (numer: Byte);

finkcja ta zwraca "0" lub "1" w zależności czy został naciśnięty przycisk czy nie
0 - nic
1 - naciśnięto przycisk

Kopiuj
repeat
until IOPort.GetLine (InpitLine1) = 1;
pelsta
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 819
0

Nie rozumiem dlaczego nie ustawisz Timer1.Interval = 100*1000 [msek] i następnie
w Timer1.OnTimer

Kopiuj
begin
  Timer1.Enabled:=FALSE;//wyłączenie na czas wykonania zadania
  //... inne instrukcje
  Timer1.Enabled:=True;//włączenie
end 
TM
  • Rejestracja: dni
  • Ostatnio: dni
0

Ponieważ używam wizualizację odmierzanego czasu czyli od 100 do 0 leci po kolei 100,99,98,97...,0 i teraz jak dojdzie do zero to wykonuje się "ZADANIE" lecz chcę wprowadzić że w czasie oczekiwania tych 100sek można przerwać odliczanie poprzez wykrycie przez IOPort naciśniętego przycisku.

Czyli mamy dwa zdarzenia jedno zlicza od 100..0 a drugie oczekuje na sygnał - wynikiem jednego z nich jest zatrzymanie drugiego i wykonania "ZADANIA". Dwa niezależne od siebie zdarzenia które mają wpływ na uruchomienia ZADANIA.

ilo
  • Rejestracja: dni
  • Ostatnio: dni
0

W drugim zdarzeniu, po naciśnięciu guzika ustaw sobie Liczba=1, wtedy zdarzenie w Timerze wywoła się przy najbliższym sprawdzeniu

  • Rejestracja: dni
  • Ostatnio: dni
0

można przerwać odliczanie poprzez wykrycie przez IOPort naciśniętego przycisku.

Timer1.Enabled:=false;. Banał.

Następnym razem może poczytaj zamiast zadawać banalne pytanie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.