| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | package zzimport (    "io/ioutil"    "encoding/xml"    "wb/lg"    "math")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 szzInfovar zzRegMap map[string]zzRegvar zzBinMap map[string]zzRegvar zzWarnList []zzRegfunc 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)    }}
 |