Autor Wątek:  [CTR] Rozkład jazdy  (Przeczytany 18036 razy)

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

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6112
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 34
[CTR] Rozkład jazdy
« dnia: 25 Kwietnia 2011, 02:56:49 »
Zabrałem się za analizę kodu wczytującego rozkład jazdy, więc opiszę tutaj, jak powinien być taki plik skonstruowany. W poniższym opisie przez słowo należy rozumieć ciąg znaków niezawierający białych znaków (spacja, tabulacja, nowa linia). Plik ten składa się ze słów, a podział na poszczególne wiersze jedynie zwiększa przejrzystość (mogło by być wszystko w jednej linijce). Również nie ma znaczenia ilość spacji czy szerokość kolumn (z wyjątkiem kolumny prędkości szlakowej, która może zawierać znacznik zmiany prędkości |_____|, z pięcioma podkreśleniami między kreskami pionowymi).

  • Pierwsza linijka (górna ramka) powinna zawierać co najmniej 19 znaków podkreślenia. Zawartość linijek wcześniejszych będzie ignorowana, co oznacza, iż można dopisać w nich dodatkowe informacje.
    ______________________________________________________________
  • Druga linijka musi się zaczynać otwierającym nawiasem kwadratowym [, a następnie musi być słowo Rodzaj, po nim wyszukiwana jest kreska pionowa |, a następnie jest nazwa pociągu, która musi być taka sama, jak nazwa pliku (inaczej błąd -7). Pośrednio jest to przyczyną, że rozkłady nie mogą być umieszczone w podkatalogu scenerii.
    [ Rodzaj i numer pociagu                         | TME4252     ]
  • Kolejne słowa są pomijane, aż do takiego, który zawiera _______| (7 podkreśleń i pionową kreskę — zwykle trzecia linijka). Ewentualnie można po pierwszej linii wstawić kolejne linie z dodatkowymi informacjami, o ile nie będą zawierały szukanego ciągu.
    [________________________________________________|_____________]
  • W kolejnej linii oczekiwany jest otwierający nawias kwadratowy [, a za nim pionowa kreska luzem |, a za nią pierwsza miejscowość relacji. Nazwa nie może zawierać spacji.
    [                                                | Koniewice   ]
  • W kolejnej linii musi znajdować się słowo Relacja, a za nim pionowa kreska luzem |, po której jest druga miejscowość relacji (również bez spacji).
    [ Relacja pociagu                                |  Wielki_Kac ]
  • W kolejnej linii poszukiwane jest słowo Wymagany (oddzielenie poziome od relacji nie jest wymagane), a za nim znów pionowa kreska luzem |, po której następuje liczba zakończona znakiem %.
    [________________________________________________|_____________]
    [ Wymagany % ciezaru hamujacego                  | 106%        ]
  • W kolejnej linii poszukiwane jest słowo Seria, a po pionowej kresce luzem | powinien być typ lokomotywy oraz liczba, oddzielone spacjami.
    [________________________________________________|_____________]
    [ Seria i obciazenie lokomotywy                  | EU07 234    ]
  • Kolejne linie są ignorowane, aż do znalezienia słowa zawierającego ciąg [______________ (kwadratowy nawias otwierający i 14 podkreśleń). Kolejne pozycje stanowią spis stacji, maksymalnie może być ich 100. Ostatni wiersz zawiera znacznik końca _|_ (pokreślenie, pionowa kreska, podkreślenie).
    [________________________________________________|_____________]
  • Linijka stacji zaczyna się od kwadratowego nawiasu otwierającego [, jeśli go nie będzie, pojawi się błąd -4. Kolejne słowo może być kilometrażem, albo zawierać pionową kreską |. Jeśli ją zawiera, może też zawierać znacznik zmiany prędkości szlakowej |_____| (pionowa kreska, 5 pokreśleń, pionowa kreska). Jeśli nie ma tego znacznika, kolejne słowo powinno być pionową kreską albo prędkością szlakową (wtedy po niej dalsze słowa są pomijane aż do pionowej kreski). Kolejne słowo to nazwa stacji (również bez spacji). Następne słowa są pomijane, aż do znalezienia słowa 1 albo 2 — jest to ilość torów szlakowych. Dalej może być pionowa kreska albo czas przyjazdu w postaci HH.MM albo MM (z wyjątkiem pierwszej stacji). Następnie słowa są pomijane aż do pionowej kreski luzem (jak już była zamiast godziny, to musi być druga). Następne słowo to albo nawias kwadratowy zamykający, albo "czas jazdy do tej stacji w minutach".
    [ 47.0  |     | Koniewice                        2  10.18 |    ]
  • Dalsze słowa są ignorowane aż do nawiasu kwadratowego otwierającego. Jeśli kolejne słowo nie zawiera pionowej kreski, zostanie ono zignorowane i wzięte zostanie następne (czyli tu kilometraż już nie może być, a przynajmniej nie będzie mieć znaczenia). Może ono również zawierać wspomniany znacznik zmiany prędkości szlakowej. Jeśli nie, spodziewana jest prędkość szlakowa i pionowa kreska albo sama pionowa kreska. Następnie znajduje się zakodowana informacja o typie i wyposażeniu stacji (oddzielanie przecinkami). Kolejne słowa są ignorowane, aż do znalezienia 1 albo 2 (znaczenie j. w., nadpisuje poprzednie). Następnie jest pionowa kreska lub czas odjazdu — jeśli jest podany, wyliczany jest czas oczekiwania jako różnica do czasu przyjazdu zwiększona o 6 sekund. Kolejne słowa są pomijane aż do pionowej kreski, po której jest opcjonalnie "czas jazdy do tej stacji w minutach" (nadpisze poprzedni) albo nawias kwadratowy zamykający luzem.
    [       |     |      R1,OT,S                     2        |    ]
  • Kolejne słowa są ignorowane aż do słowa zawierającego nawias kwadratowy otwierający. Jeśli nie zawiera ono znacznika końca _|_, to pod uwagę brane jest kolejne. Jeśli analizowane słowo nie zawiera kreski pionowej, to wczytywane jest kolejne (jakby znów pomijanie kilometrażu). Dalej jest identycznie jak w poprzednich dwóch linijkach — można podać prędkość szlakową albo znacznik zmiany prędkości. Następnie musi być słowo zawierające pionową kreskę, a następnie zawierające nawias zamykający (może być to samo). Cyfra i minusy to już raczej do ozdoby i żeby nie wygenerować znacznika końca podkreśleniami obok pionowej kreski.
    [       | 90  |----------------------------------2--------|----]
  • Dalej mogą być informacje o kolejnych stacjach. Jeśli jednak słowo zawiera znacznik końca, to dalej już nie jest wczytywane, czyli można spokojnie dokleić jakieś objaśnienia.
    [_______|_____|__________________________________2________|____]

Przenoszę do poradników. @Stele
« Ostatnia zmiana: 31 Marca 2018, 11:37:30 wysłana przez Stele »

Offline adzik

  • Wiadomości: 58
    • Zobacz profil
  • Otrzymane polubienia: 0
Odp: Rozkład jazdy
« Odpowiedź #1 dnia: 21 Maja 2011, 20:03:23 »
@Ra
Z całym szacunkiem dla wykonanej pracy, ale myślałeś o stworzeniu programu-parsera do tworzenia rozkładu jazdy zgodnie z interfejsem wczytywania aplikacji eu07.exe? Mógł by to być zwykły program w konsoli, gdzie za pomocą komend wprowadzalibyśmy odpowiednie dane po czym generował gotowy plik (zapewne *.txt)?
Generalnie pomogło by to uniknąć pomyłek bądź uchybień ze strony osób tworzących rozkłady.

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6112
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 34
Odp: Rozkład jazdy
« Odpowiedź #2 dnia: 21 Maja 2011, 21:41:45 »
Główny problem na razie polega na tym, że jedyną informacją z rozkładu, używaną przez AI, jest ostatnia podana prędkość. W związku z powyższym cała reszta nie ma większego znaczenia. Chciałbym przynajmniej zrobić tak, żeby można było podczas symulacji podejrzeć rozkład, ewentualnie czas odjazdu z najbliższej stacji. W dalszej perspektywie edytor rozkładów miałby sens. Niemniej na razie trzeba się zastanowić, czy w ogóle taka forma ma pozostać, czy nie lepiej by było zapisywać rozkład w pliku CSV, który byłby łatwiejszy do utworzenia i przetworzenia, a wizualizacja graficzna była by wtedy wtórna.

Offline El Mecánico

  • Wiadomości: 1067
  • Dawniej El Driver
    • Zobacz profil
    • Stowarzyszenie POLARIS - OPP
  • Otrzymane polubienia: 2
Odp: Rozkład jazdy
« Odpowiedź #3 dnia: 24 Maja 2011, 21:11:21 »
Zapewne CSV będzie dużo lepszy, ale dobrze by było, żeby starter potrafił zrobić papierowy wydruk lub eksport do postaci gotowej. Niektórzy jednak wolą karteczkę w łapce trzymać:)
www.polaris.org.pl
www.ciemneniebo.pl
MaSzyna_LD w trakcie tworzenia...

Offline popatrz

  • Wiadomości: 588
    • Zobacz profil
  • Otrzymane polubienia: 2
Odp: Rozkład jazdy
« Odpowiedź #4 dnia: 29 Sierpnia 2012, 18:17:19 »
Główny problem na razie polega na tym, że jedyną informacją z rozkładu, używaną przez AI, jest ostatnia podana prędkość.
Czy w związku z tą zmianą:
http://rainsted.com/pl/Symulator/MaSzyna/EU07.EXE_355#2._Przypisanie_nowego_rozk.C5.82adu

AI zaczęło interpretować np. prędkości szlakowe lub komendy na stacjach?
« Ostatnia zmiana: 29 Sierpnia 2012, 18:22:15 wysłana przez popatrz »

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6112
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 34
Odp: Rozkład jazdy
« Odpowiedź #5 dnia: 29 Sierpnia 2012, 20:03:51 »
Nie, w związku z tą:
http://rainsted.com/pl/Symulator/MaSzyna/EU07.EXE_212#31._Zatrzymywanie_AI_na_W4

Moja wiadomość z maja 2011 jest już nieaktualna. Na stacjach nie ma komend.

Offline popatrz

  • Wiadomości: 588
    • Zobacz profil
  • Otrzymane polubienia: 2
Odp: Rozkład jazdy
« Odpowiedź #6 dnia: 30 Sierpnia 2012, 06:45:15 »
Super że to działa. Będę chciał zrobić poprawne sterowanie domyślnym pociągiem przez AI w Całkowo-Orlen (odpowiednią prędkość szlakową, reakcje na semafory, w4, w5, w14, w9, w27, tm), zastanowię się więc nad skorzystaniem z SRJP.
Muszę wyrobić w sobie nawyk wstecznego czytania historii Twoich zmian w poszczególnych EXE'kach ;)