Forráskód Böngészése

设计编写MCU参数配置文件读写代码

niujiuru 3 hete
szülő
commit
f9988af5dd

+ 0 - 1
mcu_ctrl_board/mcuparams.ini

@@ -1 +0,0 @@
-[MCUSchedule]

+ 4 - 0
mcu_ctrl_board/mcuparams.json

@@ -0,0 +1,4 @@
+{
+    "sensor_data_interval": "30",
+    "photo_times": ["10:00", "11:00", "12:00"]
+}

+ 64 - 0
mcu_ctrl_board/params_cfg.go

@@ -1 +1,65 @@
 package mcu_ctrl_board
+
+import (
+	"encoding/json"
+	"fmt"
+	"os"
+	"path/filepath"
+	"sync"
+
+	"hnyfkj.com.cn/rtu/linux/baseapp"
+)
+
+type Config struct {
+	SensorDataInterval string   `json:"sensor_data_interval"`
+	PhotoTimes         []string `json:"photo_times"`
+}
+
+var (
+	CfgParams = &Config{
+		SensorDataInterval: "30",                                // 默认30分钟采集并上传一次传感器数据
+		PhotoTimes:         []string{"10:00", "11:00", "12:00"}, // 默认每天10点、11点和12点拍照并上传
+	}
+	mu sync.Mutex
+)
+
+func LoadCfgParams() error {
+	mu.Lock()
+	defer mu.Unlock()
+
+	cfgFile := filepath.Join(baseapp.CFG_DIR, "mcuparams.json")
+
+	data, err := os.ReadFile(cfgFile)
+	if err != nil {
+		return fmt.Errorf("无法读取配置文件\"%s\": %w", cfgFile, err)
+	}
+
+	var tmpCfgParams Config
+	if err := json.Unmarshal(data, &tmpCfgParams); err != nil {
+		return fmt.Errorf("解析配置文件\"%s\"出错: %w", cfgFile, err)
+	}
+
+	*CfgParams = tmpCfgParams
+
+	return nil
+}
+
+func SaveCfgParams(setParams *Config) error {
+	mu.Lock()
+	defer mu.Unlock()
+
+	cfgFile := filepath.Join(baseapp.CFG_DIR, "mcuparams.json")
+
+	data, err := json.MarshalIndent(setParams, "", "  ")
+	if err != nil {
+		return fmt.Errorf("生成JSON配置项内容失败: %w", err)
+	}
+
+	if err := os.WriteFile(cfgFile, data, 0644); err != nil {
+		return fmt.Errorf("保存配置文件\"%s\"失败: %w", cfgFile, err)
+	}
+
+	*CfgParams = *setParams
+
+	return nil
+}