[bug]信号机电路系统逻辑没有正确处理驱动状态
All checks were successful
local-test分支打包构建docker并发布运行 / Docker-Build (push) Successful in 5m29s

This commit is contained in:
thesai 2024-08-01 14:25:45 +08:00
parent 5433ae43d6
commit fc6b51cc24
2 changed files with 14 additions and 4 deletions

View File

@ -2,6 +2,7 @@
package beijing12
import (
"bytes"
"context"
"fmt"
"joylink.club/bj-rtsts-server/sys_error"
@ -169,16 +170,22 @@ func (i *interlockProxy) initInterlockProxy() {
func (i *interlockProxy) handleFromCiData(n int, data []byte) {
data = data[:n]
logger().Info(fmt.Sprintf("收到联锁驱动及应答器报文数据%x", data))
if n+len(i.fromCIBytes) == fromCIBytesLen { //暂时以此作为报文尾判定条件
logger().Info(fmt.Sprintf("收到联锁驱动及应答器报文数据,长度%d", n))
if len(i.fromCIBytes) != 0 { //报文头已经存进去了
i.fromCIBytes = append(i.fromCIBytes, data...)
} else { //非报文尾
if len(i.fromCIBytes) < fromCIBytesLen { //当存储的报文长度不足预期长度
return
}
} else if bytes.HasPrefix(data, []byte{0xff, 0xff}) { //判断是否是报文头
i.fromCIBytes = append(i.fromCIBytes, data...)
return
} else {
return
}
//处理联锁报文
msg := &fromCiMsg{}
err := msg.decode(i.fromCIBytes)
logger().Info(fmt.Sprintf("解析完整联锁驱动及应答器报文数据:%x", i.fromCIBytes))
i.fromCIBytes = i.fromCIBytes[:0] //清空联锁报文存储
if err != nil {
logger().Error(fmt.Sprintf("解析来自CI的数据出错%s", err.Error()))
@ -186,9 +193,9 @@ func (i *interlockProxy) handleFromCiData(n int, data []byte) {
}
//处理驱动数据
if i.simulation != nil {
logger().Info(fmt.Sprintf("解析出的驱动数据:%x", msg.driveData))
i.simulation.HandleInterlockDriverInfo(i.runConfig.Code, msg.driveData)
}
logger().Info(fmt.Sprintf("解析出联锁驱动数据:%x", msg.driveData))
//处理应答器数据
for _, datum := range msg.baliseTelegramData {
indexBalise2 := i.indexBalise[datum.leuIndex]

View File

@ -458,6 +458,9 @@ func (s *VerifySimulation) HandleInterlockDriverInfo(code string, driveBytes []b
for i, b := range driveInfo {
qdData := m.QdList[i]
for _, relayId := range qdData.RefRelays {
if b {
}
err := wd.SetQdBit(relayId, b)
if err != nil {
slog.Error("联锁驱动数据设置出错", "error", err)