Информация: Уважаемые посетители! В течение нескольких месяцев на форуме существовала проблема с регистрацией новых пользователей, о которой администрации стало известно недавно. Если вы ранее пытались зарегистрироваться на форуме, но не получили на ваш e-mail письмо с ссылкой для подтверждения регистрации, просим вас зарегистрироваться повторно. Приносим извинения за доставленные неудобства. Если вы все еще испытываете проблемы с регистрацией на форуме, обратитесь за помощью на e-mail: mr.angelo@railroadsim.net

Аватара пользователя
Света
 
Сообщения: 433
Зарегистрирован: 18.06.2016, 19:38
Играю в: Train Simulator 2018
Роль: Разработчик
Блог: Просмотр блога (6)
Поиск в блогах

Константы и протокол межлокомотивного обмена

Постоянная ссылка Света 30.03.2018, 13:58

Выполняя ранее данное обещание:
Света писал(а):Так как обмен ещё на стадии разработки, я не могу предоставить протоколы сообщений на каждую константу. По завершении обязательно все будет.
выкладываю здесь описание использованных для межлокомотивного обмена константы и используемые под этими константами структуры записей.

POSITION_DATA = 1818190202
Используется для функцией определения взаимного расположения единиц ПС.
Протокол:
код - 1818190202, данные - "XFYFXRYRID"
XF, YF, XR, YR - координаты меток, спереди и сзади, умноженные на десять и занимающие строго по 5 знакомест
ID - внутренний номер ПС

Пример: "6933.5115.6926.4945.60722" ("60722" - № ПС)
Рассылка - при изменении длины состава


PROBE_COUPLINGS = 1818190203
Используется для определения состояния сцепок
Протокол:
код - 1818190203, данные - "blah"
Не обрабатывается
Рассылка - при изменении длины состава


ENGINE_SYNCHRO_CONTROL = 1818190301
Используется для синхронизации контролов. Ведущая секция рассылает данные, ведомые принимают и обрабатывают.
Протокол:
код - 1818190301, данные - "S:GR:TM:TC:зарезервировано:зарезервировано:зарезервировано:E"
S - стартовый символ
GR - давление в главном резервуаре
TM - давление в тормозной магистрали
TC - давление в тормозных цилиндрах
зарезервировано - не используется
E - завершающий символ

Пример: "S:8.00:4.83:0.00:E"
Рассылка - покадрово


ENGINE_LOCK_CONTROL = 1818190401
Используется для блокирования/разблокировки контролов в других секциях.
Протокол:
код - 1818190401, данные - "имя_контрола:значение:ID_отправителя"
Имя_контрола - название, заданное контролу в главном конфиге
Значение - число, 0 снимает блокировку, 1 - устанавливает
ID_отправителя - внутренний номер ПС

Пример: "Reverser:1:56218" ("56218" - № ПС) (заблокирует реверсор в локомотиве, принявшем сообщение)
Рассылка - при необходимости


ENGINE_STATE_QUERY = 1818190501
Используется для выяснения, какое значение имеет контрол в секции, которой адресован запрос
Протокол:
код - 1818190501, данные - "Query:имя_адресата:имя_контрола:имя_отправителя"
или
код - 1818190501, данные - "Answer:значение:имя_спрашивающего"

"Query", "Answer" - кодовые слова, указывающие статус сообщения (вопрос или ответ)
Имя_адресата - внутренний номер ПС, который опрашивается
Имя_отправителя, имя_спрашивающего - внутренний номер ПС, который сделал запрос и ждет ответ

Пример: вопрос - "Query:56218:Reverser:60722"
ответ - "Answer:1:60722"
Рассылка - при необходимости


ENGINE_REMOTE_CONTROL = 1818190601
Используется для дистанционного управления
Протокол:
код - 1818190501, данные - "имя_локомотива:имя_контрола:значение:индекс"
Имя_локомотива - внутренний номер локомотива, который отправил команду
Имя_контрола - устанавливаемый контрол, название, заданное контролу в главном конфиге
Индекс - число. Если "1", то команду обработает локомотив, непосредственно сцепленный с отправителем, если "2" - команда будет переслана следующему локомотиву (индекс "2" будет переписан на "1")

Пример: "56218:Reverser:1:1" ("56218" - № ПС) (установит реверсор в соседнем локомотиве, при условии, что локомотивы правильно сцеплены)
Рассылка - при необходимости


TRANSLATE_CONTROL_VALUE = 1818190701
Используется для обмена данными всеми секциями, соединенными между собой непосредственно
Протокол:
код - 1818190701, данные - пока пусто


DEF_LEADING_LOCOMOTIVE = 1818190801
Используется для определения старшинства локомотивов на основании внутренних номеров
Протокол:
код - 1818190801, данные - "leading_control:имя локомотива:query"
или
код - 1818190801, данные - "leading_control:имя локомотива:answer"
Имя_локомотива - внутренний номер локомотива, который отправил сообщение
"Query", "Answer" - кодовые слова, указывающие статус сообщения (вопрос или ответ)

Пример: вопрос - "leading_control:56218:query"
ответ - "leading_control:56218:answer"
Рассылка - при старте сценария в локомотивах под управлением AI


INTERVIEW_CONSIST = 1818190901
Используется для сбора локомотивом информации по составу
Протокол:
код - 1818190901, данные - "inquiry" - первый проход, запрос
или
код - 1818190901, данные - "data_capture:кол-во вагонов:длина:вес:к-во осей" - второй проход, сбор информации
или
код - 1818190901, данные - "answer:кол-во вагонов:длина:вес:к-во осей" - третий проход, ответ
Отправленный запрос проходит вдоль всего состава, пока не дойдет до крайнего вагона/локомотива, который меняет статус сообщения на "сбор данных" и отсылает его обратно. Передвигаясь под статусом "сбор данных", сообщение модифицируется каждой единицей ПС, пока не дойдет до крайнего вагона/локомотива с другой стороны, который сменит статус сообщения на "ответ" и отошлет обратно. С этим статусом сообщение будет пересылаться до тех пор, пока его не перехватит локомотив-отправитель.
Рассылка - при необходимости

Сильные люди - это не те, у которых всё хорошо, а те, у которых всё хорошо несмотря ни на что.
0 комментариев 2885 просмотров

Кто сейчас на конференции

Зарегистрированные пользователи: Bing [Bot], DeLis, le Sandro, Yandex [Bot]