From 8f692efa28cb68b9644d473aedc5caeee2496a61 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 26 十月 2023 17:11:17 +0800
Subject: [PATCH] 接收云端下发的modbusRTU配置

---
 constvar/const.go      |    9 +++++++++
 nsq/msg_handler.go     |   18 ++++++++++++++----
 model/common/common.go |    7 +++++--
 model/device_plc.go    |    9 +++++++--
 4 files changed, 35 insertions(+), 8 deletions(-)

diff --git a/constvar/const.go b/constvar/const.go
index 5f6fa74..6cb9a3e 100644
--- a/constvar/const.go
+++ b/constvar/const.go
@@ -34,6 +34,7 @@
 
 const (
 	PlcMethodModbusTCP        PlcMethod = "modbusTCP"
+	PlcMethodModbusRTU        PlcMethod = "modbusRTU"
 	PlcMethodSerial           PlcMethod = "serial"
 	PlcMethodModbusTCPChinese PlcMethod = "缃戠粶"
 	PlcMethodSerialChinese    PlcMethod = "涓插彛"
@@ -70,3 +71,11 @@
 	TaskModeCurrent      TaskMode = 2 //鏈紑濮嬬殑鍜岃繘琛屼腑鐨�
 	TaskModeLastFinished TaskMode = 3 //涓婁竴涓粨鏉熺殑
 )
+
+type Parity int
+
+const (
+	ParityEven Parity = 1 //濂囨牎楠�
+	ParityOdd  Parity = 2 //鍋舵牎楠�
+	ParityNull Parity = 3 //鏃犳牎楠�
+)
diff --git a/model/common/common.go b/model/common/common.go
index f92ae17..3a8781f 100644
--- a/model/common/common.go
+++ b/model/common/common.go
@@ -78,8 +78,11 @@
 		Method     constvar.PlcMethod `gorm:"type:varchar(191)" json:"method"`  //comment:鎺ュ彛鏂瑰紡
 		Address    string             `gorm:"type:varchar(191)" json:"address"` //plc ip鍦板潃锛� method = modbusTCP鐢�
 		Port       int                `gorm:"type:int(11)" json:"port"`         //plc 绔彛鍙凤紝  method =  modbusTCP鐢�
-		BaudRate   int                `gorm:"type:int(11)"  json:"baudRate"`    //涓插彛娉㈢壒鐜囷紝 method = serial鏃� 鐢�
-		SerialName string             `gorm:"type:int(11)"  json:"serialName"`  //涓插彛鍚嶇О锛宮ethod = serial鏃� 鐢�
+		BaudRate   int                `gorm:"type:int(11)"  json:"baudRate"`    //涓插彛娉㈢壒鐜囷紝 method = serial鎴杕odbusRTU 鏃剁敤
+		SerialName string             `gorm:"type:int(11)"  json:"serialName"`  //涓插彛鍚嶇О锛宮ethod = serial鎴杕odbusRTU 鏃剁敤
+		DataBit    int                `gorm:"type:int(11)"  json:"dataBit"`     //鏁版嵁浣嶏紝method = modbusRTU 鐢�
+		StopBit    int                `gorm:"type:int(11)"  json:"stopBit"`     //鍋滄浣嶏紝method = modbusRTU 鐢�
+		Parity     constvar.Parity    `gorm:"type:int(11)"  json:"parity"`      //鏍¢獙鏂瑰紡锛宮ethod = modbusRTU 鐢�
 		IsOpen     bool               `gorm:"type:tinyint(1)" json:"isOpen"`
 		Detail     string             `gorm:"type:varchar(2048)" json:"-"`
 		Details    []*PlcAddress      `gorm:"-" json:"details"`
diff --git a/model/device_plc.go b/model/device_plc.go
index 134e48b..a098e81 100644
--- a/model/device_plc.go
+++ b/model/device_plc.go
@@ -20,8 +20,13 @@
 		Port       int                `json:"port"`                             //plc 绔彛鍙凤紝  method =  modbusTCP鐢�
 		BaudRate   int                `json:"baudRate"`                         //涓插彛娉㈢壒鐜囷紝 method = serial鏃� 鐢�
 		SerialName string             `json:"serialName"`                       //涓插彛鍚嶇О锛宮ethod = serial鏃� 鐢�
-		IsOpen     bool               `json:"isOpen"`
-		Detail     string             `gorm:"type:varchar(2048)" json:"-"`
+
+		DataBit int             `gorm:"type:int(11)"  json:"dataBit"` //鏁版嵁浣嶏紝method = modbusRTU 鐢�
+		StopBit int             `gorm:"type:int(11)"  json:"stopBit"` //鍋滄浣嶏紝method = modbusRTU 鐢�
+		Parity  constvar.Parity `gorm:"type:int(11)"  json:"parity"`  //鏍¢獙鏂瑰紡锛宮ethod = modbusRTU 鐢�
+
+		IsOpen bool   `json:"isOpen"`
+		Detail string `gorm:"type:varchar(2048)" json:"-"`
 
 		Details []*DevicePlcAddress `gorm:"-" json:"details"`
 
diff --git a/nsq/msg_handler.go b/nsq/msg_handler.go
index 0b3d0d5..3933b1f 100644
--- a/nsq/msg_handler.go
+++ b/nsq/msg_handler.go
@@ -301,15 +301,25 @@
 	oldPlcRecord, err := model.NewDevicePlcSearch().SetDeviceId(msg.ID).First()
 	if err == gorm.ErrRecordNotFound {
 		err = model.NewDevicePlcSearch().Create(&record)
-	} else if record.Port != oldPlcRecord.Port ||
-		record.Method != oldPlcRecord.Method ||
+	} else if record.Port != oldPlcRecord.Port || record.Method != oldPlcRecord.Method ||
 		record.Address != oldPlcRecord.Address ||
-		record.Detail != oldPlcRecord.Detail {
+		record.Detail != oldPlcRecord.Detail ||
+		record.BaudRate != oldPlcRecord.BaudRate ||
+		record.SerialName != oldPlcRecord.SerialName ||
+		record.DataBit != oldPlcRecord.DataBit ||
+		record.StopBit != oldPlcRecord.StopBit ||
+		record.Parity != oldPlcRecord.Parity {
 
-		oldPlcRecord.Port = record.Port
 		oldPlcRecord.Method = record.Method
 		oldPlcRecord.Address = record.Address
+		oldPlcRecord.Port = record.Port
 		oldPlcRecord.Detail = record.Detail
+		oldPlcRecord.BaudRate = record.BaudRate
+		oldPlcRecord.SerialName = record.SerialName
+		oldPlcRecord.DataBit = record.DataBit
+		oldPlcRecord.StopBit = record.StopBit
+		oldPlcRecord.Parity = record.Parity
+
 		err = model.NewDevicePlcSearch().Save(oldPlcRecord)
 	}
 	if err != nil {

--
Gitblit v1.8.0