コンテンツにスキップ

Multicast()#

Multicast(objcode, tag, d, userID)#

種類を指定して'broadcast'イベントをマルチキャスト送信します。

パラメータ#

int objcode

種類を指定します。

objcode
1 TRAIN
2 CAMERA
3 BELL
4 ATS
5 MOTIONPATH
6 EMITTER
0x100 POINT
0x101 SIGNAL
0x102 CROSSING
0x103 TURNTABLE

string tag

ユーザー定義のイベントタグの文字列。送信したイベントを識別するために必ず設定してください。

dict d

ユーザー定義のイベントパラメータ。dict型で設定します。

int userID

イベントを識別するためにユーザーが設定した任意の数値。省略した場合は0になります。

戻り値#

コメント#

複数の部品にbroadcastイベントを同時送信します。

ユーザーIDは、イベントをハンドラで判別するために使用します。

param['eventUID']に、設定したuserIDが入ります。

param['broadcast']に、ユーザー定義のイベントタグが入ります。 ユーザー定義タグでイベントを識別してください。

ビルド156以降、ユーザーIDが追加されました。

スレッド処理ではありませんが、並列を想定してコードを実装してください。

サンプル#

Xキーを押したら、編成を出発

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#LAYOUT
import vrmapi
def vrmevent(obj,ev,param):
    if ev == 'init':
        obj.SetEventKeyDown('X',100)
    elif ev == 'keydown':
        if param['eventUID'] == 100:
            # testタグを全編成にマルチキャスト
            d = dict(pm=123)
            obj.Multicast(1, 'test', d, 500)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#編成スクリプト
#OBJID=9
import vrmapi
def vrmevent_9(obj,ev,param):
    if ev == 'init':
        dummy = 1
    elif ev == 'broadcast':
        vrmapi.LOG(param['eventUID'])
        # testタグに反応させる
        if param['broadcast'] == 'test':
            obj.SetVoltage(0.2)