Zdarzenia

reticulan
Posty: 237
Rejestracja: 29 maja 2018, 21:37
Miasto: Częstochowa
System DCC: Roco 10764

Re: Zdarzenia

Post autor: reticulan »

Acha czyli program nie wie kiedy lok zmienił kierunek tylko wie kiedy wydam polecenie zmiany kierunku loka w programie. Czyli defacto sprawdza program a nie dekoder. No dobrze. To idąc tym tropem można stworzyć zdążenie które zareaguje na nastawy prędkości. Czyli: gdy ustawie prędkość loka w programie np na 50km to wykonaj dana operacje. Można tak to robić. Byłoby to zbliżone z wartością rzeczywista pomijając opóźnienia hamowania i przyspieszania czyli cv3 u cv3. Może by Pan testowo dodał ze trzy nastawy. Np na 30, 50 oraz 80 km i sprawdzę czy to by działało. Tylko że zdążenie musiało by być np że gdy nastawa na 30 lub więcej to wykonaj costam. Itp bo idealnie się czasem nie nastawi prędkości że względu na 28 kroków i nie trafi się w warunek dokładnie.
reticulan
Posty: 237
Rejestracja: 29 maja 2018, 21:37
Miasto: Częstochowa
System DCC: Roco 10764

Re: Zdarzenia

Post autor: reticulan »

To samo by się przydało dla. Gdy ustawiona prędkość mniejsza lub równa od 30, 50, 80 km/h.... Wykonaj operacje wg zdarzenie
Awatar użytkownika
gbbsoft
Admin
Posty: 2179
Rejestracja: 09 lip 2008, 23:19
Miasto: Warszawa
System DCC: Lenz + Roco

Re: Zdarzenia

Post autor: gbbsoft »

Jest zdarzenie "Po zmianie prędkości". Proponuje je spróbować użyć. Można użyć bloku "Jeżeli" aby wprowadzić warunek testowania aktualnej (wg programu) prędkości lokomotywy.

this.ActiveTrain.Speed_Km() <=30

PS. Funkcja podaje prędkość w km/h, o ile lokomotywa jest sprofilowana. W przeciwny razie trzeba użyć: this.ActiveTrain.Speed <= 14. Speed podaje prędkość w krokach.

PS2. To już było omawiane m.in. na 5 stronie tego wątku
reticulan
Posty: 237
Rejestracja: 29 maja 2018, 21:37
Miasto: Częstochowa
System DCC: Roco 10764

Re: Zdarzenia

Post autor: reticulan »

Tyle że ja nie posiadam informacji zwrotnej. Stąd pomysł o wstawienie tej funkcji w zdażeniach lokomotywy. Więc nie mam bloków zrobionych.
reticulan
Posty: 237
Rejestracja: 29 maja 2018, 21:37
Miasto: Częstochowa
System DCC: Roco 10764

Re: Zdarzenia

Post autor: reticulan »

Czy w takim wypadku gdy nie mam bloków bo nie mam informacji zwrotnej można wrzucić takie zdarzenia do zdarzeń lokomotyw?
Awatar użytkownika
gbbsoft
Admin
Posty: 2179
Rejestracja: 09 lip 2008, 23:19
Miasto: Warszawa
System DCC: Lenz + Roco

Re: Zdarzenia

Post autor: gbbsoft »

Ależ one są na poziomie lokomotywy. :-)
reticulan
Posty: 237
Rejestracja: 29 maja 2018, 21:37
Miasto: Częstochowa
System DCC: Roco 10764

Re: Zdarzenia

Post autor: reticulan »

Hmm. Ok. Sprawdzę dlaczego to przeoczyłem. 😃
reticulan
Posty: 237
Rejestracja: 29 maja 2018, 21:37
Miasto: Częstochowa
System DCC: Roco 10764

Re: Zdarzenia

Post autor: reticulan »

Faktycznie jest..:) i działa.

Mam tylko pytanie jak często program sprawdza stan lokomotywy (w programie)? Pytam, ponieważ jak dam więcej niż jedno polecenie w zdarzeniu "po zmienia prędkości" to są one wykonywane z dość dużym opóźnieniem, pomiędzy 5-8 sekund. Pierwszy spełniony warunek jest wykonywany błyskawicznie a kolejny już z opóźnieniem sporym.

I drugie pytanie, czy jest wyrażenie sprawdzające prędkość lokomotywy w danym przedziale np pomiędzy 20 a 40 km/h. Coś na wzór:

this.ActiveTrain.Speed_Km() ><20:40 istnieje coś podobnego?
Awatar użytkownika
gbbsoft
Admin
Posty: 2179
Rejestracja: 09 lip 2008, 23:19
Miasto: Warszawa
System DCC: Lenz + Roco

Re: Zdarzenia

Post autor: gbbsoft »

Teoretycznie powinien wykonywać jedno po drugim. Zakończenie pierwszego wywołuje rozpoczęcie wykonywania drugiego.

Jeżeli nie program zmienia prędkości, to sprawdza (nie częściej niż) co 0.5s stan lokomotywy w centralce. Może tu jest problem.


Tam się pisze albo w VB albo w C#, czyli raczej tak:
this.ActiveTrain.Speed_Km()>20 && this.ActiveTrain.Speed_Km()<40
reticulan
Posty: 237
Rejestracja: 29 maja 2018, 21:37
Miasto: Częstochowa
System DCC: Roco 10764

Re: Zdarzenia

Post autor: reticulan »

Trenuje bez połączenia z DCC, więc raczej nie sprawdza dekoderów. Poprostu to wygląda jakby była jakaś pauza pomiędzy zdarzeniami. Jeszcze sprawdzę wpisując wszystko w pętli w jednym zdarzeniu bo teraz mam po kilka zdarzeń pod jednym "po zmianie prędkości". Może to powoduje opóźnienia.

Czyli w danym warunku mam wpisać this.ActiveTrain.Speed_Km()>20 && this.ActiveTrain.Speed_Km()<40 jednym ciągiem?
ODPOWIEDZ