|
@@ -80,8 +80,9 @@ func main() {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- var pingState atomic.Bool
|
|
|
|
|
- heartbeatLoop(&pingState) // -启动-设备在线-心跳检测-
|
|
|
|
|
|
|
+ var pingState, pingErrorPrint atomic.Bool
|
|
|
|
|
+ pingErrorPrint.Store(true)
|
|
|
|
|
+ heartbeatLoop(&pingState, &pingErrorPrint) /// ping
|
|
|
for {
|
|
for {
|
|
|
if pingState.Load() { //// 等待成功连接上目标设备卍
|
|
if pingState.Load() { //// 等待成功连接上目标设备卍
|
|
|
break
|
|
break
|
|
@@ -89,6 +90,7 @@ func main() {
|
|
|
fmt.Printf("[%s] 正在尝试连接设备...\n", MODULE_NAME)
|
|
fmt.Printf("[%s] 正在尝试连接设备...\n", MODULE_NAME)
|
|
|
time.Sleep(1 * time.Second)
|
|
time.Sleep(1 * time.Second)
|
|
|
}
|
|
}
|
|
|
|
|
+ pingErrorPrint.Store(false)
|
|
|
|
|
|
|
|
term(&pingState) /////////////////// 启动终端模拟器卍
|
|
term(&pingState) /////////////////// 启动终端模拟器卍
|
|
|
}
|
|
}
|
|
@@ -247,7 +249,7 @@ func interruptLoop(pingState, executing, interrupted *atomic.Bool) {
|
|
|
}()
|
|
}()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func heartbeatLoop(pingState *atomic.Bool) {
|
|
|
|
|
|
|
+func heartbeatLoop(pingState, pingErrorPrint *atomic.Bool) {
|
|
|
go func() {
|
|
go func() {
|
|
|
ticker := time.NewTicker(1 * time.Second)
|
|
ticker := time.NewTicker(1 * time.Second)
|
|
|
defer ticker.Stop()
|
|
defer ticker.Stop()
|
|
@@ -260,6 +262,17 @@ func heartbeatLoop(pingState *atomic.Bool) {
|
|
|
pingState.Store(true)
|
|
pingState.Store(true)
|
|
|
pingFailCount = 0
|
|
pingFailCount = 0
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ if pingErrorPrint.Load() { /// 打印的错误信息, 提升交互使用体验
|
|
|
|
|
+ errMsg := ""
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ errMsg = err.Error()
|
|
|
|
|
+ } else if resp.Error != nil {
|
|
|
|
|
+ errMsg = resp.Error.Message
|
|
|
|
|
+ } else {
|
|
|
|
|
+ errMsg = string(resp.Result)
|
|
|
|
|
+ }
|
|
|
|
|
+ fmt.Printf("[%s] 错误: 设备未响应(%s)!!\n", MODULE_NAME, errMsg)
|
|
|
|
|
+ }
|
|
|
pingFailCount++
|
|
pingFailCount++
|
|
|
if pingFailCount >= 3 { ///// 连续3次ping失败, 可以认为设备离线
|
|
if pingFailCount >= 3 { ///// 连续3次ping失败, 可以认为设备离线
|
|
|
pingState.Store(false)
|
|
pingState.Store(false)
|