Autor Wątek:  Sterowanie ruchem przez zewnętrzną aplikację  (Przeczytany 36592 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline El Mecánico

  • Wiadomości: 1067
  • Dawniej El Driver
    • Zobacz profil
    • Stowarzyszenie POLARIS - OPP
  • Otrzymane polubienia: 2
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #30 dnia: 01 Marca 2017, 21:15:48 »
Jeśli taki SCS miałby możliwość odczytu i zapisu komórek pamięci, to zajętości można zostawić na eventach, tam gdzie są, zamieniając je tylko na ustawienie arbitralnej wartości dla true (tor wolny) lub false (tor zajęty), albowiem fachowo mówi się o niezajętości toru.
www.polaris.org.pl
www.ciemneniebo.pl
MaSzyna_LD w trakcie tworzenia...

Offline dymus

  • Zasłużony dla Symulatora
  • Wiadomości: 1046
    • Zobacz profil
  • Otrzymane polubienia: 274
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #31 dnia: 01 Marca 2017, 21:32:52 »
Cytuj
Jeśli taki SCS miałby możliwość odczytu i zapisu komórek pamięci, to zajętości można zostawić na eventach
Hmm ale po co zostawaiać komórki pamięci, skoro SCS w samych swoim pulpicie pokazuje zajętości torów oraz blokuje już ustawiony przebieg, tak że już inne sprzeczny go nie ustawi?
Chyba że chodzi o rozwiązanie tymczasowe na istniejących sceneriach, ale tak czy tak w torach mają być odcinki izolowane zajętości dla SCS'a więc tak czy tak zajętośc pokaże, pomijając używanie komórek pamięci.

Offline miko22

  • Wydział Promocji
  • Wiadomości: 619
  • Promocja MaSzyny w terenie
    • Zobacz profil
    • Nasze-Symulatory.pl
  • Otrzymane polubienia: 200
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #32 dnia: 01 Marca 2017, 21:57:11 »
@miko22: W SCS-ie trzeba od razu mieć wszystkie stacje?
Jeśli uda się usunąć z odpowiednich plików eventy sterujące tylko jedną stacją, to pewnie można by sterować na początek tylko tą jedną stacją, a reszta mogłaby działać po staremu - tak myślę. Problemem może być właśnie usunięcie eventów tylko dla wybranej stacji. Do usuwania wszystkich z całej scenerii jest z MaSzyną dołączony program "EventoUsuwacz_v1.0" w folderze "programy_na_potrzeby_symulatora", a w przypadku pojedynczej stacji pewnie trzeba by to zrobić ręcznie. Nigdy się w to nie zagłębiałem, próbowałem tylko kiedyś sił z napisaniem scenariusza. A link do ISDR-a podałem głównie po to, żebyś sobie zobaczył, jak takie urządzenia (akurat w tym przypadku przekaźnikowe) działają w rzeczywistości - nastawianie przebiegów, ich utwierdzanie, realizacja, ręczne rozwiązywanie i wygaszanie sygnałów, czasami dodatkowe zależności dla sąsiednich rozjazdów, działanie i obsługa poszczególnych rodzajów blokad liniowych itd.

Offline Paul

  • Zasłużony dla Symulatora
  • Wiadomości: 523
    • Zobacz profil
    • Beskidzka Strona Kolejowa
  • Otrzymane polubienia: 16
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #33 dnia: 03 Marca 2017, 12:52:59 »
Cytuj
Czyli tak: ustawianie się semaforów powinno być w MaSzynie, przebiegi i uzależnienia też.

Główną ideą SCS jest przeniesienie logiki sterowania na zewnątrz, z uwagi na to że implementacja przebiegów i uzależnień w eventach jest bardzo utrudniona - życzę powodzenia w odwzorowaniu sterowania dużą stacją zgodnie z tablicą zależności, z wszystkimi wykluczeniami i ciągłą kontrolą stanu elementów. To co było dotychczas na eventach to raczej prowizorka dla wybranych przebiegów, choć z punktu widzenia maszynisty działała - przynajmniej dopóki dwa pociągi nie trafiły z jakiegoś bzdurnego powodu na jeden tor, uniemożliwiając kontynuację scenariusza.

Oczywiście wszystko zależy od twórcy scenerii, SCS nie jest "jedynym słusznym" rozwiązaniem - można też zrobić tak, że eventy wykonawcze będą dostosowane do SCS, ale wariantowo można będzie włączyć scenerię z dołączonym plikiem eventów realizujących logikę, i w takim wariancie SCS nie będzie używany.

Cytuj
Odcinki izolowane są obsługiwane i są wykorzystywane w SCS do sygnalizowania zajętości, a wygaszanie semaforów to klasyczy event _s1, mozna by albo zostawić klasyczy event albo wg zajętości toru za semaforem.

Nie tylko do sygnalizowania zajętości, przy wyświetlaniu sygnału kontrolowana jest niezajętość całej drogi przebiegu, nie tylko odcinka za semaforem. Ponadto zajętość jest konieczna do śledzenia przemieszczania się pociągów (przesuwanie numerów), bez którego nie zadziała pełna automatyka. Event wygaszający może się przydać jako zabezpieczenie na wypadek niespodziewanego rozłączenia, kiedy SCS semafora nie wygasi (ale przy rozłączeniu już cała symulacja zacznie się sypać z powodu utraty części informacji).

Cytuj
W sumie to na razie nie jest ważne czy będzie sterowaniem SCS czy pulpitem bo tak czy siak potrzebny jest jakiś interfejs do wymiany sensownych danych. Jeden interfejs można wykorzystać do komunikacji z każdym programem ;) Zrobić trzeba sprawną komunikację z SCS a w przyszłości może uda się podpiąć pulpit kostkowy do SCS-a albo bezpośrednio

Interfejs wymiany danych używający WM_COPYDATA i eventów jest już opracowany i działa. Nie jest to interfejs specyficzny dla SCS, może być wykorzystany w innych aplikacjach sterujących, testowałem to wstępnie z urządzeniami E i pulpitem kostkowym, nie było problemów. Pytanie czy zostanie taki interfejs sterowania (przynajmniej "prowizorycznie"), czy zmienione zostanie medium transmisyjne (np. na TCP/IP, co było omawiane - można dostosować SCS), czy w ogóle wszystko zostanie zmienione, łącznie z zakresem i formatem przesyłanych danych (o ile ma to jakiś sens, skoro zostało już zrobione; jak na razie uwag do mojego rozwiązania nie ma). W roboczych exe++ zdaje się WM_COPYDATA aktualnie nie chodzi.

Pozostaje jeszcze kwestia interfejsu (głównie blokady liniowe) pomiędzy dwoma procesami SCS, lub ogólnie między aplikacjami sterującymi. Mam na to pewne pomysły, choć w Maszynie chyba nie będzie to w najbliższym czasie potrzebne.

Cytuj
W SCS-ie trzeba od razu mieć wszystkie stacje?

SCS będzie mógł obsługiwać wybrane stacje, reszta może działać po staremu na eventach lub może jej nie być - np. uruchamiamy scenerię w wariancie tylko z jednym odcinkiem, pomijając wczytywanie drugiego odcinka, który nie będzie potrzebny w danym scenariuszu. W przypadku sterowania częściowo z SCS i częściowo po staremu może być problem z powiązaniem i przekazywaniem informacji (np. numery pociągów, wykluczenia jazd na szlakach) między jednym i drugim rozwiązaniem - nie jest to jednak dużym problemem jeżeli podział jest tymczasowy, z uwagi na stopniowe dostosowywanie scenerii do sterowania z zewnątrz.

Cytuj
Jeśli taki SCS miałby możliwość odczytu i zapisu komórek pamięci, to zajętości można zostawić na eventach, tam gdzie są, zamieniając je tylko na ustawienie arbitralnej wartości dla true (tor wolny) lub false (tor zajęty), albowiem fachowo mówi się o niezajętości toru.

Chyba jednak prościej przypisać odcinki izolowane niż kombinować z eventami. Pierwsze prototypy SCS powstały przed wprowadzeniem odcinków izolowanych, wykrywały zajętości właśnie eventami torów, działało to kiepsko (niby działało, do czasu aż na torze nie znalazły się dwa pociągi, albo jakiś skład się nie rozłączył, po czym zostawiona część znikała z toru). Odcinki izolowane zostały wprowadzone dla eliminacji problemów z eventami torów.
automatyka sterowania ruchem kolejowym rox
www.isdr.pl | www.bsk.isdr.pl | pokrzesik.wytnij@gmail.com

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #34 dnia: 03 Marca 2017, 13:20:43 »
W roboczych exe++ zdaje się WM_COPYDATA aktualnie nie chodzi.
W tym momencie chodzi teoretycznie, tzn jest w kodzie ale nie mam jak przetestowac funkcjonalnosci. Musialby to sprawdzic ktos inny. A docelowo i tak zapewne sugerowana przesiadka na tcp/ip bedzie sensowna, w ramach pracy na innych systemach niz windows itp.

edit: natomiast co do samych ewentualnych zmian w sterowaniu, zakladam ze jest to cos, co sobie opracuje Firleju w ramach ewentualnych zmian tego, jak zorganizowana jest symulacja itp (jako ze jest to dziedzina ktora sie zajmowal, wiec chyba najlepiej wie co tam bedzie sensowne)
« Ostatnia zmiana: 03 Marca 2017, 13:23:08 wysłana przez tmj »

Offline AtapiCl

  • Zasłużony dla Symulatora
  • Wiadomości: 4426
    • Zobacz profil
    • O warszawskiej części linii kolejowej nr 7 Warszawa – Lublin i nie tylko ;)
  • Otrzymane polubienia: 212
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #35 dnia: 03 Marca 2017, 14:20:58 »
Starter Ra ma przecież przycisk Multiplayer i tam jest komunikacja przez WM, trzeba tylko w eu07.ini mieć multiplayer ustawione na 1.

Offline Paul

  • Zasłużony dla Symulatora
  • Wiadomości: 523
    • Zobacz profil
    • Beskidzka Strona Kolejowa
  • Otrzymane polubienia: 16
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #36 dnia: 03 Marca 2017, 15:02:50 »
Sprawdziłem eu07++170301, SCS nie dostaje od niego komunikatów. Stare exe (sprzed konwersji) przy identycznej konfiguracji współpracuje prawidłowo.
automatyka sterowania ruchem kolejowym rox
www.isdr.pl | www.bsk.isdr.pl | pokrzesik.wytnij@gmail.com

Offline Milek7

  • Administrator
  • Wiadomości: 1051
    • Zobacz profil
  • Otrzymane polubienia: 906
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #37 dnia: 03 Marca 2017, 15:40:06 »
nie działa bo nazwa klasy jest chyba zła. mógłbyś sprawdzić czy działa przy klasie GLFW30?

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #38 dnia: 03 Marca 2017, 16:07:54 »
Starter Ra ma przecież przycisk Multiplayer i tam jest komunikacja przez WM, trzeba tylko w eu07.ini mieć multiplayer ustawione na 1.
Jest to byc moze proste gdy sie wie jak to ustrojstwo uruchomic, ale po wyszukaniu czegos co wyglada na instrukcje (http://eu07.pl/forum/index.php/topic,26661.0.html) moje proby zakonczyly sie na punkcie
Cytuj
4. Plik scenerii bez zbędnych rzeczy, z którego będzie można utworzyć RSF dla serwera ruchu. Przykładowy plik dla Linii 61
i paragraf tekstu w ktorym moze rozezna sie jakis doswiadczony trasopisarz, ale na pewno nie ja. paczka calosciowa nie ma zadnych gotowych plikow .rsf, a o sensownym debugowaniu na linii 61 mozna z gory zapomniec. Bez pliku .rsf przycisk "uruchom serwer" nie robi nic. Jesli ktos moglby zrobic plik .rsf dla TD to byloby super. Sprobuje jeszcze, czy uda mi sie moze uruchomic SCS, chociaz na sukces specjalnie sie nie nastawiam :s

edit: ok, po uruchomieniu scenerii anp_test.scs komunikacja nie nastepuje, niewazne w jakiej kolejnosci uruchomie programy. Podejrzewam ze Milek ma racje, i komunikaty z SCS nie docieraja, bo zmienila sie nazwa klasy okna symulatora.
« Ostatnia zmiana: 03 Marca 2017, 16:22:13 wysłana przez tmj »

Offline Milek7

  • Administrator
  • Wiadomości: 1051
    • Zobacz profil
  • Otrzymane polubienia: 906
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #39 dnia: 03 Marca 2017, 16:19:39 »
do licha z tym copydata, robię socketa tcp
widzę to tak: SCS tworzy serwer tcp, eu07 łączy się pod adres wskazany w ini
przesyłane komunikaty są jak obecne DaneRozkaz, tylko po iSygn jeszcze dodać uint32 z długością payloadu (czyli bez iSygn, długości i iComm).
EDIT: wszystkie inty i floaty w big endian, inaczej niż obecnie. (we wszystkich protokołach jest raczej big endian)
może być, czy jakieś inne propozycje?

PS: ten SCS ma być szansę otwartoźródłowy czy nie?
« Ostatnia zmiana: 03 Marca 2017, 16:39:57 wysłana przez Milek7 »

Offline CX MANIAK

  • Wiadomości: 241
    • Zobacz profil
  • Otrzymane polubienia: 41
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #40 dnia: 03 Marca 2017, 16:30:18 »
Witam.
 U mnie na najnowszej kompilacji exe C++ z SCS nie współpracuje. Teoretycznie według loga, symulator wysyła komunikaty. Sprawdziłem dla pewności na Next4, łączy się bez problemu.
Pozdrawiam.

Offline Paul

  • Zasłużony dla Symulatora
  • Wiadomości: 523
    • Zobacz profil
    • Beskidzka Strona Kolejowa
  • Otrzymane polubienia: 16
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #41 dnia: 03 Marca 2017, 17:36:55 »
nie działa bo nazwa klasy jest chyba zła. mógłbyś sprawdzić czy działa przy klasie GLFW30?

To było oparte o opisy okien, a nie nazwy klas - dlatego SCS po ustawieniu trybu WM_COPYDATA ustawia sobie opis TEU07SRK, i wyszukuje okna EU07. Niezbyt elegancko, ale przez buga w środowisku nie mogę zmienić deklarowanej nazwy klasy okna.

widzę to tak: SCS tworzy serwer tcp, eu07 łączy się pod adres wskazany w ini
przesyłane komunikaty są jak obecne DaneRozkaz, tylko po iSygn jeszcze dodać uint32 z długością payloadu (czyli bez iSygn, długości i iComm).

Może lepiej serwer w EU07, a SCS jako klient - żeby można było połączyć więcej niż jedną aplikację z EU07, np. dwa stanowiska SCS, różne systemy sterowania dla różnych stacji itp. Ogólnie dobrze byłoby wpasować to do jakiejś przyszłościowej koncepcji symulacji sieciowej z wieloma maszynistami.

wszystkie inty i floaty w big endian, inaczej niż obecnie. (we wszystkich protokołach jest raczej big endian)

Ja mam wszystko w little endian, razem ze standardowymi funkcjami zapisu/odczytu ze strumieni, EU07 ma jakoś inaczej? Musiałbym je odwracać (co w ostateczności nie jest skomplikowane, ale może się coś pomieszać).

PS: ten SCS ma być szansę otwartoźródłowy czy nie?

Nie za bardzo, a co byś potrzebował podejrzeć?
automatyka sterowania ruchem kolejowym rox
www.isdr.pl | www.bsk.isdr.pl | pokrzesik.wytnij@gmail.com

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #42 dnia: 03 Marca 2017, 18:00:17 »
wyszukuje okna EU07. Niezbyt elegancko, ale przez buga w środowisku nie mogę zmienić deklarowanej nazwy klasy okna.
Nie bardzo rozumiem, w jaki sposob wyszukujesz okno EU07? Jesli funkcja FindWindow() to mozna w niej zadeklarowac nazwe wyszukiwanego okna lub jego klase. Sek w tym ze po przenosinach na glfw nazwa klasy okna EU07 zostala zmieniona na GLFW30. Wyszukiwanie po nazwie wydaje sie raczej malo precyzjne, bo ta zmienia sie zaleznie od prowadzonego pojazdu.

Offline Paul

  • Zasłużony dla Symulatora
  • Wiadomości: 523
    • Zobacz profil
    • Beskidzka Strona Kolejowa
  • Otrzymane polubienia: 16
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #43 dnia: 03 Marca 2017, 18:33:01 »
Sprawdziłem i faktycznie, SCS szuka nazwy klasy EU07, nie nazwy okna, natomiast w drugą stronę było szukanie nazwy okna - TEU07SRK. Mogę zmienić z EU07 na GLFW30, ale i tak SCS nie dostaje komunikatów od EU07.
automatyka sterowania ruchem kolejowym rox
www.isdr.pl | www.bsk.isdr.pl | pokrzesik.wytnij@gmail.com

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #44 dnia: 03 Marca 2017, 18:46:32 »
Jesli to nie problem, czy mozesz dolaczyc tutaj wersje SCS, ktora komunikuje sie z klasa GLFW30? Moge wtedy sprawdzic czy jakiekolwiek komunikaty przychodza z SCS.

fake edit: wyglada na to, ze symulator probuje wysylac sygnaly do okna klasy "TEU07SRK", a nie o nazwie "TEU07SRK". Rozumiem, ze nie mozesz zmienic nazwy klasy, dam poprawke, zeby w przypadku porazki probowal znalezc tez okno o takiej nazwie, powinno pomoc. Albo mozliwosc definiowania nazwy klasy okna odbiorcy w .ini, jako prowizorka wystarczy
edit: a nie, probuje szukac i tak, i tak. przyjrze sie dokladniej, ale w miedzyczasie to exe i tak by sie przydalo ;)
« Ostatnia zmiana: 03 Marca 2017, 18:48:01 wysłana przez tmj »

Offline Milek7

  • Administrator
  • Wiadomości: 1051
    • Zobacz profil
  • Otrzymane polubienia: 906
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #45 dnia: 03 Marca 2017, 18:54:34 »
Może lepiej serwer w EU07, a SCS jako klient - żeby można było połączyć więcej niż jedną aplikację z EU07, np. dwa stanowiska SCS, różne systemy sterowania dla różnych stacji itp. Ogólnie dobrze byłoby wpasować to do jakiejś przyszłościowej koncepcji symulacji sieciowej z wieloma maszynistami.
Właśnie ja myślałem że scs powinien być serwerem żeby można było w przyszłości podłączyć więcej symulatorów do jednej nastawni.
Ale jeżeli wchodzimy w takie połączenia multi-symulator - multi-nastawnia, to może faktycznie warto wykorzystać ZeroMQ, tak jak firleju proponował.
Jak już zmieniamy na coś porządniejszego to trzeba się też zastanowić czy dalej zostajemy na takiej serializacji adhoc w kodzie, czy może np. użyć protobuf3.

Ze źródłami mi chodzi o to, że jeżeli scs miałby być kiedyś wykorzystany jako zamiennik eventów przy tworzeniu scenerii, to imo raczej wymogiem jest żeby wszystkie komponenty dostarczane z maszyną były otwartoźródłowe. Dopiero co otworzone zostały źródła eu07 i są prace nad wieloplatformatyzacją kodu, więc wracanie do zamkniętych blobów to moim zdaniem krok wstecz.

Offline Paul

  • Zasłużony dla Symulatora
  • Wiadomości: 523
    • Zobacz profil
    • Beskidzka Strona Kolejowa
  • Otrzymane polubienia: 16
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #46 dnia: 03 Marca 2017, 21:09:55 »
Jesli to nie problem, czy mozesz dolaczyc tutaj wersje SCS, ktora komunikuje sie z klasa GLFW30? Moge wtedy sprawdzic czy jakiekolwiek komunikaty przychodza z SCS.

W załączniku. Teraz wysyła do GLFW30, ale nie wygląda na to żeby EU07 na to reagował. Przy czym SCS czeka na komunikat gotowości od EU07, i dopiero potem sam zaczyna wysyłać komunikaty, w pierwszej kolejności żądanie stanu odcinków. Dorobiony został przycisk ODBL udający zgłoszenie gotowości, po jego kliknięciu można przez kilkanaście sekund próbować coś wysyłać (aż SCS nie wykryje oszustwa i ponownie się nie zablokuje). Jak jest potrzeba, to przygotuję prosty program do testowania wysyłania komunikatów WM_COPYDATA bez takich kombinacji.

Właśnie ja myślałem że scs powinien być serwerem żeby można było w przyszłości podłączyć więcej symulatorów do jednej nastawni.

W takim razie w miejsce SCS w tej koncepcji potrzebny jest serwer, do którego podłączać będą się klienci: EU07, właściwy SCS i opcjonalnie inne programy. W takim układzie EU07 może być klientem TCP/IP. Nie wiem jak tu w przyszłości wcisnąć innych klientów EU07 dla multiplayera - całość wymaga dokładniejszego przemyślenia, chyba że traktujemy to rozwiązanie jako "tymczasowe".

Ze źródłami mi chodzi o to, że jeżeli scs miałby być kiedyś wykorzystany jako zamiennik eventów przy tworzeniu scenerii, to imo raczej wymogiem jest żeby wszystkie komponenty dostarczane z maszyną były otwartoźródłowe. Dopiero co otworzone zostały źródła eu07 i są prace nad wieloplatformatyzacją kodu, więc wracanie do zamkniętych blobów to moim zdaniem krok wstecz.

SCS nie jest elementem Maszyny, tylko oddzielnym projektem, łączy się z Maszyną dynamicznie. Niezależnie używany jest w TD2 oraz jednym komercyjnym projekcie. Nie wydaje mi się, żeby przez dostosowanie do Maszyny przechodziła na niego licencja kodu Maszyny. Chyba że to wymóg dla wszystkiego co włączane ma być do paczki z Maszyną - w takim razie SCS będzie musiał być udostępniony oddzielnie.
automatyka sterowania ruchem kolejowym rox
www.isdr.pl | www.bsk.isdr.pl | pokrzesik.wytnij@gmail.com

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #47 dnia: 03 Marca 2017, 23:39:40 »
OK, chyba udalo mi sie przywrocic komunikacje, ale nie wiem czy na 100% -- programy lacza sie, stan zajetosci torow jest uaktualniany, i rozkazy takie jak ustawianie zwrotnic czy kontrola przejazdow dzialaja, ale kazda proba ustawienia przebiegu konczy sie komunikatem "Nie mozna ustawic przebiegu" bez proby wyslania komunikatu przez SCS. Byc moze robie tutaj cos zle.

Dolaczone uaktualnione exe, jesli mozesz, sprawdz czy bedziesz mial wiecej szczescia.

Offline Paul

  • Zasłużony dla Symulatora
  • Wiadomości: 523
    • Zobacz profil
    • Beskidzka Strona Kolejowa
  • Otrzymane polubienia: 16
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #48 dnia: 04 Marca 2017, 00:00:56 »
Odczytywanie zajętości i sterowanie poszczególnymi obiektami wskazuje że sama komunikacja jest ok. "Nie można ustawić przebiegu" oznacza raczej jakiś problem po stronie SCS, a nie w komunikacji, chyba że np. któreś odcinki błędnie wykazują zajętość.

Ale na razie chyba nie sprawdzę, załączone exe eu07++170304 wysypuje się po zakończeniu ładowania scenerii - "Nazwa modułu z błędem: ig4icd32.dll". Przesłać .dmp w wątku exe, czy to jakiś znany problem i coś pominąłem? Wersja eu07++170301.exe mi się uruchamiała.
automatyka sterowania ruchem kolejowym rox
www.isdr.pl | www.bsk.isdr.pl | pokrzesik.wytnij@gmail.com

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #49 dnia: 04 Marca 2017, 00:03:04 »
Podeslij jesli mozesz, to sie raczej nie powinno zdarzyc, nie zmienialem w kodzie nic szczegolnego.

jesli google nie klamie, to ten .dll to sterownik graficzny dla kart intela :<  jesli poprzednio uzywales 170301, to podejrzewam ze posypal sie na zmianie nieba na VBO ktore nastapilo w 170302, byc moze za stary na to jest.
« Ostatnia zmiana: 04 Marca 2017, 00:09:14 wysłana przez tmj »

Offline Krzysiek626

  • Zasłużony dla Symulatora
  • Wiadomości: 5925
  • EXIT
    • Zobacz profil
    • Krzysiek626
  • Otrzymane polubienia: 445
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #50 dnia: 04 Marca 2017, 00:10:55 »
Na Nvidi, odpalilem 1070304, bez zadnych problemow.

Offline Paul

  • Zasłużony dla Symulatora
  • Wiadomości: 523
    • Zobacz profil
    • Beskidzka Strona Kolejowa
  • Otrzymane polubienia: 16
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #51 dnia: 04 Marca 2017, 13:46:47 »
W eu07++170304b komunikacja działa prawidłowo (nie licząc sypania się przy niektórych eventach, o czym napisałem w wątku exe). Jeżeli nadal pojawiają się problemy z ustawianiem przebiegów, podaj więcej szczegółów (które przebiegi, log).
automatyka sterowania ruchem kolejowym rox
www.isdr.pl | www.bsk.isdr.pl | pokrzesik.wytnij@gmail.com

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #52 dnia: 06 Marca 2017, 18:41:39 »
Trzeba delikatnie podsumować:
- W wizji Pawła każda instancja SCS steruje tylko jednym obiektem
- obiekt może być całą scenerią lub pojedynczymi stacjami, tak?
- w jaki sposób instancje SCS przekazują sobie informacje o kolejnych pociągach?
- czy jest sens uruchamiać więcej niż jedną instancję jeśli nie mamy multiplayera?
- może osobne scenerie dla muli i osobne dla single, wtedy wiele rzeczy by się upraszczało
- należy posiadać warstwę nadrzędną zlecającą SCS poszczególne kroki (tj obecnie połączenie dyspozytora z dyżurnym jak mniemam)
- aby to działało potrzebny jest opis senariusza (co jak sądzę jest w opracowaniu)
- aby móc zrobić docelowo miltiplayer potrzeby jest hub wymieniający dane, więc można to wykonać od razu
- w każdej opcji dobrze jest przenieść komunikację na TCP. Co do big/little indian może to robić hub, i tak będzie musiał być osobnym procesem / programem
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline Paul

  • Zasłużony dla Symulatora
  • Wiadomości: 523
    • Zobacz profil
    • Beskidzka Strona Kolejowa
  • Otrzymane polubienia: 16
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #53 dnia: 07 Marca 2017, 00:55:46 »
- W wizji Pawła każda instancja SCS steruje tylko jednym obiektem
- obiekt może być całą scenerią lub pojedynczymi stacjami, tak?

Tak, instancja SCS steruje "tylko" pojedynczymi stacjami lub całą scenerią. Czym więcej miałby sterować?

Przewiduję ponadto możliwość zmiany zasięgu sterowania, np. wprowadzone są dane całej scenerii, a obejmowane jest sterowanie połową stacji. Druga połowa stacji może być sterowana czymś innym, albo może jej nie być (przy modułowej budowie scenerii z wybranych odcinków, czy tam komórek scenerii).

- w jaki sposób instancje SCS przekazują sobie informacje o kolejnych pociągach?

Tym zająłby się serwer trzymający topografię sieci, stan blokad i pip (numery pociągów), do którego logowały by się instancje SCS (albo inne aplikacje sterujące, np. pulpit kostkowy). Ale na razie to tylko koncepcja.

- czy jest sens uruchamiać więcej niż jedną instancję jeśli nie mamy multiplayera?

Niezbyt. Chyba że multiplayer typu kilku dyżurnych steruje jednym maszynistą...

- może osobne scenerie dla muli i osobne dla single, wtedy wiele rzeczy by się upraszczało

Raczej wspólne, a przynajmniej ze wspólnym opisem infrastruktury i otoczenia, różniące się ewentualnie jakimiś incami ze szczegółami sterowania. Nie powinno być ograniczeń zastosowania scenerii tylko offline, lub tylko w multiplayerze.

- należy posiadać warstwę nadrzędną zlecającą SCS poszczególne kroki (tj obecnie połączenie dyspozytora z dyżurnym jak mniemam)
- aby to działało potrzebny jest opis senariusza (co jak sądzę jest w opracowaniu)

Multiplayer z dyżurnymi nie wymaga warstwy nadrzędnej - dyżurni sami będą sterować. Gdy sterowanie ma być automatyczne, SCS potrzebuje planu przebiegów, będącego czymś w rodzaju opisu scenariusza (co, skąd, dokąd, kiedy ma pojechać), i to już działa. W razie potrzeby można dodać warstwę nadrzędną która będzie dynamicznie modyfikować plan przebiegów, czyli zarządzać ruchem.

- aby móc zrobić docelowo miltiplayer potrzeby jest hub wymieniający dane, więc można to wykonać od razu
- w każdej opcji dobrze jest przenieść komunikację na TCP. Co do big/little indian może to robić hub, i tak będzie musiał być osobnym procesem / programem

Z pewnością jakiś hub musi być, jeżeli w symulacji ma brać udział coś więcej niż jedna instancja EU07 i jedna SCS. Na potrzeby sterowania hub będzie przekazywał polecenia i meldunki stanów między EU07 i instancjami SCS/innych aplikacji sterujących. Na poziomie huba lub za hubem z mojej strony potrzebny będzie jeszcze jakiś serwer zajmujący się działaniem blokad i przekazywaniem informacji pomiędzy SCS/aplikacjami sterującymi, oraz być może dodatkowo zarządzający uprawnieniami do sterowania poszczególnych stacji przez poszczególne aplikacje nastawni, trzymający stany sterowania na wypadek wyłączenia się klienta nastawni. Otwarta pozostaje kwestia roli i zasad działania huba przy wielu instancjach EU07.
automatyka sterowania ruchem kolejowym rox
www.isdr.pl | www.bsk.isdr.pl | pokrzesik.wytnij@gmail.com

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #54 dnia: 07 Marca 2017, 16:04:16 »
Jesli pojawi sie serwer tcp w exe, to mozna by pomyslec o czyms w stylu, mozliwosc uruchomienia exe w trybie 'master', do ktorego moga nastepnie podlaczac sie inne exe (niekoniecznie symulator, rowniez SCS itd) i rejestrowac sie jako a) kontroler okreslonego pojazdu b) zrodlo komunikatow/eventow dla obiektow (jak rowniez liste obiektow ktorych stanem jest zainteresowany, zeby nie pchac stanu calej trasy do kazdej stacji) I w takim ustawieniu 'master' przekazuje otrzymane sygnaly od zarejestrowanych klientow do pozostalych, a kazdy klient juz sobie we wlasnym zakresie liczy/wizualizuje symulacje. Idealnie synchronizowane to nie bedzie, bo wejda opoznienia sieci itp, wiec komunikacje trzeba bedzie troche poszerzyc, ale w praktyce bylby to calkiem funkcjonalny multiplayer.
« Ostatnia zmiana: 07 Marca 2017, 16:06:26 wysłana przez tmj »

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #55 dnia: 08 Marca 2017, 12:14:36 »
Żeby nie dociążać exe takimi zadania lepiej mieć odrębny kawałek softu, który mógłby służyć też jako miejsce rozsyłania plików / scenerii (wtedy jest pewność, że wszyscy mają taką samą).

SCS dla całości czy dla stacji to jest kwestia czy opis scenariusza, w którym muszą być też zawarte polecenia dla pojazdów łatwiej będzie robić osobno dla każdej stacji czy dla pociągu czy może dla wszystkiego naraz.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline Paul

  • Zasłużony dla Symulatora
  • Wiadomości: 523
    • Zobacz profil
    • Beskidzka Strona Kolejowa
  • Otrzymane polubienia: 16
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #56 dnia: 08 Marca 2017, 13:46:31 »
Mojej "części serwerowej" SCS/sterowania nie ładowałbym na pewno do exe EU07, zwłaszcza że być może będzie też używana w TD2. To raczej będzie klient serwera EU07, obsługujący klientów nastawni, być może uruchamiany na tej samej maszynie co EU07.

Co do "scenariuszy" w SCS, raczej widzę to jako rozkłady jazdy poszczególnych pociągów, uzupełnione o dodatkowe polecenia, z których przez jakiś interfejs automatycznie będzie generowany plan przebiegów dla SCS. Rozdzielanie tego na osobne instrukcje dla każdej stacji będzie niezbyt wygodne.
automatyka sterowania ruchem kolejowym rox
www.isdr.pl | www.bsk.isdr.pl | pokrzesik.wytnij@gmail.com

Offline stregielek

  • Wiadomości: 22
    • Zobacz profil
  • Otrzymane polubienia: 10
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #57 dnia: 08 Marca 2017, 13:54:03 »
Zerknijcie jak działa wersjonowanie scenerii u nas to troche wam będzie łatwiej. Każdorazowa edycja pliku .sc powoduje wygenerowanie sumy kontrolnej i załadowanie nowego pliku .sc na serwer w momencie uruchomenia trybu dyżurnego.
W ten sposób klienci podłączający się zawsze mają aktualną wersję scenerii bo pobierają ja z serwera.

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #58 dnia: 08 Marca 2017, 15:54:10 »
Żeby nie dociążać exe takimi zadania lepiej mieć odrębny kawałek softu, który mógłby służyć też jako miejsce rozsyłania plików / scenerii (wtedy jest pewność, że wszyscy mają taką samą).
Sek w tym, ze ten odrebny kawalek i tak bedzie musial miec w zasadzie pelna funkcjonalnosc symulatora (oprocz moze strony wizualnej, dlatego m.in. wspominalem ze jednym z celow zmian powinno byc rozdzielenie symulacji od renderingu) wiec czy dolozy sie do exe pare klockow, czy tez dolozy sie symulator do tej samej pary klockow i nazwie sie to "odrebny kawalek softu", to i tak wyjdzie na to samo :) Ale w przypadku odrebnego softu dojdzie koniecznosc wprowadzania zmian do dwoch programow i utrzymywania tychze, zamiast tylko jednego... co chyba nie jest zbyt praktyczne.

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Sterowanie ruchem przez zewnętrzną aplikację
« Odpowiedź #59 dnia: 09 Marca 2017, 11:31:45 »
Ty myślisz o czymś co liczy poruszanie się pojazdów, a ja myślę o czymś co przesyła policzone elementy na poszczególnych kompach do innych, żeby zwizualizować przemieszczenia jedynie. Druga wersja nie wymaga implementowania niczego oprócz odpowiedniego interfejsu TCP i ewentualnie sprawdzania czy wszystkie klienty mają uruchomioną tą samą wersję scenerii. Po co rozdzielać?
Wg mnie są tylko dwa tryby: pełny singiel, gdzie wszystko liczymy na exe a hub służy do komunikacji z jedną instancją SCS oraz pełny multi gdzie AI to może co najwyżej sterować scenariuszem ale nie ma składów AI.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es