atenxa.crossing のソースコード

# -*- coding: utf-8 -*-
"""ATENXA踏切システム

簡単な組み込みとリアルな動作が特長の踏切制御パッケージです。

踏切を構成する部品とセンサーのイベントハンドラに1行ずつ記述するとセットアップ完了です。
"""
# import vrmapi
#from atenxa.basis import printLOG, pprintLOG
from atenxa._basis import ATENXAError
from atenxa.richevent import richevent as _richevent

from ._core import crossing_group as _crossing_group
from ._core import setup_hub as _setup_hub

[ドキュメント]def activate(obj, ev, param, group, rev=False, delay=0.0): """踏切部品をアクティベート 踏切部品をatenxa踏切システムで有効化します。 踏切部品のイベントハンドラに書き込みます。 Args: obj: 踏切オブジェクトまたはそのID ev: イベントハンドラに渡されたイベント種別 param: イベントハンドラに渡されたイベントパラメータ group (int or str): 踏切のグループ番号 or 名前 rev (bool, default=False): 方向表示機を逆転するならTrue delay (float, default=0.0): 遮断機の動作遅延時間(秒) グループ番号またはグループ名は,踏切ごとに一意のものを設定してください。 列車接近で踏切を閉じる際,センサーでの検知から当該部品の動作までに遅延時間を 設定する場合, `delay` 引数に秒数を設定してください。 省略した場合は,センサーの検知と同時に動作が開始します。 警報機が鳴り始めて数秒後に遮断機が閉まる,といった動作を設定できます。 Example: 「ねこ踏切」の遮断機部品で,警報機の鳴動から1.5秒後に遮断を開始します。 >>> import atenxa.crossing as atx >>> def vrmevent_xx(obj,ev,param): ... atx.activate(obj,ev,param, 'neko', delay=1.5) """ # ATENXA式イベントシステムを有効化 _richevent(obj,ev,param) if ev == 'init': try: g = _crossing_group[group] except KeyError: g = _setup_hub(group) g.addmember(obj,rev,delay)
[ドキュメント]def activate_close(obj, ev, param, group, direction): """センサー通過で踏切を閉じる atenxa踏切システムの踏切を閉じる指令を送ります。 センサーのイベントハンドラ直下に記述します。 Args: obj: センサーオブジェクト ev: イベントハンドラに渡されたイベント種別 param: イベントハンドラに渡されたイベントパラメータ group (int or str): 踏切のグループ番号 or 名前 direction: 踏切に対するセンサーの向き(1 or 2) Example: 「ねこ踏切」を閉じます。 >>> import atenxa.crossing as atx >>> def vrmevent_xx(obj,ev,param): ... atx.activate(obj,ev,param, 'neko', delay=1.5) """ if ev == 'catch': if param['dir'] == 1: try: g = _crossing_group[group] except KeyError: raise ValueError("group名が不正です ({}).".format(group)) g.approach(direction)
[ドキュメント]def activate_open(obj, ev, param, group, direction): """踏切からの列車退出を検出 atenxa踏切システムに,列車が踏切から退出したことを知らせます。 踏切に残った編成がいなくなれば踏切を開放します。 Args: obj: センサーオブジェクト ev: イベントハンドラに渡されたイベント種別 param: イベントハンドラに渡されたイベントパラメータ group (int or str): 踏切のグループ番号 or 名前 direction: 踏切に対するセンサーの向き(1 or 2) Example: 「ねこ踏切」からの退出を検出します。 センサーのイベントハンドラ直下に記述します。 >>> import atenxa.crossing as atx >>> def vrmevent_xx(obj,ev,param): ... atx.activate(obj,ev,param, 'neko') """ if ev == 'catch': if param['dir'] == 1: try: g = _crossing_group[group] except KeyError: raise ValueError("group名が不正です ({}).".format(group)) g.passed(direction)