Merge branch 'master' of https://git.code.tencent.com/beijing-rtss-test/bj-rtsts-server-go
This commit is contained in:
commit
df13fc55d8
@ -86,38 +86,3 @@ func RemoveTrainState(vs *VerifySimulation, id string) {
|
|||||||
panic(fmt.Sprintf("列车【%s】不存在", id))
|
panic(fmt.Sprintf("列车【%s】不存在", id))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
// 列车占用状态
|
|
||||||
func GetDeviceOccByTrainState(vs *VerifySimulation, ts *state.TrainState) {
|
|
||||||
if ts.DevicePort == "" { // 区段
|
|
||||||
if ts.PointTo { // 如果是运行方向是从A -> B
|
|
||||||
if ts.HeadOffset >= ts.TrainLength { // 如果车头偏移量大于车身长度,只占用当前区段
|
|
||||||
fmt.Println(ts.HeadDeviceUId)
|
|
||||||
} else { // 如果不够,向后找占用设备
|
|
||||||
s1 := vs.Repo.FindPhysicalSection(ts.HeadDeviceUId)
|
|
||||||
l := int64(math.Abs(float64(s1.BLinkPosition().Offset() - s1.ALinkPosition().Offset())))
|
|
||||||
// 剩余长度
|
|
||||||
sl := ts.TrainLength - l
|
|
||||||
// 寻找下一段设备
|
|
||||||
ar := s1.ARelation()
|
|
||||||
if condition {
|
|
||||||
|
|
||||||
}
|
|
||||||
if ar.Device().Type() == rtproto.DeviceType_DeviceType_PhysicalSection { // 区段
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
} else { // 道岔
|
|
||||||
|
|
||||||
}
|
|
||||||
// 车头所在位置、列车长度
|
|
||||||
// 运行方向
|
|
||||||
// 占用设备类型、设备长度
|
|
||||||
// 占用设备ID、设备偏移
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
@ -3,15 +3,11 @@ package memory
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"joylink.club/ecs"
|
|
||||||
"joylink.club/rtsssimulation/component"
|
|
||||||
"joylink.club/rtsssimulation/component/component_proto"
|
"joylink.club/rtsssimulation/component/component_proto"
|
||||||
"joylink.club/rtsssimulation/entity"
|
|
||||||
"joylink.club/rtsssimulation/fi"
|
"joylink.club/rtsssimulation/fi"
|
||||||
|
|
||||||
"joylink.club/bj-rtsts-server/dto/request_proto"
|
"joylink.club/bj-rtsts-server/dto/request_proto"
|
||||||
"joylink.club/bj-rtsts-server/ts/protos/graphicData"
|
"joylink.club/bj-rtsts-server/ts/protos/graphicData"
|
||||||
"joylink.club/bj-rtsts-server/ts/protos/state"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// 处理道岔操作
|
// 处理道岔操作
|
||||||
@ -44,31 +40,3 @@ func HandleTurnoutOperation(simulation *VerifySimulation, req *request_proto.Tur
|
|||||||
panic(fmt.Sprintf("未知的道岔操作:%s", req.Operation))
|
panic(fmt.Sprintf("未知的道岔操作:%s", req.Operation))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取全部的道岔状态,动力学使用
|
|
||||||
func GetAllTurnoutState(sim *VerifySimulation) []*state.SwitchState {
|
|
||||||
var switchArr []*state.SwitchState
|
|
||||||
turnoutList := sim.Repo.TurnoutList()
|
|
||||||
for _, o := range turnoutList {
|
|
||||||
s := handlerTurnoutState(sim.World, o.Id())
|
|
||||||
if s == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
s.Id = sim.GetComIdByUid(o.Id())
|
|
||||||
switchArr = append(switchArr, s)
|
|
||||||
}
|
|
||||||
return switchArr
|
|
||||||
}
|
|
||||||
|
|
||||||
func handlerTurnoutState(w ecs.World, uid string) *state.SwitchState {
|
|
||||||
entry, ok := entity.GetEntityByUid(w, uid)
|
|
||||||
if !ok {
|
|
||||||
fmt.Printf("id=%s的道岔不存在", uid)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if !entry.HasComponent(component.TurnoutPositionType) {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
pos := component.TurnoutPositionType.Get(entry)
|
|
||||||
return &state.SwitchState{Normal: pos.Db, Reverse: pos.Fb, Dw: pos.Dw, Fw: pos.Fw}
|
|
||||||
}
|
|
||||||
|
@ -20,6 +20,8 @@ import (
|
|||||||
"joylink.club/bj-rtsts-server/ts/protos/graphicData"
|
"joylink.club/bj-rtsts-server/ts/protos/graphicData"
|
||||||
"joylink.club/bj-rtsts-server/ts/protos/state"
|
"joylink.club/bj-rtsts-server/ts/protos/state"
|
||||||
"joylink.club/ecs"
|
"joylink.club/ecs"
|
||||||
|
"joylink.club/rtsssimulation/component"
|
||||||
|
"joylink.club/rtsssimulation/entity"
|
||||||
"joylink.club/rtsssimulation/fi"
|
"joylink.club/rtsssimulation/fi"
|
||||||
"joylink.club/rtsssimulation/repository"
|
"joylink.club/rtsssimulation/repository"
|
||||||
"joylink.club/rtsssimulation/repository/model/proto"
|
"joylink.club/rtsssimulation/repository/model/proto"
|
||||||
@ -148,23 +150,39 @@ func (s *VerifySimulation) GetComIdByUid(uid string) string {
|
|||||||
|
|
||||||
// 采集动力学道岔状态
|
// 采集动力学道岔状态
|
||||||
func (s *VerifySimulation) CollectDynamicsTurnoutInfo() []*message.DynamicsTurnoutInfo {
|
func (s *VerifySimulation) CollectDynamicsTurnoutInfo() []*message.DynamicsTurnoutInfo {
|
||||||
stateSlice := GetAllTurnoutState(s)
|
|
||||||
var turnoutStates []*message.DynamicsTurnoutInfo
|
var turnoutStates []*message.DynamicsTurnoutInfo
|
||||||
for _, sta := range stateSlice {
|
for _, o := range s.Repo.TurnoutList() {
|
||||||
code64, err := strconv.ParseUint(sta.Id, 10, 16)
|
sta := s.uidMap[o.Id()]
|
||||||
|
if sta == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
code64, err := strconv.ParseUint(sta.CommonId, 10, 16)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error("id转uint16报错", err)
|
slog.Error("id转uint16报错", err)
|
||||||
}
|
}
|
||||||
info := message.DynamicsTurnoutInfo{
|
s := handlerDynamicsTurnoutState(s.World, o.Id())
|
||||||
Code: uint16(code64),
|
if s == nil {
|
||||||
NPosition: sta.Dw,
|
continue
|
||||||
RPosition: sta.Fw,
|
|
||||||
}
|
}
|
||||||
turnoutStates = append(turnoutStates, &info)
|
s.Code = uint16(code64)
|
||||||
|
turnoutStates = append(turnoutStates, s)
|
||||||
}
|
}
|
||||||
return turnoutStates
|
return turnoutStates
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handlerDynamicsTurnoutState(w ecs.World, uid string) *message.DynamicsTurnoutInfo {
|
||||||
|
entry, ok := entity.GetEntityByUid(w, uid)
|
||||||
|
if !ok {
|
||||||
|
fmt.Printf("id=%s的道岔不存在", uid)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if !entry.HasComponent(component.TurnoutPositionType) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
pos := component.TurnoutPositionType.Get(entry)
|
||||||
|
return &message.DynamicsTurnoutInfo{NPosition: pos.Dw, RPosition: pos.Fw}
|
||||||
|
}
|
||||||
|
|
||||||
// 处理动力学列车速度消息
|
// 处理动力学列车速度消息
|
||||||
func (s *VerifySimulation) HandleDynamicsTrainInfo(info *message.DynamicsTrainInfo) {
|
func (s *VerifySimulation) HandleDynamicsTrainInfo(info *message.DynamicsTrainInfo) {
|
||||||
sta, ok := s.Memory.Status.TrainStateMap.Load(strconv.Itoa(int(info.Number)))
|
sta, ok := s.Memory.Status.TrainStateMap.Load(strconv.Itoa(int(info.Number)))
|
||||||
|
Loading…
Reference in New Issue
Block a user