From 8324f872ef3a4d0c978a9b1d062800c6a1701c12 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期五, 01 十二月 2023 09:58:17 +0800
Subject: [PATCH] fix

---
 pkg/plc/modbusx/modbus.go |   71 ++++++-----------------------------
 1 files changed, 12 insertions(+), 59 deletions(-)

diff --git a/pkg/plc/modbusx/modbus.go b/pkg/plc/modbusx/modbus.go
index e1af28c..1a779c3 100644
--- a/pkg/plc/modbusx/modbus.go
+++ b/pkg/plc/modbusx/modbus.go
@@ -2,7 +2,6 @@
 
 import (
 	"encoding/binary"
-	"sync/atomic"
 )
 
 func Read(ipAddr string, address uint16, quantity uint16) (data []byte, err error) {
@@ -19,74 +18,28 @@
 }
 
 func Write(ipAddr string, address uint16, value int) (err error) {
+	address--
 	var bytesVal []byte
-	if value <= 1<<16 {
-		uint16ToBytes(uint16(value))
-	} else {
-		bytesVal = intToBytes(value)
-	}
+	bytesVal = intToBytes(value)
 	cli := getModbusConnection(ipAddr)
 	_, err = cli.WriteMultipleRegisters(address, uint16(len(bytesVal)), bytesVal)
 	dealErr(err, ipAddr)
 	return err
 }
 
-func uint16ToBytes(value uint16) []byte {
-	// 鍒涘缓涓�涓暱搴︿负2鐨勫瓧鑺傚垏鐗�
-	bytes := make([]byte, 2)
-
-	// 灏� uint16 鐨勫�煎啓鍏ュ瓧鑺傚垏鐗囷紝鍙互閫夋嫨浣跨敤澶х鎴栧皬绔瓧鑺傚簭
-	bytes[0] = byte(value >> 8) // 鑾峰彇楂�8浣�
-	bytes[1] = byte(value)      // 鑾峰彇浣�8浣�
-
-	return bytes
-}
-
-func intToBytes(value int) []byte {
-	// 鍒涘缓涓�涓暱搴︿负4鐨勫瓧鑺傚垏鐗囷紝鐢ㄤ簬瀛樺偍 int 鍊�
-	bytes := make([]byte, 4)
-
-	// 浣跨敤 binary 鍖呭皢 int 鍊艰浆鎹负瀛楄妭鍒囩墖
-	binary.BigEndian.PutUint32(bytes, uint32(value))
-
-	return bytes
+func intToBytes(value int) (data []byte) {
+	if value <= 1<<16 {
+		data = make([]byte, 2)
+		binary.BigEndian.PutUint16(data, uint16(value))
+	} else {
+		data = make([]byte, 4)
+		binary.BigEndian.PutUint32(data, uint32(value))
+	}
+	return
 }
 
 func dealErr(err error, ipAddr string) {
 	if err != nil {
-		unsetModbusConnection(ipAddr)       //澶辫触鍒欏垹闄ょ紦瀛樼殑杩炴帴
-		FailureRemainingOpportunitiesDecr() //鍑忓皯澶辫触鍓╀綑鏈轰細
-	} else {
-		FailureRemainingOpportunitiesReset() //閲嶇疆澶辫触鍓╀綑鏈轰細
+		unsetModbusConnection(ipAddr) //澶辫触鍒欏垹闄ょ紦瀛樼殑杩炴帴
 	}
-}
-
-var connectionStatus atomic.Bool
-
-var failureRemainingOpportunities atomic.Int64
-
-const (
-	defaultFailureRemainingOpportunities = 20
-)
-
-func IsConnect() bool {
-	return connectionStatus.Load()
-}
-
-func FailureRemainingOpportunitiesDecr() {
-	newValue := failureRemainingOpportunities.Add(-1)
-	if newValue <= 0 {
-		connectionStatus.Store(false)
-	}
-	return
-}
-
-func FailureRemainingOpportunitiesReset() {
-	if failureRemainingOpportunities.Load() < defaultFailureRemainingOpportunities {
-		failureRemainingOpportunities.Store(defaultFailureRemainingOpportunities)
-	}
-	if connectionStatus.Load() == false {
-		connectionStatus.Store(true)
-	}
-	return
 }

--
Gitblit v1.8.0