3 Commits ffe15fd9af ... 22c3e7d764

Author SHA1 Message Date
  niujiuru 22c3e7d764 优化sshd客户端, 初始化连接设备发生错误时, 打印输出具体的错误信息, 提升交互体验 1 week ago
  niujiuru 448e7cd664 优化修改sshd客户端欢迎界面的logo 1 week ago
  niujiuru f9ff4b6e95 优化修改sshd客户端的welcome界面提示 2 weeks ago
2 changed files with 29 additions and 16 deletions
  1. BIN
      package/yfkj_ssh_client_1.0.0.1.tar.gz
  2. 29 16
      sshd/client/client.go

BIN
package/yfkj_ssh_client_1.0.0.1.tar.gz


+ 29 - 16
sshd/client/client.go

@@ -80,8 +80,9 @@ func main() {
 		return
 	}
 
-	var pingState atomic.Bool
-	heartbeatLoop(&pingState) // -启动-设备在线-心跳检测-
+	var pingState, pingErrorPrint atomic.Bool
+	pingErrorPrint.Store(true)
+	heartbeatLoop(&pingState, &pingErrorPrint) /// ping
 	for {
 		if pingState.Load() { //// 等待成功连接上目标设备卍
 			break
@@ -89,6 +90,7 @@ func main() {
 		fmt.Printf("[%s] 正在尝试连接设备...\n", MODULE_NAME)
 		time.Sleep(1 * time.Second)
 	}
+	pingErrorPrint.Store(false)
 
 	term(&pingState) /////////////////// 启动终端模拟器卍
 }
@@ -182,6 +184,7 @@ func term(pingState *atomic.Bool) {
 
 		if input == "exit" || input == "quit" {
 			_, _ = coupler.quit()
+			fmt.Println("bye")
 			break
 		}
 
@@ -246,7 +249,7 @@ func interruptLoop(pingState, executing, interrupted *atomic.Bool) {
 	}()
 }
 
-func heartbeatLoop(pingState *atomic.Bool) {
+func heartbeatLoop(pingState, pingErrorPrint *atomic.Bool) {
 	go func() {
 		ticker := time.NewTicker(1 * time.Second)
 		defer ticker.Stop()
@@ -259,6 +262,17 @@ func heartbeatLoop(pingState *atomic.Bool) {
 				pingState.Store(true)
 				pingFailCount = 0
 			} 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++
 				if pingFailCount >= 3 { ///// 连续3次ping失败, 可以认为设备离线
 					pingState.Store(false)
@@ -270,25 +284,24 @@ func heartbeatLoop(pingState *atomic.Bool) {
 
 func printWelcome(pingState *atomic.Bool) {
 	welcome := `
- _   _ _ _       _     _ _ _     
-| \ | (_) |     | |   (_) | |    
-|  \| |_| |_ ___| |__  _| | | ___
-| .   | | __/ __| '_ \| | | |/ _ \
-| |\  | | || (__| | | | | | |  __/
-|_| \_|_|\__\___|_| |_|_|_|_|\___|
-
-══════════════════════════════════
-       云飞科技RTU远程运维终端
-提示: 输入'quit'命令, 退出终端
-══════════════════════════════════
+ ____   _   _        _____ _      _   _  _   _ 
+|  _ \ | | | |      / ____| |    | | | || \ | |
+| |_) || |_| | ___ | |    | | ___| | | ||  \| |
+|  _ < |  _  |/ _ \| |    | |/ _ \ | | || . _ |
+| |_) || | | |  __/| |____| |  __/ |_| || |\  |
+|____/ |_| |_|\___| \_____|_|\___|\___/ |_| \_|  
+================================================
+      欢迎使用云飞科技RTU设备远程运维终端
+提示: 输入"quit"命令或按下"Ctrl+D"键, 可退出终端
+================================================
 `
 	fmt.Println(welcome)
 	fmt.Printf("客户端ID: %s\n", coupler.machineID)
 	state := ""
 	if pingState.Load() {
-		state = "已连接"
+		state = "已连接"
 	} else {
-		state = "未连接"
+		state = "x 未连接"
 	}
 	fmt.Printf("设备状态: %s\n\n", state)
 }