package component import ( "fmt" "joylink.club/ecs" ) // TrainPositionInfo 列车当前位置信息 type TrainPositionInfo struct { //列车头当前运行方向(true偏移量增大/false减小方向) //link 由a->b偏移量增大 Up bool //列车长度 mm Len int64 //列车所在轨道link HeadLink string //列车所在link偏移量(mm) HeadLinkOffset int64 //列车所在轨道link TailLink string //列车所在link偏移量(mm) TailLinkOffset int64 } func (t *TrainPositionInfo) ToString() string { return fmt.Sprintf("Up=%t len=%d headLink=%s headOff=%d tailLink=%s tailOff=%d", t.Up, t.Len, t.HeadLink, t.HeadLinkOffset, t.TailLink, t.TailLinkOffset) } // TrainBaliseTelegram 应答器报文 type TrainBaliseTelegram struct { BaliseId string //应答器ID Telegram []byte //一个应答器同一时刻只有一条报文处于激活有效状态 } // TrainBtm 列车应答器传输模块 type TrainBtm struct { //应答器计数(每过一个应答器加一,在同一个应答器内不变) BaliseCounter int //报文计数器(每解出一个应答器报文加一) MessageCounter int //车载应答器天线功率放大器开关,true-开,false-关 PowerAmplifierSwitch bool //天线此时是否在应答器上方 AboveBalise bool //列车在运行方向顺序扫描到的应答器 ScannedBalises []*TrainBaliseTelegram } func (t *TrainBtm) Scanning(aboveBalise bool, tbt *TrainBaliseTelegram) { t.AboveBalise = aboveBalise } var ( TrainPositionInfoType = ecs.NewComponentType[TrainPositionInfo]() TrainBtmType = ecs.NewComponentType[TrainBtm]() )