This commit is contained in:
xzb 2023-11-06 14:36:38 +08:00
commit 81760f5c89
3 changed files with 15 additions and 9 deletions

View File

@ -30,8 +30,8 @@ func driveWjRelay(w ecs.World, entry *ecs.Entry, td bool) {
}
// 驱动继电器到吸起位置
func DriveRelayUp(w ecs.World, id string) {
w.Execute(func() {
func DriveRelayUp(w ecs.World, id string) error {
result := <-ecs.Request[ecs.EmptyType](w, func() ecs.Result[ecs.EmptyType] {
wd := entity.GetWorldData(w)
entry, ok := wd.EntityMap[id]
if ok {
@ -41,14 +41,16 @@ func DriveRelayUp(w ecs.World, id string) {
driveWjRelay(w, entry, true)
}
} else {
fmt.Printf("未找到id=%s的继电器\n", id)
return ecs.NewErrResult(fmt.Errorf("未找到id=%s的继电器", id))
}
return ecs.NewOkEmptyResult()
})
return result.Err
}
// 驱动继电器到落下位置
func DriveRelayDown(w ecs.World, id string) {
w.Execute(func() {
func DriveRelayDown(w ecs.World, id string) error {
result := <-ecs.Request[ecs.EmptyType](w, func() ecs.Result[ecs.EmptyType] {
wd := entity.GetWorldData(w)
entry, ok := wd.EntityMap[id]
if ok {
@ -58,7 +60,9 @@ func DriveRelayDown(w ecs.World, id string) {
driveWjRelay(w, entry, false)
}
} else {
fmt.Printf("未找到id=%s的继电器\n", id)
return ecs.NewErrResult(fmt.Errorf("未找到id=%s的继电器", id))
}
return ecs.NewOkEmptyResult()
})
return result.Err
}

View File

@ -80,11 +80,11 @@ func (p *PsdSys) Update(world ecs.World) {
//设置滑动门电机通断电状态
repo := entity.GetWorldData(world).Repo
psd := repo.FindPsd(component.UidType.Get(entry).Id)
if psc.MkxGM { //优先门控箱的关门
p.gm(asdList)
} else if psc.MkxKM { //其次门控箱的开门
if psc.MkxKM { //优先门控箱的开门
group := psd.FindAsdGroup(8)
p.km(group.Start, group.End, asdList)
} else if psc.MkxKM { //其次门控箱的关门
p.gm(asdList)
} else if !psc.InterlockMPL { //联锁操作没有被旁路
if psc.InterlockGM {
p.gm(asdList)

View File

@ -28,9 +28,11 @@ func (s *AsdSys) Update(world ecs.World) {
if entry.HasComponent(component.AsdCannotOpenTag) {
pos = consts.TwoPosMin
speed = 0
psdMotorState.TD = false
} else if entry.HasComponent(component.AsdCannotCloseTag) {
pos = consts.TwoPosMax
speed = 0
psdMotorState.TD = false
} else if psdMotorState.TD {
if psdMotorState.KM {
if pos == consts.TwoPosMax {