Makieta Krzysztofa

Awatar użytkownika
gbbsoft
Admin
Posty: 2179
Rejestracja: 09 lip 2008, 23:19
Miasto: Warszawa
System DCC: Lenz + Roco

Re: Makieta Krzysztofa

Post autor: gbbsoft »

Krzysztof pisze: 07 sty 2019, 10:16 3. Czy można przypisać zdarzenia tak, żeby się nie pokrywały wzajemnie w lokach (nie mam na myśli zmiany w mapowaniu funkcji)
Może lepiej wykorzystaj zdarzenia w lokach a nie w blokach.
Zdarzenia w blokach raczej nie powinny zakładać jaki lok jest w bloku. A jeżeli chcesz dla różnych loków w bloku różne operacje wykonywać, to zostaje ci kwadrat "jeżeli", ale to strasznie upierdliwe i mało skalowalne rozwiązanie.
Krzysztof
Posty: 131
Rejestracja: 20 lis 2018, 14:39
System DCC: z21

Re: Makieta Krzysztofa

Post autor: Krzysztof »

1. co w takim razie mam zrobić aby prawidłowo działały semafory w blokach ?
2. ponieważ mam więcej loków niż ma ich jeździć jednocześnie na makiecie to może zrobić drugą planszę taka samą jako plansza "2" z innymi lokomotywami ? Wówczas nie będzie problemów z różnymi lokami w tym samym bloku ?? :-) Wolałbym uniknąć pętli "jeżeli".
Krzysztof
Posty: 131
Rejestracja: 20 lis 2018, 14:39
System DCC: z21

Re: Makieta Krzysztofa

Post autor: Krzysztof »

3. Wykorzystanie zdarzeń w lokach ? Dobry pomysł, ale po czym lokomotywa ma poznać w jakim jest bloku i jakie ma dźwięki z siebie wydać ? Inaczej ma mi się zachowywać w bloku stacyjnym a inaczej w bloku "na trasie"
Awatar użytkownika
gbbsoft
Admin
Posty: 2179
Rejestracja: 09 lip 2008, 23:19
Miasto: Warszawa
System DCC: Lenz + Roco

Re: Makieta Krzysztofa

Post autor: gbbsoft »

Chyba najlepiej po "Me.ActiveBlock.Name" czyli po nazwie bloku, w którym jest lok (ale tylko dla wydarzeń związanych ruchem loka w blokach)

Na przykład w "Jeżeli" można zbadać, czy pierwsza litera nazwy bloku to nie "A":
me.ActiveBlock.Name.Substring(0, 1)="A"
Krzysztof
Posty: 131
Rejestracja: 20 lis 2018, 14:39
System DCC: z21

Re: Makieta Krzysztofa

Post autor: Krzysztof »

Jeszcze raz pytania z poprzednich postów bo nie dałeś mi odpowiedzi :
1. co w takim razie mam zrobić aby prawidłowo działały semafory w blokach ?
2. ponieważ mam więcej loków niż ma ich jeździć jednocześnie na makiecie to może zrobić drugą planszę taka samą jako plansza "2" z innymi lokomotywami ? Wówczas nie będzie problemów z różnymi lokami w tym samym bloku ??
Awatar użytkownika
gbbsoft
Admin
Posty: 2179
Rejestracja: 09 lip 2008, 23:19
Miasto: Warszawa
System DCC: Lenz + Roco

Re: Makieta Krzysztofa

Post autor: gbbsoft »

ad1.
W twoim pliku widzę kilka semaforów z ustawionymi elementami DCC. Wybrałeś "dekoder akcesoriów" i (przykładowo) dla semafora BES2 ustawiłeś Czerwone na "nr zwrotnicy 45, wyjście 1".

Czy tak ustawiłeś ten semafor, który nie działa? Który to semafor, w którym bloku?

Jeszcze mi przychodzi taki pomysł: wstaw semafor wielokomorowy i w zakładce 'Elementy DCC' są dwa 'rodzaje dekoderów'. Spróbuj zdefiniować semafor najpierw dla jednego a potem dla drugiego rodzaju (mogą być to dwa semafory postawione jeden po drugim na trasie przed blokiem (tzw. repeatery)). Były centralki, które koniecznie chciały sterować dekoderami urządzeń jak rozjazdami.

ad2. Pomysł wygląda sensownie. Spróbuj.
Krzysztof
Posty: 131
Rejestracja: 20 lis 2018, 14:39
System DCC: z21

Re: Makieta Krzysztofa

Post autor: Krzysztof »

ad1. Każdy semafor adresuję (na tę chwilę) wg schematu :
np. blok BE mam dwa semafory : 1. BES1 adres 11 wejście 0 (zielony sygnał), wejście 1 (czerwony sygnał). W tym samym bloku drugi semafor BES2 ma adres 12 wejście 2 (zielony sygnał), wejście 3 (czerwony sygnał) i tak po kolei adresy po po kolei wejścia. Nie wpisuję niczego w okienka dotyczące zwrotnicy, czy to jest właśnie błąd ??? Zaznaczam, że w samej centrale klikanie na ikonki świateł pod tymi adresami działa poprawnie, ale to może nie ma znaczenia dla samego programu gbbkolejka.
ad.2 z pewnością spróbuję, bo też wydaje mi się to sensowne :-)

Na razie chciałbym w końcu uruchomić te semafory :-( żeby dokończyć testy jazdy między blokami.
Wiesz, bardzo ciekawą sprawę zauważyłem wczoraj. W tej pętli o której pisałem, że mi znika lok i nie wyjeżdza z bloku - dalej się to zdarza, ale tylko w przypadku używania zdarzeń w bloku, natomiast w drugiej pętli, którą uruchomiłem z ST44 Roco i takimi samymi zdarzeniami ten przypadek nie ma miejsca, działa bez zarzutu wg schematu : uruchomienie loka (silnik), zapowiedź dworcowa, gwizdek, włączenie stukotu i odjazd.
A ten lok SU45 Piko robi mi takie numery, bardzo ciekawy dla mnie to przypadek :-):-).
Krzysztof
Posty: 131
Rejestracja: 20 lis 2018, 14:39
System DCC: z21

Re: Makieta Krzysztofa

Post autor: Krzysztof »

Piotrze, zamykam wątek semaforow, już wszystko działa. Musiałem zaadresować w centralce semafory wg cyfr pokazywanych w gbbkolejka w okienkach dotyczących zwrotnic nie sygnalizacji. Czyli jak zwrotnica miała nr 45 to taki adres musialem wprowadzić w centralce. A kazdy następny semafor ma już automatycznie konfigurowany adres, 46,47 itd. W ten sposob bloki pprzetestowane,wszystko działa. W weekend zaczynam podpinać urzadzenia typu przejazd kolejowy i małe urządzonko z zapowiedziami. Potem montuję rozkład jazdy. Dziękuję za dotychczasową pomoc i sugestie.
Krzysztof
Posty: 131
Rejestracja: 20 lis 2018, 14:39
System DCC: z21

Re: Makieta Krzysztofa

Post autor: Krzysztof »

Cześć Piotrze, proszę Cię o podpowiedź w następującej kwestii. Jak skonstruować instrukcję warunkową dla zdarzenia w lokomotywie aby reagowala na trzy różne sposoby przed wyjazdem z bloku. Z powodzeniem wykorzystuję instrukcje "jeżeli " ale dotyczy ona sytuacji gdy lok jest w bloku A lub B a chcialbym to rozszerzyć o blok C. Czy jest możliwość zastosowania operatora "or" czyli "lub" ? W chwli obecnej mam instrukcję w bloku "jeżeli" o konstrukcji : this.ActiveBlock. Name=="BLOK A" to rób ....... i druga this.ActiveBlock.Name=="BLOK B" to rób........ Jak tu dodać jeszcze blok C ???. Myślałem o konstrukcji : this.ActiveBlock.Name=="BLOK B".or."BLOK C" ale nie wiem czy to bedzie prawidłowe ?
Awatar użytkownika
gbbsoft
Admin
Posty: 2179
Rejestracja: 09 lip 2008, 23:19
Miasto: Warszawa
System DCC: Lenz + Roco

Re: Makieta Krzysztofa

Post autor: gbbsoft »

Powinno być tak:

Kod: Zaznacz cały

this.ActiveBlock.Name=="BLOK B" or this.ActiveBlock.Name=="BLOK C"
"or" jest pomiędzy wyrażeniami logicznymi, a nie jest "wyliczanką" możliwych wartości... :-)

PS. W języku SQL istnieje konstrukcja:

Kod: Zaznacz cały

Name in ('BlokB', 'BlokC')
, ale w tym Basicu/C# chyba czegoś takiego nie ma...
ODPOWIEDZ