params_cfg.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package mcu_ctrl_board
  2. import (
  3. "fmt"
  4. "path/filepath"
  5. "sync"
  6. "gopkg.in/ini.v1"
  7. "hnyfkj.com.cn/rtu/bxs-sy/baseapp"
  8. )
  9. type Config struct {
  10. Version string `ini:"Version"` // 版本号
  11. CtrlMode int `ini:"CtrlMode"` // 定时控制模式(0=光控, 1=时控)
  12. LightDuration int `ini:"LightDuration"` // 光控定时时长(小时, 1-10, 仅光控模式有效)
  13. StartHour int `ini:"StartHour"` // 时控开始时间(小时, 0-23, 仅时控模式有效)
  14. EndHour int `ini:"EndHour"` // 时控结束时间(小时, 0-23, 仅时控模式有效)
  15. TakePhotoInterval int `ini:"TakePhotoIntervalMinutes"` // 拍照间隔(分钟)
  16. }
  17. var (
  18. CfgParams = &Config{
  19. Version: "0.0.0.1",
  20. CtrlMode: 1,
  21. LightDuration: 10,
  22. StartHour: 0,
  23. EndHour: 23,
  24. TakePhotoInterval: 60,
  25. }
  26. mu sync.Mutex
  27. )
  28. func loadCfgParams() error {
  29. mu.Lock()
  30. defer mu.Unlock()
  31. cfgFile := filepath.Join(baseapp.CFG_DIR, "mcuparams.ini")
  32. cfgIni, err := ini.Load(cfgFile)
  33. if err != nil {
  34. return err
  35. }
  36. if cfgIni.HasSection("MCUSchedule") {
  37. tmpCfgParams := *CfgParams
  38. if err := cfgIni.Section("MCUSchedule").MapTo(&tmpCfgParams); err != nil {
  39. return err
  40. }
  41. *CfgParams = tmpCfgParams
  42. } else {
  43. return fmt.Errorf("配置文件\"%s\"缺少\"[MCUSchedule]\"节", cfgFile)
  44. }
  45. var verCode baseapp.VersionCode
  46. err = verCode.FromString(CfgParams.Version)
  47. if err != nil {
  48. return fmt.Errorf("配置文件\"%s\"的\"MCUSchedule.Version\"值\"%s\"无效", cfgFile, CfgParams.Version)
  49. }
  50. mcuCtrlBoard_ConfParameters(uint32(verCode), uint8(CfgParams.CtrlMode), uint8(CfgParams.LightDuration), uint8(CfgParams.StartHour), uint8(CfgParams.EndHour), uint16(CfgParams.TakePhotoInterval))
  51. return nil
  52. }
  53. func SaveCfgParams(setParams *Config) error {
  54. mu.Lock()
  55. defer mu.Unlock()
  56. cfgFile := filepath.Join(baseapp.CFG_DIR, "mcuparams.ini")
  57. cfgIni, err := ini.Load(cfgFile)
  58. if err != nil {
  59. cfgIni = ini.Empty()
  60. }
  61. sec, err := cfgIni.GetSection("MCUSchedule")
  62. if err != nil {
  63. sec, _ = cfgIni.NewSection("MCUSchedule")
  64. }
  65. sec.Key("Version").SetValue(setParams.Version)
  66. sec.Key("CtrlMode").SetValue(fmt.Sprintf("%d", setParams.CtrlMode))
  67. sec.Key("LightDuration").SetValue(fmt.Sprintf("%d", setParams.LightDuration))
  68. sec.Key("StartHour").SetValue(fmt.Sprintf("%d", setParams.StartHour))
  69. sec.Key("EndHour").SetValue(fmt.Sprintf("%d", setParams.EndHour))
  70. sec.Key("TakePhotoIntervalMinutes").SetValue(fmt.Sprintf("%d", setParams.TakePhotoInterval))
  71. return cfgIni.SaveToIndent(cfgFile, " ")
  72. }