Wiki

Clone wiki

ALSN Provider / alsn_engine

ALSN_Engine

Содержит реализацию для работы дешифратора АЛСН. Выполняет поиск кода в рельсовой цепи и преобразует его в показание локомотивного светофора.

Этот класс не наследуется.

Подключение

include "alsn_provider.gs"
Создать экземпляр класса
ALSN_Engine alsn = new ALSN_Engine();
И вызвать одну из функций инициализации
alsn.Init(loco);
//или
alsn.Init(loco, startcode);

Интерфейс класса

final class ALSN_Engine isclass GameObject
{

  public define int IND_NONE              = 0;
  public define int IND_GREEN             = 1;
  public define int IND_YELLOW            = 2;
  public define int IND_REDYELLOW         = 4;
  public define int IND_RED               = 8;
  public define int IND_WHITE             = 16;
  public define int IND_REDYELLOWWHITE    = IND_REDYELLOW | IND_WHITE; УКБМ)   

  public define int FREQ_ALSN25           = 1;
  public define int FREQ_ALSN50           = 2;
  public define int FREQ_ALSN75           = 4;
  public define int FREQ_ALSN2575         = FREQ_ALSN25 | FREQ_ALSN75;

  public define int SD_TRAINDIRECTION     = 0;
  public define int SD_LOCOFORWARD        = 1;
  public define int SD_LOCOBACK           = 2;

  public final void Init(Locomotive sloco);

  public final void Init(Locomotive sloco, int code); 

  public final Locomotive GetLocomotive(void); 

  public final int GetFrequency(void); 

  public final int GetSearchDirection(void); 

  public final int GetCurrentCode(void); 

  public final void SetFrequency(int freq); 

  public final void SetSearchDirection(int dir); 

  public final void ResetToWhite(void);

  public final int SearchNextSignal(void); 

  public final void ResetRedYellow(void); 

  public final void ResetToNullState(void); 

  public final ALSN_Provider GetCurrentProvider(void);

  public bool AllowRedYellowAndWhite = false; 

  public bool FrequencyDisabled = false; 

};

Константы

Показания

Эти значения определяют показания локомотивного светофора.

Наименование Значение Описание
IND_NONE 0 АЛСН отключён
IND_GREEN 1 Зелёный индикатор АЛСН
IND_YELLOW 2 Жёлтый индикатор АЛСН
IND_REDYELLOW 4 Красный-жёлтый индикатор АЛСН
IND_RED 8 Красный индикатор АЛСН
IND_WHITE 16 Белый индикатор АЛСН
IND_REDYELLOWWHITE IND_REDYELLOW + IND_WHITE Красный-жёлтый + белый индикатор АЛСН 1

Параметры фильтра

Эти константы определяют частоты фильтров для получения кодов из рельсовой цепи

Наименование Значение Описание
FREQ_ALSN25 1 25Гц (АЛСН25)
FREQ_ALSN50 2 50Гц (АЛСН50)
FREQ_ALSN75 4 75Гц (АЛСН75)
FREQ_ALSN2575 FREQ_ALSN25 + FREQ_ALSN75 25Гц + 75Гц (АЛСН25 + АЛСН75)

Параметра поиска

Эти константы определяют направление поиска относительно локомотива

Наименование Значение Описание
SD_TRAINDIRECTION 0 Поиск выполняется по направлению поезда
SD_LOCOFORWARD 1 Поиск выполняется по направлению локомотива
SD_LOCOBACK 2 Поиск выполняется в противоположную, относительно направления локомотива сторону

Описание интерфейса

Init

public final void Init(Locomotive sloco);
* Описание: Инициализирует экземпляр класса * Параметры: sloco - Объект Locomotive, представляющий локомотив, с которым будет связан АЛСН. Значение null не допускается. * Заметка: Функция Init (любой вариации) должна быть вызвана один раз перед вызовом любых других функций. Повторный вызов создаст исключение.

Init

public final void Init(Locomotive sloco, int code);
* Описание: Инициализирует экземпляр класса * Параметры: sloco - Объект Locomotive, представляющий локомотив, с которым будет связан АЛСН. Значение null не допускается. code - Значение одной из констант CODE_, представляющее показание начальное показание АЛС. Значение констант IND_REDYELLOWWHITE допускается только при значении свойства AllowRedYellowAndWhite = true. * Заметка:* Функция Init (любой вариации) должна быть вызвана один раз перед вызовом любых других функций. Повторный вызов создаст исключение.

GetLocomotive

public final Locomotive GetLocomotive(void);
* Описание: Возвращает локомотив, с которым связан этот экземпляр класса АЛСН * Возвращает: Объект Locomotive, с которым связан АЛСН, или null, если функция Init не вызывалась.

GetFrequency

public final int GetFrequency(void);
* Описание: Возвращает частоту фильтра АЛСН * Возвращает: Значение одной из констант FREQ_, определяющее частоту фильтра АЛСН. * Заметка:* При поиске будет считываться только коды, кодируемые частотой, совпадающий с настройкой фильтра.

GetSearchDirection

public final int GetSearchDirection(void);
* Описание: Возвращает значение, определяющее направление поиска сигнальных точек. * Возвращает: Значение одной из констант SD_*, определяющее направление поиска.

GetCurrentCode

public final int GetCurrentCode(void);
* Описание: Возвращает текущее показание АЛС * Возвращает: Значение одной из констант IND_, представляющее текущее показание АЛС. Значение IND_REDYELLOWWHITE возможно только при AllowRedYellowAndWhite = true. * Заметка* Текущее показание АЛС - показание полученное при последнем вызове функции SearchNextSignal.

SetFrequency

public final void SetFrequency(int freq);
* Описание: Задаёт частоту для фильтра АЛСН * Параметры: freq - Значение одной из констант FREQ_, определяющее частоту фильтра АЛСН. * Заметка:* При поиске будет считываться только коды, кодируемые частотой, совпадающий с настройкой фильтра.

SetSearchDirection

public final void SetSearchDirection(int dir);
* Описание: Задаёт направление поиска сигнальной точки. * Параметры: dir - Значение одной из констант SD_*, определяющее направление поиска.

ResetToWhite

public final void ResetToWhite(void);
* Описание: Сбрасывает показание АЛСН красное (IND_RED) на белое (IND_WHITE). * Заметка: Если текущий сигнал не IND_RED, не выполняет никакого действия

SearchNextSignal

public final int SearchNextSignal(void);
* Описание: Выполняет поиск сигнальной точки и обновление состояния АЛСН * Возвращает: Значение одной из констант IND_, представляющее новое показание АЛС. Значение IND_REDYELLOWWHITE возможно только при AllowRedYellowAndWhite = true. * Заметка:* Эта функция должна вызываться периодически.

ResetRedYellow

public final void ResetRedYellow(void);
* Описание: Сбрасывает показание АЛСН КЖ+Б (IND_REDYELLOWWHITE) на белое (IND_WHITE), или зажигает КЖ+Б (IND_REDYELLOWWHITE) если белое (IND_WHITE) * Заметка: Функция работает только при AllowRedYellowAndWhite = true

ResetToNullState

public final void ResetToNullState(void);
* Описание: Выполняет полный сброс АЛСН к начальному состоянию * Заметка: Состояние соответствет вызову функции Init(Locomotive) при инициализации

GetCurrentProvider

public final ALSN_Provider GetCurrentProvider(void);
* Описание: Возвращает текущую сигнальную точку, на основе которой выставлено текущее состояние АЛСН * Возвращает: Объект ALSN_Provider, представляющий сигнальную точку, на основе которой составлено текущее состояние АЛСН. Или null, если сигнальная точка не была найдена. * Заметка: Возвращаемое значение соответствует сигнальной точке найдено при последнем вызове функции SearchNextSignal.

AllowRedYellowAndWhite

public bool AllowRedYellowAndWhite = false; 
* Описание: Значение true, если работа дешифратора соответствует УКБМ, и возможно показание КЖ+Б (IND_REDYELLOWWHITE), в противном случае - значение false.

FrequencyDisabled

public bool FrequencyDisabled = false;
* Описание: Значение true, если частота кодирование сигнала не проверяется (значение АЛСН фильтра не учитывается. Ловится код любой частоты). В противном случае - значение false.


  1. Возможен только при значении свойства AllowRedYellowAndWhite = true; 

Updated