dtu_config.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package iotStruct
  2. import (
  3. "encoding/json"
  4. "reflect"
  5. "strings"
  6. )
  7. type DtuConfig struct {
  8. Enable bool `json:"enable"`
  9. Sn string `json:"sn"`
  10. Name string `json:"name"`
  11. Mode int `json:"mode"`
  12. Cycle int `json:"cycle"`
  13. SlaveConfig *[]SlaveConfig `json:"slaveConfig"`
  14. }
  15. type SlaveConfig struct {
  16. No string `json:"no"`
  17. Enable bool `json:"enable"`
  18. Addr int `json:"addr"` //表计串口地址
  19. //LvRef float32 `json:"lvRef"` //表计线电压基准(220)
  20. //PvRef float32 `json:"pvRef"` //表计相电压基准(380)
  21. Protocol string `json:"protocol"` //表计协议
  22. ReportConfig *[]ReportConfig `json:"reportConfig"`
  23. OtherConfig string `json:"other"` // 其他配置
  24. }
  25. type ReportConfig struct {
  26. Host string `json:"host"`
  27. Protocol string `json:"protocol"`
  28. ST string `json:"st"`
  29. MN string `json:"mn"`
  30. User string `json:"user"`
  31. Pwd string `json:"pwd"`
  32. BmYz *BmYz `json:"bmYz"` //编码因子
  33. }
  34. func (rc *ReportConfig) String() string {
  35. return rc.Host + "|" + rc.Protocol + "|" + rc.MN + "|" + rc.User + "|" + rc.Pwd
  36. }
  37. type BmYz struct {
  38. P string
  39. Pa string
  40. Pb string
  41. Pc string
  42. Q string
  43. Qa string
  44. Qb string
  45. Qc string
  46. Pf string
  47. Pfa string
  48. Pfb string
  49. Pfc string
  50. Ua string
  51. Ub string
  52. Uc string
  53. Uab string
  54. Ubc string
  55. Uca string
  56. Ia string
  57. Ib string
  58. Ic string
  59. Iz string
  60. Uaw string
  61. Ubw string
  62. Ucw string
  63. Uabw string
  64. Ubcw string
  65. Ucaw string
  66. F string
  67. FW string
  68. IUnbalance string
  69. UUnbalance string
  70. Dp string
  71. Pv string
  72. Tpe string
  73. Tqe string
  74. Fpe string
  75. Fqe string
  76. Tps string
  77. Tqs string
  78. Fps string
  79. Fqs string
  80. T string
  81. T2 string
  82. T3 string
  83. T4 string
  84. T5 string
  85. T6 string
  86. T7 string
  87. }
  88. // GetBmYzKey 获取BmYz的键
  89. func (rc *ReportConfig) GetBmYzKey(key string) string {
  90. return rc.GetBmYzKeyOrDefault(key, strings.ToLower(key))
  91. }
  92. // GetBmYzKeyOrDefault 获取BmYz的键
  93. func (rc *ReportConfig) GetBmYzKeyOrDefault(key string, defaultValue string) string {
  94. if rc.BmYz == nil {
  95. return defaultValue
  96. }
  97. v := reflect.ValueOf(rc.BmYz).Elem()
  98. field := v.FieldByName(key)
  99. if field.IsValid() {
  100. return field.String()
  101. }
  102. return defaultValue
  103. }
  104. func (bm *BmYz) BuildBmYzArray(data string) (*map[string]BmYz, error) {
  105. var err error
  106. mp := make(map[string]BmYz)
  107. if data != "" {
  108. err = json.Unmarshal([]byte(data), &mp)
  109. }
  110. return &mp, err
  111. }