collect.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package downStreamService
  2. import (
  3. "MeterService/core/logger"
  4. "MeterService/core/utils"
  5. "MeterService/data"
  6. "MeterService/dataStruct"
  7. "MeterService/meter"
  8. "MeterService/service/downStreamService/proto"
  9. "MeterService/service/downStreamService/proto/acrel"
  10. "MeterService/service/downStreamService/proto/pmc350b"
  11. "MeterService/service/downStreamService/proto/test"
  12. "MeterService/service/rtuService"
  13. )
  14. func collectData(sn string, config *dataStruct.DtuConfig) *[]*dataStruct.CollectData {
  15. array := make([]*dataStruct.CollectData, 0)
  16. meterRef := &dataStruct.MeterRef{}
  17. logger.Info("开始采集数据 【%s】", sn)
  18. logger.Debug("开始采集数据【%s】 %v", sn, config)
  19. if !config.Enable || config.Secs < 1 {
  20. return &array
  21. }
  22. //client, ok := data.DtuMapState.Get(sn)
  23. client, ok := data.OnlineSN.Get(sn)
  24. if !ok {
  25. logger.Error("采集数据失败,[%s]客户端不存在", sn)
  26. return &array
  27. }
  28. if !client.Online {
  29. logger.Error("采集数据失败,[%s]客户端离线", sn)
  30. }
  31. client.MLock.Lock()
  32. defer client.MLock.Unlock()
  33. for _, cfg := range config.Slave {
  34. if cfg.Addr < 1 || cfg.Addr > 254 {
  35. logger.Error("采集数据失败,[%s]客户端地址错误: %d", sn, cfg.Addr)
  36. continue
  37. }
  38. bAddr := utils.IntoByte(cfg.Addr)
  39. w := rtuService.NewRtuNetPgr(bAddr)
  40. w.SetClientState(client)
  41. w.SetSerialNumber(sn)
  42. meterRef.LvRef = 220
  43. meterRef.PvRef = 380
  44. if cfg.LvRef > 0 {
  45. meterRef.LvRef = cfg.LvRef
  46. }
  47. if cfg.PvRef > 0 {
  48. meterRef.PvRef = cfg.PvRef
  49. }
  50. var (
  51. colData *dataStruct.CollectData
  52. err error
  53. collectHandler proto.MeterHandler
  54. )
  55. switch cfg.MType {
  56. case meter.MeterAdw300:
  57. collectHandler = acrel.NewAdw300MeterHandler()
  58. case meter.MeterPmc350b:
  59. collectHandler = pmc350b.NewPmc350bMeterHandler()
  60. default:
  61. logger.Debug("Slave配置【%s】 %v", sn, cfg)
  62. colData, err = test.CollectTest(w, meterRef)
  63. if err != nil {
  64. continue
  65. }
  66. }
  67. colData, err = collectHandler.Collect(w, meterRef)
  68. if err != nil {
  69. logger.Error("采集数据失败, [%s][%s]客户端采集数据错误: %s", sn, cfg.MType, err.Error())
  70. continue
  71. }
  72. colData.Slave = cfg
  73. array = append(array, colData)
  74. }
  75. logger.Info("采集数据完成【%s】", sn)
  76. logger.Debug("采集数据完成【%s】 %v", sn, array)
  77. return &array
  78. }