1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package zz
- import (
- "encoding/xml"
- "io/ioutil"
- "math"
- "wb/lg"
- )
- type szzInfo struct {
- Model string
- Registers []zzReg ` xml:"Registers>Register"`
- Binarys []zzReg `xml:"Binarys>Register"`
- }
- type zzReg struct {
- Dec float64 `xml:"Dec,attr"`
- No string `xml:"No,attr"`
- Name string `xml:",innerxml"`
- Key string `xml:"Key,attr"`
- Model string `xml:"Model,attr"`
- }
- func (zg *zzReg) GetValue(v float64) float64 {
- if zg.Dec <= 0 {
- return v
- }
- return v / math.Pow(10, zg.Dec)
- }
- var zzInfo szzInfo
- var zzRegMap map[string]zzReg
- var zzBinMap map[string]zzReg
- var zzWarnList []zzReg
- func LoadModelInfo(path string) {
- readZzInfoFromXml(path)
- zzRegMap = make(map[string]zzReg)
- zzBinMap = make(map[string]zzReg)
- zzWarnList = make([]zzReg, 0)
- for _, zzReg := range zzInfo.Registers {
- if zzReg.No == "" {
- continue
- }
- zzRegMap[zzReg.No] = zzReg
- }
- for _, r := range zzInfo.Binarys {
- if r.No == "" {
- continue
- }
- zzBinMap[r.No] = r
- if r.Model == "w" {
- zzWarnList = append(zzWarnList, r)
- }
- }
- }
- func readZzInfoFromXml(path string) {
- lg.Info("readZzInfoFromXml: Read zzInfo from:", path)
- content, err := ioutil.ReadFile(path)
- if err != nil {
- panic(err)
- }
- err = xml.Unmarshal(content, &zzInfo)
- if err != nil {
- panic(err)
- }
- }
|