|
@@ -5,6 +5,7 @@ import (
|
|
"fmt"
|
|
"fmt"
|
|
"github.com/bluenviron/goroslib/v2"
|
|
"github.com/bluenviron/goroslib/v2"
|
|
"github.com/bluenviron/goroslib/v2/pkg/msg"
|
|
"github.com/bluenviron/goroslib/v2/pkg/msg"
|
|
|
|
+ "os"
|
|
"sync"
|
|
"sync"
|
|
"time"
|
|
"time"
|
|
)
|
|
)
|
|
@@ -26,7 +27,10 @@ func main() {
|
|
_, s, err := util.ExecuteWithDirSync("/data", "sh", "dpi_start.sh")
|
|
_, s, err := util.ExecuteWithDirSync("/data", "sh", "dpi_start.sh")
|
|
if err != nil {
|
|
if err != nil {
|
|
fmt.Println("执行启动命令报错,执行结果为:", s, ",错误信息为:", err)
|
|
fmt.Println("执行启动命令报错,执行结果为:", s, ",错误信息为:", err)
|
|
|
|
+ os.Exit(1)
|
|
}
|
|
}
|
|
|
|
+ fmt.Println("执行启动命令 sh dpi_start.sh 成功,执行结果为:", s)
|
|
|
|
+
|
|
// 2 监听 ros 话题 /heartbeat_info
|
|
// 2 监听 ros 话题 /heartbeat_info
|
|
rosNode, _ := goroslib.NewNode(goroslib.NodeConf{
|
|
rosNode, _ := goroslib.NewNode(goroslib.NodeConf{
|
|
Name: "dpi_with_heartbeatInfo",
|
|
Name: "dpi_with_heartbeatInfo",
|
|
@@ -37,27 +41,29 @@ func main() {
|
|
Topic: "/heartbeat_info",
|
|
Topic: "/heartbeat_info",
|
|
Callback: func(data *HeartBeatInfo) {
|
|
Callback: func(data *HeartBeatInfo) {
|
|
fmt.Println("监听到数据:", data)
|
|
fmt.Println("监听到数据:", data)
|
|
- mutex.Lock()
|
|
|
|
lastTime = time.Now()
|
|
lastTime = time.Now()
|
|
- mutex.Unlock()
|
|
|
|
}})
|
|
}})
|
|
// 3 超过5秒没有接收到数据则执行 dpi_stop.sh 和 dpi_start.sh
|
|
// 3 超过5秒没有接收到数据则执行 dpi_stop.sh 和 dpi_start.sh
|
|
|
|
|
|
for {
|
|
for {
|
|
time.Sleep(1 * time.Second)
|
|
time.Sleep(1 * time.Second)
|
|
- mutex.Lock()
|
|
|
|
if time.Since(lastTime).Seconds() > 5.00 {
|
|
if time.Since(lastTime).Seconds() > 5.00 {
|
|
fmt.Println("超过5秒没有监听到/heartbeat_info数据,即将重启dpi。")
|
|
fmt.Println("超过5秒没有监听到/heartbeat_info数据,即将重启dpi。")
|
|
_, s, err = util.ExecuteWithDirSync("/data", "sh", "dpi_stop.sh")
|
|
_, s, err = util.ExecuteWithDirSync("/data", "sh", "dpi_stop.sh")
|
|
if err != nil {
|
|
if err != nil {
|
|
fmt.Println("执行停止命令报错,执行结果为:", s, ",错误信息为:", err)
|
|
fmt.Println("执行停止命令报错,执行结果为:", s, ",错误信息为:", err)
|
|
|
|
+ continue
|
|
}
|
|
}
|
|
|
|
+ fmt.Println("执行启动命令 sh dpi_stop.sh 成功,执行结果为:", s)
|
|
_, s, err = util.ExecuteWithDirSync("/data", "sh", "dpi_start.sh")
|
|
_, s, err = util.ExecuteWithDirSync("/data", "sh", "dpi_start.sh")
|
|
if err != nil {
|
|
if err != nil {
|
|
fmt.Println("执行启动命令报错,执行结果为:", s, ",错误信息为:", err)
|
|
fmt.Println("执行启动命令报错,执行结果为:", s, ",错误信息为:", err)
|
|
|
|
+ continue
|
|
}
|
|
}
|
|
|
|
+ fmt.Println("执行启动命令 sh dpi_start.sh 成功,执行结果为:", s)
|
|
|
|
+ time.Sleep(5 * time.Second)
|
|
|
|
+ lastTime = time.Now()
|
|
}
|
|
}
|
|
- mutex.Unlock()
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|