Skip to content

click-analyzer

Opis

Bloczek click-analyzer służy do analizy sygnału logicznego reprezentującego stan przycisku albo innego wejścia dwustanowego. Rozpoznaje moment naciśnięcia, długiego przytrzymania oraz puszczenia przycisku i udostępnia te zdarzenia na osobnych wyjściach.

Bloczek ma jedno wejście i sześć wyjść. Nie wymaga stosowania wejść oznaczanych za pomocą bloczka tag.

Parametry konfiguracyjne

Nazwa parametru Wartość
time_limit Parametr obowiązkowy określający próg długiego naciśnięcia w milisekundach. Musi być dodatnią liczbą całkowitą większą od zera. Jeśli przycisk pozostaje w stanie true co najmniej przez ten czas, bloczek zgłasza długie naciśnięcie.

Obsługa wejścia

Bloczek wymaga co najmniej jednego połączenia wejściowego. Jeśli przy inicjalizacji wejście nie jest do niczego podłączone, bloczek przechodzi w stan błędu Input disconnected..

Bloczek obsługuje wyłącznie wartości, które dają się zinterpretować jako logiczne true albo false. Wartości, których nie da się odczytać jako stan logiczny, są ignorowane.

Szczegółowe zasady działania:

  • zmiana false -> true jest traktowana jako naciśnięcie i natychmiast wyzwala wyjście naciśnięcia
  • od momentu naciśnięcia rozpoczyna się odmierzanie czasu time_limit
  • jeśli wejście pozostaje w stanie true przez co najmniej time_limit, bloczek jednorazowo wyzwala wyjście długiego naciśnięcia
  • zmiana true -> false jest traktowana jako puszczenie i zawsze wyzwala wyjście puszczenia
  • jeśli puszczenie nastąpi przed upływem time_limit, bloczek dodatkowo wyzwala wyjście krótkiego puszczenia
  • jeśli puszczenie nastąpi po upływie time_limit, bloczek dodatkowo wyzwala wyjście długiego puszczenia
  • powtórne otrzymanie tej samej wartości co poprzednio jest ignorowane, więc bloczek reaguje tylko na rzeczywistą zmianę stanu
  • podczas trwania długiego naciśnięcia sygnał długiego naciśnięcia jest generowany tylko raz; dalsze trzymanie przycisku nie powoduje ponownych impulsów
  • ostatnie wyjście bloczka zawsze odzwierciedla bieżący stan wejścia jako wartość logiczną

Wyjścia bloczka

Numer i nazwa wyjścia Opis wyjścia
1. Naciśnięcie. Krótki impuls logiczny false -> true -> false generowany przy zmianie wejścia z false na true.
2. Długie naciśnięcie. Krótki impuls logiczny false -> true -> false generowany po upływie czasu time_limit, jeśli wejście nadal pozostaje w stanie true.
3. Puszczenie. Krótki impuls logiczny false -> true -> false generowany przy zmianie wejścia z true na false.
4. Krótkie puszczenie. Krótki impuls logiczny false -> true -> false generowany wtedy, gdy przycisk zostanie puszczony przed upływem time_limit.
5. Długie puszczenie. Krótki impuls logiczny false -> true -> false generowany wtedy, gdy przycisk zostanie puszczony po upływie time_limit.
6. Aktualny stan wejścia. Bieżąca wartość logiczna wejścia. Na tym wyjściu pojawia się true, gdy wejście jest aktywne, oraz false, gdy wejście jest nieaktywne.

Opis statusu bloczka

Opis widoczny pod bloczkiem odzwierciedla ostatni rozpoznany stan:

  • ready oznacza stan początkowy po poprawnej inicjalizacji
  • pressed oznacza, że wejście jest aktualnie w stanie true
  • released (short) oznacza, że ostatnie puszczenie nastąpiło przed upływem time_limit
  • released (long) oznacza, że ostatnie puszczenie nastąpiło po upływie time_limit

Błędy zwracane przez bloczek

Bloczek może zwracać następujące błędy:

Kod błędu Opis błędu
Invalid time_limit. Parametr time_limit nie został podany, nie jest poprawną liczbą całkowitą albo ma wartość mniejszą lub równą zero.
Input disconnected. Do wejścia bloczka nie podłączono żadnego innego bloczka.

Przykłady działania

  • Jeśli time_limit = 500, to zmiana wejścia false -> true, a następnie true -> false po 200 ms wyzwoli wyjścia: Naciśnięcie, Puszczenie i Krótkie puszczenie.
  • Jeśli time_limit = 500, to zmiana wejścia false -> true, utrzymanie stanu przez 700 ms i dopiero potem zmiana true -> false wyzwoli wyjścia: Naciśnięcie, Długie naciśnięcie, Puszczenie i Długie puszczenie.
  • Jeśli wejście pozostaje w stanie true dłużej niż time_limit, wyjście Długie naciśnięcie zostanie wygenerowane tylko raz.
  • Jeśli bloczek kolejno otrzyma true, a potem ponownie true bez wcześniejszego false, drugie zdarzenie zostanie zignorowane.