| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package iotDownService
- import (
- "IotAdmin/core/logger"
- "IotAdmin/core/tools/utils"
- iotMap "IotAdmin/iot/map"
- iotProtocol "IotAdmin/iot/protocol"
- iotElProtocol "IotAdmin/iot/protocol/electric"
- iotRtuService "IotAdmin/iot/service/rtuService"
- iotStruct "IotAdmin/iot/struct"
- )
- func collectData(sn string, config *iotStruct.DtuConfig) *[]*iotStruct.CollectData {
- array := make([]*iotStruct.CollectData, 0)
- logger.Infof("开始采集数据 【%s】", sn)
- logger.Debugf("开始采集数据【%s】 %v", sn, config)
- if !config.Enable || config.Cycle < 1 {
- return &array
- }
- client, ok := iotMap.MapDtuClient.Get(sn)
- if !ok {
- logger.Errorf("采集数据失败,[%s]客户端不存在", sn)
- return &array
- }
- if !client.Online {
- logger.Errorf("采集数据失败,[%s]客户端离线", sn)
- }
- client.MLock.Lock()
- defer client.MLock.Unlock()
- for _, cfg := range *config.SlaveConfig {
- if cfg.Addr < 1 || cfg.Addr > 254 {
- logger.Errorf("采集数据失败,[%s]客户端地址错误: %d", sn, cfg.Addr)
- continue
- }
- bAddr := utils.IntoByte(cfg.Addr)
- w := iotRtuService.NewRtuNetPgr(bAddr)
- w.SetClientState(client)
- w.SetSerialNumber(sn)
- var (
- err error
- collectHandler iotProtocol.MeterHandler
- )
- switch cfg.Protocol {
- case iotProtocol.MeterAdw300:
- collectHandler = iotElProtocol.NewAdw300MeterHandler()
- case iotProtocol.MeterPmc350b:
- collectHandler = iotElProtocol.NewPmc350bMeterHandler()
- default:
- logger.Errorf("[%s]未识别采集器类型: %v", sn, cfg)
- }
- colData, err := collectHandler.Collect(w, &cfg)
- if err != nil {
- logger.Errorf("采集数据失败, [%s][%s]客户端采集数据错误: %s", sn, cfg.Protocol, err.Error())
- continue
- }
- newCfg := cfg
- colData.SlaveConfig = &newCfg
- array = append(array, colData)
- }
- logger.Infof("采集数据完成【%s】", sn)
- logger.Debugf("采集数据完成【%s】 %v", sn, array)
- return &array
- }
|