瀏覽代碼

Add 添加一个测试协议

YueYunyun 2 年之前
父節點
當前提交
920e3e0e14

+ 0 - 1
SERVER/Meter_Service/core/tcpserver/tcpserver.go

@@ -243,7 +243,6 @@ func SendTo(cli *Client, date []byte) (res []byte, ok bool) {
 		res, ok = cli.GetRawRes()
 		nCnt := cli.GetRestCnt()
 		if !ok {
-			//log.Println("Over Time...")
 			break
 		}
 		if nCnt == cnt+1 {

+ 1 - 0
SERVER/Meter_Service/meter/proto/proto.go

@@ -9,6 +9,7 @@ var (
 func MeterProtoInit() {
 	//在这里添加支持的电表协议列表
 	meterProto = append(meterProto, "ADW300")
+	meterProto = append(meterProto, "TEST")
 
 	//在这里添加支持的上报协议列表
 	platProto = append(platProto, "YC-HJ212")

+ 7 - 0
SERVER/Meter_Service/service/downStreamService/collect.go

@@ -7,6 +7,7 @@ import (
 	"MeterService/dataStruct"
 	"MeterService/database/meterCalcParam"
 	"MeterService/service/downStreamService/proto/acrel"
+	"MeterService/service/downStreamService/proto/test"
 	"MeterService/service/rtuService"
 	"strconv"
 	"time"
@@ -65,6 +66,12 @@ func collectData(sn string, config *dataStruct.DtuConfig) []*dataStruct.CollectD
 			processCollectData(colData, cfg)
 			array = append(array, colData)
 		default:
+			logger.Debug("Slave配置【%s】 %v", sn, cfg)
+			colData, err = test.CollectTest(w, meterRef)
+			if err != nil {
+				//logger.Error("采集数据失败, [%s][%s]客户端采集数据错误: %s", sn, cfg.MType, err.Error())
+				continue
+			}
 		}
 
 	}

+ 46 - 0
SERVER/Meter_Service/service/downStreamService/proto/test/test.go

@@ -0,0 +1,46 @@
+package test
+
+import (
+	"MeterService/core/logger"
+	"MeterService/dataStruct"
+	"MeterService/service/rtuService"
+	"errors"
+	"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     int16
+	)
+	m = int16(uint16(adu[index])<<8 | uint16(adu[index+1]))
+	s.Ua = float32(m)
+	index += 16
+	s.Ia = float32(m)
+	logger.Debug("TEST 采集成功  DATA:%v %v", s.Ua, s.Ia)
+}
+
+//

+ 1 - 0
SERVER/Meter_Service/service/rtuService/rtuTcp.go

@@ -56,6 +56,7 @@ func (mb *rtuNetPackager) GetHoldingRegs(address, quantity uint16) (adu []byte,
 	if err != nil {
 		return
 	}
+	logger.Debug("=====SEND CMD===== %v", result)
 	res, bok := tcpserver.SendTo(mb.Sta.FD, result)
 	if !bok {
 		if utils.ConnTimeoutJudge(mb.Sta.Times) {