|
Сайт | ПРАВИЛА ФОРУМА | FAQ | Регистрация | Справка | Пользователи | Социальные группы | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
17.01.2009, 19:22 | #1 |
Матёрый пользователь
|
Команды машинисту. Как они создаются?
Всем привет! У меня идея из области написания команд машинисту. Цель - создание некой универсальной команды, с помощью которой можно будет разводить несколько поездов на многопутных станциях по разным путям, которые заведомо неизвестны. Вот, существует довольно таки хорошая вещь как Path Control. Кто знает, тот сразу поймёт о чём речь, а для тех, кто не знает я вкратце поясню его предназначение.
Суть его в том, чтобы как команду машинисту задать в определённый момент команду сборки маршрута на определённый путь станции или с такового. В режиме редактора, в списке правил открывается это правило на редактирование и наглядно, с помощью мышки создаётся, например, маршрут прибытия на станцию. После задания определённого светофора по его идентификатору, например входной светофор как StationIn1? в специальном окне создаётся весь путь стрелок от этого светофора до следующего в соответствии с тем, как стрелки установлены в редакторе по умолчанию. Затем, кликая мышкой по стрелкам можно задать их то или иное положение, в зависимости от того, на какой путь нужно собрать маршрут. Потом этот маршрут сохраняется под определённым названием, например ЧетныйВходящийНа3йПуть. Таким образом программа как бы запомнила какие стрелки в каком положении должны будут быть после того, как будет подана команда Собрать маршрут -> Ждать/не ждать пока он соберётся -> ЧётныйВходящийНа3йПуть. На перегоне, логичнее всего ставить сразу после 3-го светофора от станции при 4-х значной сигнализации и сразу после 2-го светофора при 3-х значной сигнализации, ставится маркер. В командах машинисту ставится команда проследовать этот маркер, а затем вот та самая команда сборки маршрута. Таким образом, поезд прибывает на нужный нам путь. Так вот у Path Control есть существенный недостаток. Можно задать только один путь прибытия. И если он занят, то маршрут будет пытаться собраться до тех пор, пока он не освободиться. Выглядит это как периодическая сборка и разборка в исходное положение стрелок маршрута на 3-й путь. Так вот есть желание сделать подобную систему, только в настройке маршрута прибытия иметь возможность задать несколько альтернативных путей прибытия - на 3-й или на 4-й или на 5-й или на 6-й ... пути станции. А дальше уже срабатывает логическое Если и ИЛИ. То есть, если занят 3-й путь, собирать следующий из указанных на сборку маршрутов, если и этот занят - следующий и т.д. Можно даже и закольцевать. Есть и ещё один недостаток Path Control. Что как если 3-й наш путь свободен, но на него уже собран маршрут с противоположной стороны под встречный поезд? Особенно это актуально на однопутных участках. Path Control ничenm не смущаясь соберёт обоим встречным поездам маршрут прибытия на одни и тот же путь. Лишь бы на момент сборки 3-й путь был свободен. Поискав на Aurane какое-нибудь подходящее под эту идею правило, я так ничего и не нашёл (зато нашёл много чего интересного другого, но об этом как-нибудь в другой раз). Поэтому возникла идея создать это самому. Но опыта программирования для ТРС у меня нет, то бишь абсолютный 0. Однако опыт программирования на разных языках кое-какой имеется, поэтому, думаю в состоянии освоить и разобраться в языке (скриптов, наверное, да?) для ТРС. А вот в каком направлении двигаться, даже не знаю. Из того, что уже успел почерпнуть на форумах, предполагаю, что для этого есть какое-то отдельное приложение, вроде CMP для, в том числе, импортирования объектов. Если это так, то что это за дополнение такое, где его взять и на каких условиях и, конечно же, мануал. Пусть даже и на английском - разберусь. Конечно же, в основном это касается разработчиков, RMM, например. Ведь объеты тоже создавались не на коленках и не с потолка, верно? Я имею ввиду стрелки. В общем, что вы об этом всём думаете и сможете ли помочь, а? Ну пожааалуйста! |
01.01.2007, 12:00 | |
Яndex
Спонсор
Регистрация: 01.01.2007
Сообщения: 500
Реклама показывается изредка по случайному принципу |
РЕКЛАМА
|
17.01.2009, 21:20 | #2 |
Матёрый пользователь
Регистрация: 18.02.2008
Сообщений: 8,735
Вы сказали Спасибо: 1,426
Поблагодарили 2,391 раз(а) в 1,342 сообщениях
|
как известно, скрипт Path Control зашифрованный, а значит смотреть мы его не можем. Поэтому предлагаю начать с описания возможностей, которые удалось реализовать нашему гениальному соотечественнику Евгению Варванину (Varzу) на примере z6, которая почти этим и занимается.
Итак, эта сигналка при "просчёте маршрутов" определяет какие стрелки надо переключать и за какими маркерами следить, чтобы собрать маршрут. Поэтому проверку "а можно ли собрать маршрут от выходного до входного" лучше предоставить ей (в перспективе - з7). Затем нужен глобальный массив, который содержит информацию о занятости (или не занятости) станционных путей (не маневровых), и, дублируя сигналку, проверяет "заявки на создание маршрута". Т.е. должна выполняться одновременно только 1 заявка на 1 путь, если он свободен. Кроме того, должен быть массив, содержащий ссылки (или идентификаторы) стрелок, а также текущее состояние стрелки (свободна, замкнута в маршруте и "замкнута в маршруте, но поезд проехал"). Всё это необходимо потому, что самый распростанённый метод "не собрался маршрут - жди 5 с" здесь лучше не использовать, т.к. приятнее (и много быстрее) проверять "если часть стрелок маршрута занято, то ждать сообщения о том, что наш поезд съехал со всех стрелок, которые будут использованы в новом маршруте". В идеале сигналка должна передавать список маршрутов, и правило должно даже после "удачной сборки" правилом должна его проверить, и в случае "запрета", который "неизвестно чем вызван", должно "вставать в режим ожидания" и ждать момента, когда на станции прибытия (отправления) произойдёт ещё одно "событие сигнализации", и тогд повторить попытку. А вообще всем интересующимся сигналками и маршрутами предлаегается внимательно изучить скрипты Z6 - это полезнее всего. Чтоб хоть что-то понять, скажу что поток, обрабатываемый функцией "AddHandler" становится "ловителем" всех сообщений, посылаемых объекту, стоящему 1 в аргументах этой функции, с "майорами" и "минорами" (основное и дополн. "имена" сообщения). 4 аргументом является название этого потока От себя добавлю, что стрелки RМM просто при прохождении любого сообщения, связанного с стрелкой, проверяют её направление (право или лево), и соответственно меняют остряк (и рычаг, если есть), не более... Напомню, каждая стрека рассылает всем сообщения о том, что а) на неё наехал поезд б) её перевели в) с неё съехал поезд и что-то ещё. Так что смотрите z6, а в API раздел justion, а также "мультипоточность"(multythreading), "сообщения" (messages) и раздел "хендлеры"
__________________
местный зомбяк |
17.01.2009, 22:36 | #3 | |||
Матёрый пользователь
|
Цитата:
Цитата:
Цитата:
Да и как быть с авторскими правами, хотя тут менять то никто ничего не собирается. А кроме того, z6 всё же не расчитана на работу с дефолтными командами машинисту, поэтому тут несмотря на всю полезность такого мероприятия, много останется невыясненных вопросов. |
|||
17.01.2009, 22:52 | #4 |
Матёрый пользователь
|
мля народ, ну пожалейте читающих, осилить монолитный текст сложно, глаза по строчкам пролетают. Ну и конкретно спросить нельзя чтоли, зачем строчить километровые посты? И так ясно, что надо читать ССГ, АПИ, смотреть готовые образцы типа з6(7)
|
17.01.2009, 23:09 | #5 |
Матёрый пользователь
Регистрация: 18.02.2008
Сообщений: 8,735
Вы сказали Спасибо: 1,426
Поблагодарили 2,391 раз(а) в 1,342 сообщениях
|
скрипты, если они не зашифрованы, открываются в любом текстовом редакторе (я свои 1000-строчные скрипты до сих пор делаю в блокноте)
Лично с моими авторскими правами скриптов DLC и проч. ты не столкнёшся, так что об этом не беспокойся. И ещё - если ты "втихаря у себя на компе" перерабатываешь чужие скрипты, никто тебя и не заметит. Главное - чтоб при выкладке не забывал указать всех авторов, которые хоть что-то писали в этом скрипте - тогда замечаний ни от кого не услышишь
__________________
местный зомбяк |
17.01.2009, 23:56 | #6 |
Пользователь
|
Привет. Кстати все зашифрованные скрипты открыты в Классик v3.
И упоминавшийся скрипт тоже. |
18.01.2009, 00:41 | #7 |
Матёрый пользователь
|
Сергей12 Оппа! а поподробнее с этого места можно? Как вообще скрипты открываются? Вон, TRam говорит, что они открываются в блокноте. А при чём здесь тогда компоновка приложения?
genesis Перестань, короткими бывают только анекдоты. А если, как известно, хочешь получить вразумительный ответ, задай вразумительный вопрос. TRam_, я же упоминал, что в скриптах полный ноль. Я могу открыть исходник в С, могу в 1С открыть. Где это файл, который открывается? И самое главное, как понять в том тексте какие процедуры и функции предопределённые, а какие пользовательские; какие аргуметы функций обязательны (и что они означают), а какие "передаваемые"? Плюс работа с объектами: каковы их свойства, как они читаются и меняются ну и т.д. P.S. Только что по вестям увидел: наши КАМАЗы в 8-й раз стали победителями "Париж-Дакар". С ума сойти! Что-то тут не то. Наверняка там от "Камаза" только название на решетке. :-)) |
18.01.2009, 14:25 | #8 |
Матёрый пользователь
Регистрация: 18.02.2008
Сообщений: 8,735
Вы сказали Спасибо: 1,426
Поблагодарили 2,391 раз(а) в 1,342 сообщениях
|
__________________
местный зомбяк |
18.01.2009, 17:34 | #9 | |
Тестер
|
Цитата:
Ну в общем - да. А побеждают они потому что этот дакар называют "самым престижным ралли-рейдом" чисто за не имением других ралли-рейдов. На самом деле он давно выродился в унылый междусобойчик, к которому участники (и пилоты и команды) относятся скорее как к возможности потусить. А наши там как латышские партизаны: война давно закончилась, но не для них [/оффтоп]
__________________
Последний раз редактировалось Gregory_777; 18.01.2009 в 17:37. |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
Опции просмотра | |
|
|
Что это? |