diff --git a/internal/initialize/init.go b/internal/initialize/init.go index 25fc419..f41ce99 100644 --- a/internal/initialize/init.go +++ b/internal/initialize/init.go @@ -10,12 +10,14 @@ import ( "tgk-touch/internal/module/adl400TtyApi" m9zTtyApi "tgk-touch/internal/module/m9zTtyApi" "tgk-touch/internal/module/m9zTtyPwd" + "tgk-touch/internal/module/meterFirm" ) func Init() { CfgInit() ZapInit() m9zTtyPwd.Init() + meterFirm.Init() m9zTtyApi.Init() adl400TtyApi.Init() timer() diff --git a/internal/library/meterControl/init.go b/internal/library/meterControl/init.go index 76dd028..524eaf3 100644 --- a/internal/library/meterControl/init.go +++ b/internal/library/meterControl/init.go @@ -11,6 +11,10 @@ const ( ) var ( + MeterFirms = map[string]MeterFirm{ + "ADL200": ADL200, + "ADL400": ADL400, + } meterControls = make(map[MeterFirm]IMeterControl) readMeterControls = make(map[MeterFirm]IReadMeter) writeMeterControls = make(map[MeterFirm]IWriteMeter) diff --git a/internal/model/config/config.go b/internal/model/config/config.go index aaa9900..26b0179 100644 --- a/internal/model/config/config.go +++ b/internal/model/config/config.go @@ -99,6 +99,7 @@ type ( DeviceId string `json:"deviceId" mapstructure:"deviceId"` Version string `json:"version" mapstructure:"version"` MeterAddr string `json:"meterAddr" mapstructure:"meterAddr"` + MeterFirm string `json:"meterFirm" mapstructure:"meterFirm"` } Firefox struct { diff --git a/internal/module/adl400TtyApi/init.go b/internal/module/adl400TtyApi/init.go index 1bcee7a..01167f2 100644 --- a/internal/module/adl400TtyApi/init.go +++ b/internal/module/adl400TtyApi/init.go @@ -2,26 +2,29 @@ package adl400TtyApi import ( - "encoding/json" + "strings" + "github.com/gogf/gf/v2/util/gconv" "github.com/towgo/towgo/towgo" - "strings" "tgk-touch/internal/global" "tgk-touch/internal/library/meterControl" + "tgk-touch/internal/model/config" + "tgk-touch/internal/module/meterFirm" ) var mc meterControl.IMeterControl - -var deviceInfo map[string]interface{} +var deviceInfo config.DeviceInfo func Init() { - marshal, _ := json.Marshal(g.Config().DeviceInfo) - json.Unmarshal(marshal, &deviceInfo) - - mc = meterControl.GetMeterControls(meterControl.ADL400) + deviceInfo = g.Config().DeviceInfo + mc = meterFirm.Manager().GetMeterControl() + meterFirm.Manager().RegisterReloadCallback(Reload) initReadFunc() initWriteFunc() +} +func Reload() { + mc = meterFirm.Manager().GetMeterControl() } func initReadFunc() { towgo.SetFunc("/adl400/readPhaseData", readPhaseData) @@ -41,8 +44,6 @@ func initWriteFunc() { towgo.SetFunc("/adl400/setMsgAddress", setMsgAddress) } func getMeterAddr(cuid string) byte { - // 去掉 "0x" 前缀,按 16 进制解析 - return gconv.Byte(strings.TrimPrefix(deviceInfo["meterAddr"].(string), "0x")) - + return gconv.Byte(strings.TrimPrefix(deviceInfo.MeterAddr, "0x")) }