소스 검색

Merge remote-tracking branch 'origin/master'

LingxinMeng 7 달 전
부모
커밋
7b1d392c6f

+ 43 - 26
aarch64/pjisuv/common/config/c_cloud.go

@@ -71,38 +71,55 @@ var (
 	CloudConfigMutex sync.RWMutex
 )
 
-// InitCloudConfig 初始化业务配置
+// 初始化业务配置
 func InitCloudConfig() {
 	c_log.GlobalLogger.Info("初始化OSS配置文件 - 开始。")
-	// 获取文件的目录
-	_ = util.CreateParentDir(LocalConfig.CloudConfigLocalPath)
-	// 3 ------- 获取 yaml 字符串 -------
-	cloudConfigObjectKey := LocalConfig.OssBasePrefix + LocalConfig.EquipmentNo + "/" + LocalConfig.CloudConfigFilename
-	// todo 等待时间同步
-	// 判断文件是否存在。如果不存在则使用默认的
-	isExist, err := OssBucket.IsObjectExist(cloudConfigObjectKey)
-	if err != nil {
-		c_log.GlobalLogger.Errorf("判断配置文件是否存在失败,错误信息为:%v", err)
-	}
-	if isExist {
-		c_log.GlobalLogger.Info("使用机器人自定义配置文件:", cloudConfigObjectKey)
-	} else {
-		cloudConfigObjectKey = LocalConfig.OssBasePrefix + LocalConfig.CloudConfigFilename // 默认配置文件路径
-		c_log.GlobalLogger.Info("使用机器人默认配置文件:", cloudConfigObjectKey)
-	}
-	for {
-		OssMutex.Lock()
-		err := OssBucket.GetObjectToFile(cloudConfigObjectKey, LocalConfig.CloudConfigLocalPath)
-		OssMutex.Unlock()
+	var content []byte // cloud.yaml 内容
+	var err error
+	if LocalConfig.Internet {
+		c_log.GlobalLogger.Info("车辆可以访问互联网。")
+		// 获取文件的目录
+		_ = util.CreateParentDir(LocalConfig.CloudConfigLocalPath)
+		// 3 ------- 获取 yaml 字符串 -------
+		cloudConfigObjectKey := LocalConfig.OssBasePrefix + LocalConfig.EquipmentNo + "/" + LocalConfig.CloudConfigFilename
+		// todo 等待时间同步
+		// 判断文件是否存在。如果不存在则使用默认的
+		isExist, err := OssBucket.IsObjectExist(cloudConfigObjectKey)
 		if err != nil {
-			c_log.GlobalLogger.Error("下载oss上的配置文件 "+cloudConfigObjectKey+" 失败。网络授时未完成或者未配置阿里云网络映射到/etc/hosts:", err)
-			time.Sleep(time.Duration(2) * time.Second)
-			continue
+			c_log.GlobalLogger.Errorf("判断配置文件是否存在失败,错误信息为:%v", err)
+		}
+		if isExist {
+			c_log.GlobalLogger.Info("使用机器人自定义配置文件:", cloudConfigObjectKey)
+		} else {
+			cloudConfigObjectKey = LocalConfig.OssBasePrefix + LocalConfig.CloudConfigFilename // 默认配置文件路径
+			c_log.GlobalLogger.Info("使用默认配置文件:", cloudConfigObjectKey)
+		}
+		for {
+			OssMutex.Lock()
+			err := OssBucket.GetObjectToFile(cloudConfigObjectKey, LocalConfig.CloudConfigLocalPath)
+			OssMutex.Unlock()
+			if err != nil {
+				c_log.GlobalLogger.Error("下载oss上的配置文件 "+cloudConfigObjectKey+" 失败。网络授时未完成或者未配置阿里云网络映射到/etc/hosts:", err)
+				time.Sleep(time.Duration(2) * time.Second)
+				continue
+			}
+			break
+		}
+	} else {
+		c_log.GlobalLogger.Infof("车辆不可以访问互联网,请提前将配置文件放到【%v】。", LocalConfig.CloudConfigLocalPath)
+		for {
+			time.Sleep(time.Duration(1) * time.Second)
+			if util.FileExists(LocalConfig.CloudConfigLocalPath) {
+				c_log.GlobalLogger.Infof("配置文件【%v】已准备好。", LocalConfig.CloudConfigLocalPath)
+				break
+			} else {
+				c_log.GlobalLogger.Infof("配置文件【%v】没有准备好。", LocalConfig.CloudConfigLocalPath)
+				continue
+			}
 		}
-		break
 	}
 
-	content, err := os.ReadFile(LocalConfig.CloudConfigLocalPath)
+	content, err = os.ReadFile(LocalConfig.CloudConfigLocalPath)
 	if err != nil {
 		c_log.GlobalLogger.Error("程序退出。配置文件 ", LocalConfig.CloudConfigLocalPath, " 读取失败:", err)
 		os.Exit(-1)

+ 1 - 0
aarch64/pjisuv/common/config/c_local.go

@@ -25,6 +25,7 @@ type restartCmd struct {
 }
 
 type localConfig struct {
+	Internet             bool       `yaml:"internet"`
 	Node                 node       `yaml:"node"`                    // 获取oss配置的url
 	UrlGetOssConfig      string     `yaml:"url-get-oss-config"`      // 获取oss配置的url
 	OssBasePrefix        string     `yaml:"oss-base-prefix"`         // 云端配置文件的位置

+ 3 - 0
aarch64/pjisuv/多功能车-soc1-local-config.yaml

@@ -1,3 +1,6 @@
+# 是否联通互联网
+internet: true
+# 节点名称和IP
 node:
   name: node1
   ip: 192.168.1.102

+ 3 - 0
aarch64/pjisuv/多功能车-soc2-local-config.yaml

@@ -1,3 +1,6 @@
+# 是否联通互联网
+internet: true
+# 节点名称和IP
 node:
   name: node2
   ip: 192.168.1.103

+ 3 - 0
aarch64/pjisuv/金龙中巴3号-soc1-local-config.yaml

@@ -1,3 +1,6 @@
+# 是否联通互联网
+internet: false
+# 节点名称和IP
 node:
   name: node1
   ip: 192.168.1.104

+ 17 - 0
common/util/u_io.go

@@ -11,6 +11,23 @@ import (
 	"strings"
 )
 
+// checks if a file exists at the given path
+func FileExists(filePath string) bool {
+	// Attempt to open the file
+	_, err := os.Open(filePath)
+	if err != nil {
+		// If there is an error, check if it's because the file doesn't exist
+		if os.IsNotExist(err) {
+			return false
+		}
+		// For any other error, we will also return false
+		// Note: In a production environment, you might want to handle other errors differently
+		return false
+	}
+	// If no error, the file exists
+	return true
+}
+
 // 检查文件是否存在,如果存在则删除它,不返回错误
 func DeleteFileIfExists(filePath string) {
 	// 使用Stat函数检查文件是否存在

+ 1 - 1
deploy/build-send_fault_info.sh

@@ -1,4 +1,4 @@
 #!/bin/bash
 
 # 在cicv-data-closedloop根目录执行命令
-go build -o ./deploy/exe/topic_echo.exe ./tools/send_fault_info/main/main.go
+go build -o ./deploy/exe/send_fault_info.exe ./tools/send_fault_info/main/main.go