zhangqian
2023-10-27 d91a802e7aa2ad4075ed803b8ddc7536a91a0ef0
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) {
@@ -41,39 +40,6 @@
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
}