【修改IBP灯归属逻辑】
This commit is contained in:
parent
1ca573c054
commit
7c539309a4
@ -13,16 +13,16 @@ import (
|
||||
func ChangeIBPButtonState(sim *VerifySimulation, mapId int32, stationId, btnCode string, pressDown bool) {
|
||||
stationUid := QueryUidByMidAndComId(mapId, stationId, &graphicData.Station{})
|
||||
if pressDown {
|
||||
fi.PressDownButton(sim.World, stationUid+"_"+btnCode)
|
||||
fi.PressDownButton(sim.World, stationUid+"_button_"+btnCode)
|
||||
} else {
|
||||
fi.PressUpButton(sim.World, stationUid+"_"+btnCode)
|
||||
fi.PressUpButton(sim.World, stationUid+"_button_"+btnCode)
|
||||
}
|
||||
}
|
||||
|
||||
// 操作IBP按钮
|
||||
func ChangeIBPKeyState(sim *VerifySimulation, mapId int32, stationId, keyCode string, gear int32) {
|
||||
stationUid := QueryUidByMidAndComId(mapId, stationId, &graphicData.Station{})
|
||||
fi.SwitchKeyGear(sim.World, stationUid+"_"+keyCode, gear)
|
||||
fi.SwitchKeyGear(sim.World, stationUid+"_key_"+keyCode, gear)
|
||||
}
|
||||
|
||||
// 获取仿真车站按钮状态,前端推送
|
||||
@ -36,7 +36,7 @@ func GetMapAllIBPState(sim *VerifySimulation, mapId int32, stationId, ibpMapCode
|
||||
stationUid := QueryUidByMidAndComId(mapId, stationId, &graphicData.Station{})
|
||||
ibpStorage := getStorageIBPMapData(ibpMapCode)
|
||||
for _, data := range ibpStorage.IbpButtons { // 按钮
|
||||
entry, ok := entity.GetEntityByUid(sim.World, stationUid+"_"+data.Code)
|
||||
entry, ok := entity.GetEntityByUid(sim.World, stationUid+"_button_"+data.Code)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
@ -45,7 +45,7 @@ func GetMapAllIBPState(sim *VerifySimulation, mapId int32, stationId, ibpMapCode
|
||||
}
|
||||
}
|
||||
for _, data := range ibpStorage.IbpAlarms { // 报警器
|
||||
entry, ok := entity.GetEntityByUid(sim.World, stationUid+"_"+data.Code)
|
||||
entry, ok := entity.GetEntityByUid(sim.World, stationUid+"_alarm_"+data.Code)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
@ -57,7 +57,7 @@ func GetMapAllIBPState(sim *VerifySimulation, mapId int32, stationId, ibpMapCode
|
||||
}
|
||||
}
|
||||
for _, data := range ibpStorage.IbpLights { // 指示灯
|
||||
entry, ok := entity.GetEntityByUid(sim.World, stationUid+"_"+data.Code)
|
||||
entry, ok := entity.GetEntityByUid(sim.World, stationUid+"_light_"+data.Code)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
@ -69,7 +69,7 @@ func GetMapAllIBPState(sim *VerifySimulation, mapId int32, stationId, ibpMapCode
|
||||
}
|
||||
}
|
||||
for _, data := range ibpStorage.IbpKeys { // 钥匙
|
||||
entry, ok := entity.GetEntityByUid(sim.World, stationUid+"_"+data.Code)
|
||||
entry, ok := entity.GetEntityByUid(sim.World, stationUid+"_key_"+data.Code)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
|
@ -113,9 +113,6 @@ func CreateSimulation(projectId int32, mapIds []int32) (*VerifySimulation, error
|
||||
}
|
||||
repo = newRepo
|
||||
}
|
||||
// 目前用本地构建状态
|
||||
worldMemory := NewWaysideMemory()
|
||||
initWorldDeviceState(worldMemory.Status, repo)
|
||||
// 构建所有UID映射关系,
|
||||
allUidMap := buildRepositoryAllUidsMap(mapIds, repo)
|
||||
//创建仿真
|
||||
@ -125,7 +122,7 @@ func CreateSimulation(projectId int32, mapIds []int32) (*VerifySimulation, error
|
||||
verifySimulation := &VerifySimulation{
|
||||
MapIds: mapIds,
|
||||
ProjectId: projectId,
|
||||
Memory: worldMemory,
|
||||
Memory: NewWaysideMemory(),
|
||||
Repo: repo,
|
||||
World: w,
|
||||
WorldId: w.Id(),
|
||||
@ -823,7 +820,7 @@ func handlerIBPDeviceToStation(station *proto.Station, repo *proto.Repository, i
|
||||
buttonType = proto.Button_Reset_Press
|
||||
}
|
||||
b := &proto.Button{
|
||||
Id: station.Id + "_" + data.Code,
|
||||
Id: station.Id + "_button_" + data.Code,
|
||||
Code: data.Code,
|
||||
ButtonType: buttonType,
|
||||
HasLight: data.HasLight,
|
||||
@ -836,7 +833,7 @@ func handlerIBPDeviceToStation(station *proto.Station, repo *proto.Repository, i
|
||||
}
|
||||
for _, data := range storage.IbpKeys { // 钥匙
|
||||
b := &proto.Key{
|
||||
Id: station.Id + "_" + data.Code,
|
||||
Id: station.Id + "_key_" + data.Code,
|
||||
Code: data.Code,
|
||||
Gear: 2,
|
||||
}
|
||||
@ -848,7 +845,7 @@ func handlerIBPDeviceToStation(station *proto.Station, repo *proto.Repository, i
|
||||
}
|
||||
for _, data := range storage.IbpAlarms { // 报警器
|
||||
b := &proto.Alarm{
|
||||
Id: station.Id + "_" + data.Code,
|
||||
Id: station.Id + "_alarm_" + data.Code,
|
||||
Code: data.Code,
|
||||
}
|
||||
deviceMap[data.Common.Id] = &proto.ElectronicComponent{
|
||||
@ -857,22 +854,37 @@ func handlerIBPDeviceToStation(station *proto.Station, repo *proto.Repository, i
|
||||
}
|
||||
repo.Alarms = append(repo.Alarms, b)
|
||||
}
|
||||
for _, data := range storage.IbpLights { // 指示灯
|
||||
empGroup := &proto.ElectronicGroup{Code: "EMP"}
|
||||
spksGroup := &proto.ElectronicGroup{Code: "SPKS"}
|
||||
for _, data := range storage.IbpLights { // 指示灯,
|
||||
b := &proto.Light{
|
||||
Id: station.Id + "_" + data.Code,
|
||||
Id: station.Id + "_light_" + data.Code,
|
||||
Code: data.Code,
|
||||
Aspect: converIbpLightAspect(data.Color),
|
||||
}
|
||||
deviceMap[data.Common.Id] = &proto.ElectronicComponent{
|
||||
repo.Lights = append(repo.Lights, b)
|
||||
// 存入组合类型的
|
||||
c := &proto.ElectronicComponent{
|
||||
Id: b.Id,
|
||||
DeviceType: proto.DeviceType_DeviceType_Light,
|
||||
}
|
||||
repo.Lights = append(repo.Lights, b)
|
||||
switch data.Code {
|
||||
case "X紧急关闭", "S紧急关闭":
|
||||
empGroup.Components = append(empGroup.Components, c)
|
||||
case "启用状态_SPKS1", "启用状态_SPKS3", "启用状态_SPKS2", "启用状态_SPKS4":
|
||||
spksGroup.Components = append(spksGroup.Components, c)
|
||||
}
|
||||
// 组信息
|
||||
for _, data := range storage.IbpRelatedDevices {
|
||||
}
|
||||
for _, data := range storage.IbpRelatedDevices { // 组信息
|
||||
for _, c := range data.Combinationtypes {
|
||||
group := &proto.ElectronicGroup{Code: c.Code}
|
||||
var group *proto.ElectronicGroup
|
||||
switch c.Code {
|
||||
case "EMP":
|
||||
group = empGroup
|
||||
case "SPKS":
|
||||
group = spksGroup
|
||||
default:
|
||||
continue
|
||||
}
|
||||
for _, d := range c.RefDevices {
|
||||
deviceType, ok := deviceMap[d]
|
||||
if !ok {
|
||||
@ -881,25 +893,9 @@ func handlerIBPDeviceToStation(station *proto.Station, repo *proto.Repository, i
|
||||
}
|
||||
group.Components = append(group.Components, deviceType)
|
||||
}
|
||||
station.ElectronicGroup = append(station.ElectronicGroup, group)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 将IBP的灯颜色转换成repo灯颜色
|
||||
func converIbpLightAspect(color graphicData.IbpLight_IbpLightColor) proto.Light_LightAspect {
|
||||
switch color {
|
||||
case graphicData.IbpLight_white:
|
||||
return proto.Light_B
|
||||
case graphicData.IbpLight_red:
|
||||
return proto.Light_H
|
||||
case graphicData.IbpLight_green:
|
||||
return proto.Light_L
|
||||
case graphicData.IbpLight_blue:
|
||||
return proto.Light_A
|
||||
default:
|
||||
panic(&dto.ErrorDto{Code: dto.ArgumentParseError, Message: "未知的灯颜色类型" + color.String()})
|
||||
}
|
||||
station.ElectronicGroup = append(station.ElectronicGroup, empGroup, spksGroup)
|
||||
}
|
||||
|
||||
func converCheckPointUid(data *proto.CheckPoint, uidsMap *stationUidStructure) *proto.CheckPoint {
|
||||
@ -1073,27 +1069,6 @@ func findTurnoutIds(axleCountingMap map[string]*graphicData.AxleCounting, axleId
|
||||
return turnoutIds
|
||||
}
|
||||
|
||||
func initWorldDeviceState(status *VerifyStatus, repo *repository.Repository) {
|
||||
// initWorldTurnoutState(status, repo)
|
||||
// initWorldPhysicalSectionState(status, repo)
|
||||
}
|
||||
|
||||
// 初始化道岔状态
|
||||
func initWorldTurnoutState(status *VerifyStatus, repo *repository.Repository) {
|
||||
for _, turnout := range repo.TurnoutList() {
|
||||
id := turnout.Identity.Id()
|
||||
status.SwitchStateMap.Store(id, &state.SwitchState{Id: id, Normal: true, Reverse: false})
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化物理区段状态
|
||||
func initWorldPhysicalSectionState(status *VerifyStatus, repo *repository.Repository) {
|
||||
for _, section := range repo.PhysicalSectionList() {
|
||||
id := section.Identity.Id()
|
||||
status.PhysicalSectionStateMap.Store(id, &state.SectionState{Id: id, Occupied: false, Type: state.SectionType_Physic})
|
||||
}
|
||||
}
|
||||
|
||||
func convertToProtoSignalModel(gSmt graphicData.Signal_Model) proto.Signal_Model {
|
||||
switch gSmt {
|
||||
case graphicData.Signal_HLU:
|
||||
|
Loading…
Reference in New Issue
Block a user