gbbsoft pisze: ↑20 lip 2020, 08:19
ad1. Widzę tylko możliwość użycia "Blok_UstawPrzejazd". Ale bez informacji zwrotnej przejazd się nigdy nie skończy...
Wracając do tematu klikając prawym przyciskiem myszy na semaforze pojawia nam się menu jak na screenie i można wybrać sygnał na semaforze, analogicznie do wyboru trybu manewrowego loka z panelu lokomotywy.
Tryb manewrowy udało nam się ogarnąć, wiec może i zmianę sygnału udało by się wywołać na konkretnym semaforze. Mógłbym tego użyć w swoich scenariuszach w urządzeniu przycisk.
reticulan pisze: ↑20 lip 2020, 16:37
Wracając do tematu klikając prawym przyciskiem myszy na semaforze pojawia nam się menu jak na screenie i można wybrać sygnał na semaforze, analogicznie do wyboru trybu manewrowego loka z panelu lokomotywy.
Dodałem nową operację w zdarzeniach: Semafor_Zmiana. Wpisujesz nazwę semafora i numer sygnału, jaki chcesz ustawić.
Dla semaforów wielokomorowych, jest to numer sygnału na liście "Sygnały".
Dla semaforów prostych: 0 - stop, 1 - droga wolna, 2 - jazda ze zmniejszoną prędkością (o ile wystepuje).
No coś chyba źle ustawiam. poniżej screen z błędem podczas kompilacji. Może to nie pójdzie jeśli uruchamiam przez dekoder martineza? Aczkolwiek teraz testuje na "sucho" bez podłączonie DCC.
Możesz zrobić tak:
- Dodajesz najpierw "Wyrażenie_Całkowite" a zaraz za nim "Semafor_Zmień".
- w "Wyrażeniu_Całkowitym" ustawiasz: Argument1=0, Operacja1=Random, Argument2=<górny numer sygnału, który chcesz losować>
- Nastepnie w "Zapisz jako Całkowite" klikasz na "żółtą baryłkę" i wskazujesz "Semaphore_Change_Active"->SignalNo
Edit: Powyższa metoda jest błędna. Czytaj niżej: Należy użyć zmiennej globalnej
W tej sposób "Wyrażenie" losuje numer i wstawia go do "Semafor_Zmień" jako numer sygnału.
Jak działa "Random"?
Wynikiem Random pomiędzy Argument1 i Argument2 jest: Argument1+Losuj(Argument2), gdzie Losuj(n) generuje liczbe całkkowitą od 0 do n
Czyli, jeżeli chcesz wylosować liczbe od A do B musisz wpisać: Argument1:=A oraz Argument2:=(B-A)
PS. Jeżeli w "Operacja1" nie masz "Random", to zainstaluj najnowszą wersje testową :-)
1. Pobierz i zainstaluj nowszą wersję. Otworzyłeś "puszkę Pandory" to masz teraz... :-)
2. Z prędkościami też da radę tak zrobić.
3. Mój poprzedni przykład nie kompiluje się. Ponieważ "Wyrażenie" odwołuje się do "Semafora", który jest "później" na liście do wykonania, a okazuje się, że tak nie można. Wyjściem z tego jest stworzenie "Zmiennej globalnej".
4. Czyli:
- Tworzysz zmienną globalną typu "Liczba całkowita" o dowolnej sensownej nazwie (np: NumerSygnalu)
- Dodajesz najpierw "Wyrażenie_Całkowite" a zaraz za nim "Semafor_Zmień".
- w "Wyrażeniu_Całkowitym" ustawiasz: Argument1=0, Operacja1=Random, Argument2=<górny numer sygnału, który chcesz losować>
- Nastepnie w "Zapisz jako Całkowite" klikasz na "żółtą baryłkę" i wskazujesz zmienną globalną: NumerSygnału
- Następnie w "Semaphore_Change_Active"->SignalNo klikasz na "Zółtą baryłkę" i także wskazujesz zmienną globalną.
Drobna uwaga: Dla każdego takiego drzewka najlepiej stworzyć własną zmienną globalną. Lepiej nie używać danej zmiennej globalnej w wielu drzewkach na raz, bo przy jednoczesnym wykonywaniu wielu drzewek na raz, może źle działać i będzie to trudne do znalezienia...
5. W nowej wersji ten sam manewr można zrobić z opóźnieniem!
- Tworzysz zmienną globalną typu "TimeSpan"
- W "Wyrażeniu_Całkowitym" generujesz liczbe losową, która będzie w sekundach opisywać opóźnienie
- Dodałem "Zapisz jako TimeSpan" i wskazujesz zmienną globalną
- W "Czekaj" dla "TimeoutDuration" naciskasz "Zółtą baryłkę" i wskazujesz zmienna globalną stworzoną w kroku pierwszym.