| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package downStreamService
- import (
- "MeterService/core/logger"
- "MeterService/core/utils"
- "MeterService/data"
- "MeterService/dataStruct"
- "MeterService/meter"
- "MeterService/service/downStreamService/proto"
- "MeterService/service/downStreamService/proto/acrel"
- "MeterService/service/downStreamService/proto/pmc350b"
- "MeterService/service/downStreamService/proto/test"
- "MeterService/service/rtuService"
- )
- func collectData(sn string, config *dataStruct.DtuConfig) *[]*dataStruct.CollectData {
- array := make([]*dataStruct.CollectData, 0)
- meterRef := &dataStruct.MeterRef{}
- logger.Info("开始采集数据 【%s】", sn)
- logger.Debug("开始采集数据【%s】 %v", sn, config)
- if !config.Enable || config.Secs < 1 {
- return &array
- }
- //client, ok := data.DtuMapState.Get(sn)
- client, ok := data.OnlineSN.Get(sn)
- if !ok {
- logger.Error("采集数据失败,[%s]客户端不存在", sn)
- return &array
- }
- if !client.Online {
- logger.Error("采集数据失败,[%s]客户端离线", sn)
- }
- client.MLock.Lock()
- defer client.MLock.Unlock()
- for _, cfg := range config.Slave {
- if cfg.Addr < 1 || cfg.Addr > 254 {
- logger.Error("采集数据失败,[%s]客户端地址错误: %d", sn, cfg.Addr)
- continue
- }
- bAddr := utils.IntoByte(cfg.Addr)
- w := rtuService.NewRtuNetPgr(bAddr)
- w.SetClientState(client)
- w.SetSerialNumber(sn)
- meterRef.LvRef = 220
- meterRef.PvRef = 380
- if cfg.LvRef > 0 {
- meterRef.LvRef = cfg.LvRef
- }
- if cfg.PvRef > 0 {
- meterRef.PvRef = cfg.PvRef
- }
- var (
- colData *dataStruct.CollectData
- err error
- collectHandler proto.MeterHandler
- )
- switch cfg.MType {
- case meter.MeterAdw300:
- collectHandler = acrel.NewAdw300MeterHandler()
- case meter.MeterPmc350b:
- collectHandler = pmc350b.NewPmc350bMeterHandler()
- default:
- logger.Debug("Slave配置【%s】 %v", sn, cfg)
- colData, err = test.CollectTest(w, meterRef)
- if err != nil {
- continue
- }
- }
- colData, err = collectHandler.Collect(w, meterRef)
- if err != nil {
- logger.Error("采集数据失败, [%s][%s]客户端采集数据错误: %s", sn, cfg.MType, err.Error())
- continue
- }
- colData.Slave = cfg
- array = append(array, colData)
- }
- logger.Info("采集数据完成【%s】", sn)
- logger.Debug("采集数据完成【%s】 %v", sn, array)
- return &array
- }
|