| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package mcu_ctrl_board
- import (
- "fmt"
- "path/filepath"
- "sync"
- "gopkg.in/ini.v1"
- "hnyfkj.com.cn/rtu/bxs-sy/baseapp"
- )
- type Config struct {
- Version string `ini:"Version"` // 版本号
- CtrlMode int `ini:"CtrlMode"` // 定时控制模式(0=光控, 1=时控)
- LightDuration int `ini:"LightDuration"` // 光控定时时长(小时, 1-10, 仅光控模式有效)
- StartHour int `ini:"StartHour"` // 时控开始时间(小时, 0-23, 仅时控模式有效)
- EndHour int `ini:"EndHour"` // 时控结束时间(小时, 0-23, 仅时控模式有效)
- TakePhotoInterval int `ini:"TakePhotoIntervalMinutes"` // 拍照间隔(分钟)
- }
- var (
- CfgParams = &Config{
- Version: "0.0.0.1",
- CtrlMode: 1,
- LightDuration: 10,
- StartHour: 0,
- EndHour: 23,
- TakePhotoInterval: 60,
- }
- mu sync.Mutex
- )
- func loadCfgParams() error {
- mu.Lock()
- defer mu.Unlock()
- cfgFile := filepath.Join(baseapp.CFG_DIR, "mcuparams.ini")
- cfgIni, err := ini.Load(cfgFile)
- if err != nil {
- return err
- }
- if cfgIni.HasSection("MCUSchedule") {
- tmpCfgParams := *CfgParams
- if err := cfgIni.Section("MCUSchedule").MapTo(&tmpCfgParams); err != nil {
- return err
- }
- *CfgParams = tmpCfgParams
- } else {
- return fmt.Errorf("配置文件\"%s\"缺少\"[MCUSchedule]\"节", cfgFile)
- }
- var verCode baseapp.VersionCode
- err = verCode.FromString(CfgParams.Version)
- if err != nil {
- return fmt.Errorf("配置文件\"%s\"的\"MCUSchedule.Version\"值\"%s\"无效", cfgFile, CfgParams.Version)
- }
- mcuCtrlBoard_ConfParameters(uint32(verCode), uint8(CfgParams.CtrlMode), uint8(CfgParams.LightDuration), uint8(CfgParams.StartHour), uint8(CfgParams.EndHour), uint16(CfgParams.TakePhotoInterval))
- return nil
- }
- func SaveCfgParams(setParams *Config) error {
- mu.Lock()
- defer mu.Unlock()
- cfgFile := filepath.Join(baseapp.CFG_DIR, "mcuparams.ini")
- cfgIni, err := ini.Load(cfgFile)
- if err != nil {
- cfgIni = ini.Empty()
- }
- sec, err := cfgIni.GetSection("MCUSchedule")
- if err != nil {
- sec, _ = cfgIni.NewSection("MCUSchedule")
- }
- sec.Key("Version").SetValue(setParams.Version)
- sec.Key("CtrlMode").SetValue(fmt.Sprintf("%d", setParams.CtrlMode))
- sec.Key("LightDuration").SetValue(fmt.Sprintf("%d", setParams.LightDuration))
- sec.Key("StartHour").SetValue(fmt.Sprintf("%d", setParams.StartHour))
- sec.Key("EndHour").SetValue(fmt.Sprintf("%d", setParams.EndHour))
- sec.Key("TakePhotoIntervalMinutes").SetValue(fmt.Sprintf("%d", setParams.TakePhotoInterval))
- return cfgIni.SaveToIndent(cfgFile, " ")
- }
|