2 Ревизии 0b49e0ba42 ... d9eb239577

Автор SHA1 Съобщение Дата
  niujiuru d9eb239577 取消sshd服务操作4G模块获取IMEI号的设计, 改为由业务模块输出/var/device_imei.txt的方案, 避免与业务模块同时操作4G模块引起打架, 导致相互影响 преди 2 седмици
  niujiuru db32362ba5 优化修改项目的main.go преди 2 седмици
променени са 2 файла, в които са добавени 22 реда и са изтрити 13 реда
  1. 18 10
      main.go
  2. 4 3
      sshd/sshd.go

+ 18 - 10
main.go

@@ -3,13 +3,13 @@ package main
 import (
 	"fmt"
 	"os"
+	"strings"
 	"time"
 
 	gps "hnyfkj.com.cn/rtu/linux/air530z"
 	baseapp "hnyfkj.com.cn/rtu/linux/baseapp"
 	camera1 "hnyfkj.com.cn/rtu/linux/camera"
 	netmgrd "hnyfkj.com.cn/rtu/linux/netmgrd"
-	"hnyfkj.com.cn/rtu/linux/sshd"
 )
 
 const (
@@ -109,25 +109,22 @@ func main() {
 	// 03, 初始化网络管理模块
 	netmgrd.ModuleInit()
 	netmgrd.WaitAllOK(time.Duration(10) * time.Second) // 等待联网成功和网路时间同步成功
+	go writeDeviceIMEI()
 
-	// 04, 初始化远程运维模块, Todo: 根据项目不同, 远程运维连接的MQTT服务器不同, 具体看情况
-	sshd.ModuleInit("", "", "")
-
-	// 05, 初始化相机拍照模块
+	// 04, 初始化相机拍照模块
 	if !camera1.ModuleInit(true, "192.168.100.123/24", "192.168.100.100/24") {
 		goto end_p
 	}
 
-	// 06, 初始化与控制板通信, Todo: 根据项目不同, 使用的控制版硬件和协议都不同, 具体看情况
+	// 05, 初始化与控制板通信, Todo: 根据项目不同, 使用的控制版硬件和协议都不同, 具体看情况
 
-	// 07, 后台服务器业务交互, Todo: 根据项目不同, 实现具体的业务逻辑协议都不同, 具体看情况
+	// 06, 后台服务器业务交互, Todo: 根据项目不同, 实现具体的业务逻辑协议都不同, 具体看情况
 
-	// 08, 阻塞等待退出信号量
+	// 07, 阻塞等待退出信号量
 	<-baseapp.IsExit2()
 
-	// 09, 退出程序并释放资源
+	// 08, 退出程序并释放资源
 end_p:
-	sshd.ModuleExit()
 	netmgrd.ModemExit()
 	gps.ModuleExit()
 
@@ -145,3 +142,14 @@ func help() {
 
 	fmt.Println(h)
 }
+
+func writeDeviceIMEI() {
+	for {
+		imei := netmgrd.GetIMEI()
+		if imei == netmgrd.ErrUnknownModemTypeMsg || imei == "" {
+			continue
+		}
+		os.WriteFile("/var/device_imei.txt", []byte(strings.TrimSpace(imei)+"\n"), 0644)
+		break
+	}
+}

+ 4 - 3
sshd/sshd.go

@@ -3,6 +3,7 @@ package sshd
 import (
 	"context"
 	"errors"
+	"os"
 	"strings"
 	"sync"
 	"sync/atomic"
@@ -108,12 +109,12 @@ func ModuleExit() {
 }
 
 func (c *MQTTCoupler) init2() error {
-	netmgrd.ModemInit()
-	c.imei = netmgrd.GetIMEI()
+	imeiBytes, _ := os.ReadFile("/var/device_imei.txt")
+	c.imei = strings.TrimSpace(string(imeiBytes))
 	if c.imei == netmgrd.ErrUnknownModemTypeMsg || c.imei == "" {
 		return ErrIMEINotAvailable
 	}
-	netmgrd.ModemExit()
+	baseapp.Logger.Infof("[%s] ☺✔设备IMEI: %s", MODULE_NAME, c.imei)
 
 	template := "/yfkj/device/rpc/imei"
 	c.subTopic = strings.ReplaceAll(template+"/cmd", "imei", c.imei)