LingxinMeng 1 tahun lalu
induk
melakukan
dd5ce6fab0
2 mengubah file dengan 53 tambahan dan 0 penghapusan
  1. 49 0
      amd64/dpi_boot/main.go
  2. 4 0
      build-dpi_boot.sh

+ 49 - 0
amd64/dpi_boot/main.go

@@ -0,0 +1,49 @@
+package dpi_boot
+
+import (
+	"cicv-data-closedloop/common/util"
+	"fmt"
+	"github.com/bluenviron/goroslib/v2"
+	"github.com/bluenviron/goroslib/v2/pkg/msg"
+	"time"
+)
+
+type HeartBeatInfo struct {
+	msg.Package `ros:"diag_msgs"`
+	ModuleName  string  `rosname:"module_name"`
+	Rate        int8    `rosname:"rate"`
+	timestamp   float64 `rosname:"timestamp"`
+}
+
+var lastTime time.Time
+
+func main() {
+	// 1 启动 shell 脚本 dpi_start.sh
+	_, s, err := util.ExecuteWithDirSync("/data", "sh", "dpi_start.sh")
+	if err != nil {
+		fmt.Println("执行启动命令报错,执行结果为:", s, ",错误信息为:", err)
+	}
+	// 2 监听 ros 话题 /heartbeat_info
+	rosNode, _ := goroslib.NewNode(goroslib.NodeConf{
+		Name:          "dpi_with_heartbeatInfo",
+		MasterAddress: "127.0.0.1:11311",
+	})
+	_, _ = goroslib.NewSubscriber(goroslib.SubscriberConf{
+		Node:  rosNode,
+		Topic: "/heartbeat_info",
+		Callback: func(data *HeartBeatInfo) {
+			lastTime = time.Now()
+		}})
+	// 3 超过5秒没有接收到数据则执行 dpi_stop.sh 和 dpi_start.sh
+	if time.Since(lastTime) > 5.00 {
+		_, s, err = util.ExecuteWithDirSync("/data", "sh", "dpi_stop.sh")
+		if err != nil {
+			fmt.Println("执行停止命令报错,执行结果为:", s, ",错误信息为:", err)
+		}
+		_, s, err = util.ExecuteWithDirSync("/data", "sh", "dpi_start.sh")
+		if err != nil {
+			fmt.Println("执行启动命令报错,执行结果为:", s, ",错误信息为:", err)
+		}
+	}
+
+}

+ 4 - 0
build-dpi_boot.sh

@@ -0,0 +1,4 @@
+#!/bin/bash
+
+# 监控接口
+go build -o ./exe/dpi_boot.exe ./amd64/dpi_boot/main.go