Merge branch 'develop' into local-test
All checks were successful
local-test分支打包构建docker并发布运行 / Docker-Build (push) Successful in 1m37s
All checks were successful
local-test分支打包构建docker并发布运行 / Docker-Build (push) Successful in 1m37s
This commit is contained in:
commit
fc1c773298
@ -74,6 +74,7 @@ type ThridPartyConfig struct {
|
|||||||
Acc AccConfig `json:"acc" description:"车载加速计"`
|
Acc AccConfig `json:"acc" description:"车载加速计"`
|
||||||
//PcSimConfig VehiclePCSimConfig `json:"pcSimConfig" description:"车载pc仿真平台通信"`
|
//PcSimConfig VehiclePCSimConfig `json:"pcSimConfig" description:"车载pc仿真平台通信"`
|
||||||
PcSimConfigs []VehiclePCSimConfig `json:"pcSimConfigs" description:"车载pc仿真平台通信"`
|
PcSimConfigs []VehiclePCSimConfig `json:"pcSimConfigs" description:"车载pc仿真平台通信"`
|
||||||
|
BtmVobc BtmVobcConfig `json:"btmVobc" description:"Btm Vobc 11号线相关配置"`
|
||||||
}
|
}
|
||||||
type RadarConfig struct {
|
type RadarConfig struct {
|
||||||
Open bool `json:"open" description:"是否开启"`
|
Open bool `json:"open" description:"是否开启"`
|
||||||
@ -133,6 +134,14 @@ type ElectricMachineryConfig struct {
|
|||||||
EndPointA bool `json:"endPointA" description:"一号电机"`
|
EndPointA bool `json:"endPointA" description:"一号电机"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BtmVobcConfig 11 号线 BTM vobc 网关设备配置
|
||||||
|
type BtmVobcConfig struct {
|
||||||
|
LocalUdpPort int `json:"localUdpPort" description:"本机监听接收UDP端口"`
|
||||||
|
RemoteIp string `json:"remoteIp" description:"btm串口设备IP配置"`
|
||||||
|
RemoteUdpPort int `json:"remoteUdpPort" description:"btm串口设备UDP端口"`
|
||||||
|
Open bool `json:"open" description:"是否开启"`
|
||||||
|
}
|
||||||
|
|
||||||
// BtmCanetConfig BTM CANET网关设备配置
|
// BtmCanetConfig BTM CANET网关设备配置
|
||||||
type BtmCanetConfig struct {
|
type BtmCanetConfig struct {
|
||||||
LocalUdpPort int `json:"localUdpPort" description:"本机监听接收UDP端口"`
|
LocalUdpPort int `json:"localUdpPort" description:"本机监听接收UDP端口"`
|
||||||
|
85
third_party/btm_vobc/btm_vobc.go
vendored
85
third_party/btm_vobc/btm_vobc.go
vendored
@ -2,17 +2,29 @@ package btm_vobc
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/hex"
|
||||||
|
"fmt"
|
||||||
|
"joylink.club/bj-rtsts-server/config"
|
||||||
|
"joylink.club/bj-rtsts-server/third_party/message"
|
||||||
|
"joylink.club/bj-rtsts-server/third_party/udp"
|
||||||
|
"log/slog"
|
||||||
|
"strconv"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
type BtmVobcManage interface {
|
type BtmVobcManage interface {
|
||||||
|
GetBtmVobcConfig() config.BtmVobcConfig
|
||||||
}
|
}
|
||||||
type BtmVobcService interface {
|
type BtmVobcService interface {
|
||||||
Start()
|
Start(btmVobcManage BtmVobcManage)
|
||||||
Stop()
|
Stop()
|
||||||
|
SendData(data []byte)
|
||||||
}
|
}
|
||||||
type BtmVobcClient struct {
|
type BtmVobcClient struct {
|
||||||
calFun context.CancelFunc
|
calFun context.CancelFunc
|
||||||
|
client udp.UdpClient
|
||||||
|
server udp.UdpServer
|
||||||
|
manage BtmVobcManage
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -29,10 +41,75 @@ func Default() BtmVobcService {
|
|||||||
}
|
}
|
||||||
return btmVobcClient
|
return btmVobcClient
|
||||||
}
|
}
|
||||||
func (b *BtmVobcClient) Start() {
|
|
||||||
//ctx, calFun := context.WithCancel(context.Background())
|
func (b *BtmVobcClient) Start(btmVobcManage BtmVobcManage) {
|
||||||
|
cfg := btmVobcManage.GetBtmVobcConfig()
|
||||||
|
if !cfg.Open {
|
||||||
|
slog.Info("11号线 btm vobc配置未开启...")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
udpServer := udp.NewServer(fmt.Sprintf(":%d", cfg.RemoteUdpPort), b.handleBtmVobcFrames)
|
||||||
|
err := udpServer.Listen()
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("11号线 btm VOBC 服务启动失败...")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//
|
||||||
|
udpClient := udp.NewClient(fmt.Sprintf("%s:%d", cfg.RemoteIp, cfg.RemoteUdpPort))
|
||||||
|
b.manage = btmVobcManage
|
||||||
|
b.server = udpServer
|
||||||
|
b.client = udpClient
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *BtmVobcClient) handleBtmVobcFrames(cfs []byte) {
|
||||||
|
frameType, dataText, err := message.BtmVobcDecode(cfs)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if frameType == message.COMMAND_TYPE {
|
||||||
|
idCommand := &message.BtmVobcIdCommand{}
|
||||||
|
idCommand.Decode(dataText)
|
||||||
|
slog.Info("成功接受btm vobc的id命令帧,原数据", hex.EncodeToString(cfs))
|
||||||
|
//userMsg, _ := hex.DecodeString(testUserBtmMsg)
|
||||||
|
|
||||||
|
//msg := &message.BtmVobcMessage{FontTtl: 5, BtmStatus: 0x00, DecodeTime: 10, BackTtl: 4, BtmMsg: userMsg, ResponseTime: 10,
|
||||||
|
// VobcLifeNum: idCommand.VobcLifeNum, BaseBtmVobc: message.BaseBtmVobc{AutoIdFrame: idCommand.AutoIdFrame}}
|
||||||
|
//sendData := msg.Encode()
|
||||||
|
//fmt.Println("发送btm vobc len:", len(sendData), "报文:", hex.EncodeToString(sendData), "报文序列号:", msg.MsgSerial)
|
||||||
|
//btmCli.Send(sendData)
|
||||||
|
|
||||||
|
//freeMsg, _ := hex.DecodeString(freeBtmMsg)
|
||||||
|
//msg2 := &message.BtmVobcMsgFree{BtmStatus: 0x00, WorkTemperature: 10, Fun1: uint16(0), Fun2: uint16(0), Fun3: uint16(0), Fun4: uint16(0),
|
||||||
|
// FreeMsg: freeMsg, RespTime: 20, VobcLifeNum: idCommand.VobcLifeNum, BaseBtmVobc: message.BaseBtmVobc{AutoIdFrame: idCommand.AutoIdFrame}}
|
||||||
|
//sendData2 := msg2.Encode()
|
||||||
|
//fmt.Println("发送btm vobc 空报文:", hex.EncodeToString(sendData2), "len:", len(sendData2), "报文序列号:", msg2.MsgSerial, "atoId=", idCommand.AutoIdFrame)
|
||||||
|
//btmCli.Send(sendData2)
|
||||||
|
} else if frameType == message.REQUEST_TYPE {
|
||||||
|
req := &message.BtmVobcReq{}
|
||||||
|
req.Decode(dataText)
|
||||||
|
fmt.Println(req, "========================")
|
||||||
|
} else {
|
||||||
|
slog.Error("btm vobc 解析未知命令帧类型", strconv.FormatInt(int64(frameType), 16), frameType, "原始数据:", hex.EncodeToString(cfs), "长度:", len(cfs))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func (b *BtmVobcClient) SendData(data []byte) {
|
||||||
|
if b.client != nil {
|
||||||
|
slog.Info("发送btm vobc 报文:", hex.EncodeToString(data), "长度:", len(data))
|
||||||
|
err := b.client.Send(data)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("发送btm vobc 报文失败:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
func (b *BtmVobcClient) Stop() {
|
func (b *BtmVobcClient) Stop() {
|
||||||
|
if b.server != nil {
|
||||||
|
b.server.Close()
|
||||||
|
}
|
||||||
|
if b.client != nil {
|
||||||
|
b.client.Close()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -150,6 +150,11 @@ func (s *VerifySimulation) GetComIdByUid(uid string) uint32 {
|
|||||||
func (s *VerifySimulation) GetBtmCanetConfig() config.BtmCanetConfig {
|
func (s *VerifySimulation) GetBtmCanetConfig() config.BtmCanetConfig {
|
||||||
return s.runConfig.BtmCanet
|
return s.runConfig.BtmCanet
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetBtmVobcConfig 获取11 号线 btm vobc配置信息
|
||||||
|
func (s *VerifySimulation) GetBtmVobcConfig() config.BtmVobcConfig {
|
||||||
|
return s.runConfig.BtmVobc
|
||||||
|
}
|
||||||
func (s *VerifySimulation) GetLineAllRsspAxleCfgs() []config.RsspAxleConfig {
|
func (s *VerifySimulation) GetLineAllRsspAxleCfgs() []config.RsspAxleConfig {
|
||||||
return s.runConfig.RsspAxleCfgs
|
return s.runConfig.RsspAxleCfgs
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package ts
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"joylink.club/bj-rtsts-server/third_party/acc"
|
"joylink.club/bj-rtsts-server/third_party/acc"
|
||||||
|
"joylink.club/bj-rtsts-server/third_party/btm_vobc"
|
||||||
"joylink.club/bj-rtsts-server/third_party/interlock/beijing12"
|
"joylink.club/bj-rtsts-server/third_party/interlock/beijing12"
|
||||||
"joylink.club/bj-rtsts-server/third_party/radar"
|
"joylink.club/bj-rtsts-server/third_party/radar"
|
||||||
"joylink.club/bj-rtsts-server/third_party/train_pc_sim"
|
"joylink.club/bj-rtsts-server/third_party/train_pc_sim"
|
||||||
@ -138,6 +139,8 @@ func runThirdParty(s *memory.VerifySimulation) error {
|
|||||||
//列车加速计发送vobc
|
//列车加速计发送vobc
|
||||||
acc.Default().Start(s)
|
acc.Default().Start(s)
|
||||||
train_pc_sim.Default().Start(s)
|
train_pc_sim.Default().Start(s)
|
||||||
|
//btm vobc
|
||||||
|
btm_vobc.Default().Start(s)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -165,6 +168,8 @@ func stopThirdParty(s *memory.VerifySimulation) {
|
|||||||
acc.Default().Stop()
|
acc.Default().Stop()
|
||||||
//列车PC仿真停止
|
//列车PC仿真停止
|
||||||
train_pc_sim.Default().Stop()
|
train_pc_sim.Default().Stop()
|
||||||
|
|
||||||
|
btm_vobc.Default().Stop()
|
||||||
}
|
}
|
||||||
|
|
||||||
func createSimulationId(projectId int32) string {
|
func createSimulationId(projectId int32) string {
|
||||||
|
Loading…
Reference in New Issue
Block a user