package test import ( "MeterService/core/logger" "MeterService/dataStruct" "MeterService/service/rtuService" "errors" "math" "reflect" "runtime" ) var ( testMeter = []dataStruct.ParsingDataConfig{ {Origin: 0x00, Amount: 20, Method: test001}, } ) func CollectTest(w rtuService.RtuNetPgr, ref *dataStruct.MeterRef) (*dataStruct.CollectData, error) { colData := &dataStruct.CollectData{ MeterRef: ref, } for _, v := range testMeter { if adu, err := w.GetHoldingRegs(v.Origin, v.Amount); err != nil { logger.Error("TEST 采集失败[%s] ERROR:%v", runtime.FuncForPC(reflect.ValueOf(v.Method).Pointer()).Name(), err) return colData, err } else { logger.Debug("TEST ======》ADU:%v", adu) v.Method(adu, colData) } } return colData, errors.New("TEST") } func test001(adu []byte, s *dataStruct.CollectData) { var ( index = 0 ) m := uint32(adu[index])<<24 | uint32(adu[index+1])<<16 | uint32(adu[index+2])<<8 | uint32(adu[index+3]) ua := math.Float32frombits(m) logger.Debug("TEST 01采集成功 UA:%v %v", ua, m) index += 32 n := uint32(adu[index])<<24 | uint32(adu[index+1])<<16 | uint32(adu[index+2])<<8 | uint32(adu[index+3]) ia := math.Float32frombits(n) logger.Debug("TEST 01采集成功 IA:%v %v", ia, n) }