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

Аватара пользователя
Света
 
Сообщения: 683
Зарегистрирован: 18.06.2016, 19:38
Играю в: Train Simulator 2018
Роль: Разработчик
Имя: Пандора
Блог: Просмотр блога (18)
Архивы
- Декабрь 2019
+ Ноябрь 2019
+ Октябрь 2019
+ Сентябрь 2019
+ Август 2019
+ Октябрь 2018
+ Август 2018
+ Май 2018
+ Март 2018
+ Август 2017
+ Июль 2017
Поиск в блогах

1 из 52 из 53 из 54 из 55 из 5

Светофорная сигнализация С65 (DSB240319). Часть 7. АЛСН.

Постоянная ссылка Света 04.10.2019, 14:02

Теперь поговорим о приемнике.
Что надо, чтобы принять "коды" АЛСН? Надо установить в разрабатываемый локомотив приемник-дешифратор. Я предоставляю готовый блок, который надо только подключить и активировать.
Подключить - это разместить скомпилированный скрипт рядом с главным скриптом (engine_script) локомотива и прописать в этом главном скрипте ссылку и вызов инициализации. Активировать - это прописать специальный код, разблокирующий защиту.

Итак, подключение.
Разместите файл скрипта рядом с главным скриптом локомотива. В самом начале главного скрипта впишите функцию require:
Код: Выделить всё
require "Assets/...ваш путь.../Module_ALSN_DSB240319.out"

Теперь надо проинициализировать и разблокировать дешифратор. Для этого в функции Initialise () вашего скрипта надо сделать вызов:
Код: Выделить всё
InitModuleALSN (код), где код - это разблокирующий ключ

Все, модуль подключен и готов к работе.

Использование.
Основной блок дешифратора срабатывает при получении сообщений от трансмиттеров. Поэтому располагаем рабочий вызов в теле функции OnCustomSignalMessage (ConsistMessage):
Код: Выделить всё
function  OnCustomSignalMessage (ConsistMessage)
   if string.sub (ConsistMessage, 1, 9) == "DSB250319" then
      local TB = CallModuleALSN (ConsistMessage, rev, lenght) or {"none"}
      if TB[1] == "none" then return end
      ...
      ваш обработчик
      ...
   end
end -- OnCustomSignalMessage (message)

Как можно видеть в коде, основа - вызов CallModuleALSN (ConsistMessage, rev, lenght). В этом вызове в функцию передается само сообщение, rev - это положение реверсивной рукоятки (если вперед, т.е., если надо принять коды спереди, передаем 0, если назад - 1); lenght - это длина состава. Если в скрипте нет глобальной переменной, содержащей значение длины состава, можно ничего не передавать, функция сама выполнит запрос.
Функция CallModuleALSN (ConsistMessage, rev, lenght), в случае успешного декодирования, возвращает таблицу с раскодированными данными, в приведенном примере это будет локальная таблица TB. В данной версии (1.0) это такие данные:
Код: Выделить всё
   TB.signal - ID светофора
   TB.anim - показания
   TB.state - состояние
   TB.aspect - аспект ("0" = "green", "1" = "yellow", "2" = "yellow", "3" = "yellow-red", "11" = "yellow", "-1" = "yellow-red")
   TB.als_en - уровень АЛС-ЕН
   TB.frequency - частота
   TB.type - тип передатчика
   TB.station - название станции
   TB.distance - расстояние к светофору

Сообщения от трансмиттеров поступают с периодичностью 1 сек +/-1%. Все данные в возвращаемой таблице - в формате строки.

Логирование.
Если что-то пошло не так, создайте папку Log в корневой папке игры. Если модуль декодера обнаружит ошибку, он сгенерирует в этой папке лог-файл, куда выведет информацию о ней.

Разблокировка.
Для того, чтобы декодер начал работать, его нужно разблокировать. Зачем? Ну, это такая защита. Чтобы скрипт могли использовать только те разработчики, кому известен разблокирующий ключ. Все для того, чтобы укозники не могли прикрутить этот скрипт в свои корыта. Поэтому, если вы укозник, сожалею, что вам пришлось аж сюда читать. Если же вы разработчик, имеющий позитивную репутацию на форуме - вообще никаких проблем, пишите в ЛС, я дам ключ.
Сразу предостерегаю любителей проявлять щедрость. Разблокирующий ключ содержит в себе информацию о том, кому он был передан. Следовательно, если на укозах всплывет поделка с декодером, я очень просто смогу узнать, кому был передан оригинал декодера и кто, таким образом, нарушил условия договора. Мне всего лишь надо будет скачать эту поделку и запустить её в специальном режиме.
А, об условиях договора на использование. Первое условие уже, собственно, озвучено - категорический запрет на разглашение разблокирующего ключа. Второе условие - запрет на переименование модуля декодера.
Скачать модуль декодера можно здесь.

Никогда не опускай руки, ведь впереди тебя ждет еще так много поводов опустить руки, а ты уже опустил руки.
1 комментарий 3497 просмотров
Комментарии

Re: Светофорная сигнализация С65 (DSB240319). Часть 7. АЛСН.

Постоянная ссылка semash 04.10.2019, 18:44

Спасибо, пригодится)
semash
 
Сообщения: 191
Зарегистрирован: 22.05.2018, 03:09
Имя: Sema
Блог: Просмотр блога (0)

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

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