Prechádzať zdrojové kódy

优化迭代版本;1,修改默认配置;2,避免写入MCU配置文件时突然掉电,导致程序无法启动;3,程序退出时清理更干净

niujiuru 3 týždňov pred
rodič
commit
f943b52756

+ 1 - 1
Makefile

@@ -7,7 +7,7 @@ DEFINS = -D_GNU_SOURCE
 
 GO := go
 GO_BUILD := $(GO) build
-GO_FLAGS := -ldflags "-s -w -X hnyfkj.com.cn/rtu/bxs-sy/baseapp.Version=1.0.0.6 -X hnyfkj.com.cn/rtu/bxs-sy/baseapp.BuildTime=$(shell date +%Y-%m-%dT%H:%M:%S)"
+GO_FLAGS := -ldflags "-s -w -X hnyfkj.com.cn/rtu/bxs-sy/baseapp.Version=1.0.0.7 -X hnyfkj.com.cn/rtu/bxs-sy/baseapp.BuildTime=$(shell date +%Y-%m-%dT%H:%M:%S)"
 
 target ?= x86_64
 ifeq ($(target),armv7hf)

+ 8 - 2
baseapp/app.go

@@ -45,11 +45,11 @@ func SingleInstanceRun() { // 非阻塞单实例运行
 	}
 
 	ch := make(chan os.Signal, 1)
-	signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
+	signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM, syscall.SIGUSR1)
 	go func() {
 		for s := range ch {
 			switch s {
-			case syscall.SIGINT, syscall.SIGTERM:
+			case syscall.SIGINT, syscall.SIGTERM, syscall.SIGUSR1:
 				Logger.Infof("Received signal: %v", s)
 				mux.Close()
 				os.RemoveAll(lockFile)
@@ -70,3 +70,9 @@ func IsExit1() bool {
 func IsExit2() <-chan struct{} {
 	return exitCh
 }
+
+func SafeExit() { // 安全退出
+	pid := os.Getpid()
+	syscall.Kill(pid, syscall.SIGUSR1)
+	<-exitCh
+}

+ 1 - 0
main.go

@@ -71,6 +71,7 @@ end_p:
 
 	baseapp.Logger.Info("程序退出")
 	baseapp.ExitLogger() // 安全的关闭日志模块
+	baseapp.SafeExit()   // 安全的关闭退出程序
 }
 
 func help() {

+ 2 - 2
mcu_ctrl_board/mcuparams.ini

@@ -6,8 +6,8 @@ CtrlMode = 1
 ; 光控定时时长(单位: 小时, 范围: 1-10, 仅光控模式有效)
 LightDuration = 10
 ; 时控开始时间(小时, 0-23, 一天24小时, 仅时控模式有效)
-StartHour = 0
+StartHour = 8
 ; 时控结束时间(小时, 0-23, 一天24小时, 仅时控模式有效)
-EndHour = 23
+EndHour = 18
 ; 拍照间隔(分钟,其值不得超过当前控制模式下允许的最大值)
 TakePhotoIntervalMinutes = 60

+ 12 - 1
mcu_ctrl_board/params_cfg.go

@@ -2,6 +2,7 @@ package mcu_ctrl_board
 
 import (
 	"fmt"
+	"os"
 	"path/filepath"
 	"sync"
 
@@ -83,5 +84,15 @@ func SaveCfgParams(setParams *Config) error {
 	sec.Key("EndHour").SetValue(fmt.Sprintf("%d", setParams.EndHour))
 	sec.Key("TakePhotoIntervalMinutes").SetValue(fmt.Sprintf("%d", setParams.TakePhotoInterval))
 
-	return cfgIni.SaveToIndent(cfgFile, " ")
+	tmpFile := cfgFile + ".tmp"
+	if err := cfgIni.SaveToIndent(tmpFile, " "); err != nil {
+		return fmt.Errorf("write temp ini failed: %w", err)
+	}
+
+	if err := os.Rename(tmpFile, cfgFile); err != nil {
+		os.Remove(tmpFile)
+		return fmt.Errorf("replace ini failed: %w", err)
+	}
+
+	return nil
 }

+ 1 - 1
package/armv7hf.sh

@@ -4,7 +4,7 @@
 set -e
 set -o pipefail
 
-ver_num="1.0.0.6"
+ver_num="1.0.0.7"
 cur_dir="$(pwd)"
 pre_dir="$(dirname "$cur_dir")"
 pkg_dir="${cur_dir}/rtu_bxs_seyou"

BIN
package/rtu_bxs_seyou_1.0.0.7.tar.gz