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 -> truejest 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 -> falsejest 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:
readyoznacza stan początkowy po poprawnej inicjalizacjipressedoznacza, że wejście jest aktualnie w stanie truereleased (short)oznacza, że ostatnie puszczenie nastąpiło przed upływemtime_limitreleased (long)oznacza, że ostatnie puszczenie nastąpiło po upływietime_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ściafalse -> true, a następnietrue -> falsepo 200 ms wyzwoli wyjścia: Naciśnięcie, Puszczenie i Krótkie puszczenie. - Jeśli
time_limit = 500, to zmiana wejściafalse -> true, utrzymanie stanu przez 700 ms i dopiero potem zmianatrue -> falsewyzwoli 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 ponownietruebez wcześniejszegofalse, drugie zdarzenie zostanie zignorowane.