package can_btm import ( "fmt" "joylink.club/bj-rtsts-server/third_party/message" "joylink.club/bj-rtsts-server/third_party/udp" "log/slog" ) // btm与canet(网口-CAN口转换器) type btmCanetClient struct { //udp udpServer udp.UdpServer //udp udpClient udp.UdpClient localUdpPort int remoteUdpPort int remoteIp string } func (s *btmCanetClient) Start() { // s.udpServer = udp.NewServer(fmt.Sprintf(":%d", s.localUdpPort), s.handleCannetFrames) s.udpServer.Listen() // s.udpClient = udp.NewClient(fmt.Sprintf("%s:%d", s.remoteIp, s.remoteUdpPort)) } func (s *btmCanetClient) Stop() { if s.udpServer != nil { s.udpServer.Close() } if s.udpClient != nil { s.udpClient.Close() } } func (s *btmCanetClient) handleCannetFrames(cfs []byte) { //一个cannet 帧 13字节 if len(cfs) > 0 && len(cfs)%13 == 0 { cfSum := len(cfs) / 13 for cfi := 0; cfi < cfSum; cfi++ { cfStart := cfi * 13 cf := message.NewCanetFrame(cfs[cfStart : cfStart+13]) fmt.Println(cf.String()) } } else { slog.Warn("从cannet接收数据,未满足条件‘len(cfs) > 0 && len(cfs)%13 == 0‘", "len(cfs)", len(cfs)) } }