From d91a802e7aa2ad4075ed803b8ddc7536a91a0ef0 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期五, 27 十月 2023 20:33:06 +0800
Subject: [PATCH] update

---
 pkg/plc/apacheplc4x/modbus.go |   28 ++++++++++++++++------------
 1 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/pkg/plc/apacheplc4x/modbus.go b/pkg/plc/apacheplc4x/modbus.go
index dd3621f..e828403 100644
--- a/pkg/plc/apacheplc4x/modbus.go
+++ b/pkg/plc/apacheplc4x/modbus.go
@@ -15,31 +15,35 @@
 	"time"
 )
 
+var driverManager plc4go.PlcDriverManager
+
+func init() {
+	// 鍒涘缓椹卞姩绠$悊鍣�
+	driverManager = plc4go.NewPlcDriverManager()
+	// 娉ㄥ唽TCP浼犺緭
+	transports.RegisterTcpTransport(driverManager)
+	// 娉ㄥ唽涓插彛浼犺緭
+	transports.RegisterSerialTransport(driverManager)
+	// 娉ㄥ唽椹卞姩
+	drivers.RegisterModbusTcpDriver(driverManager)
+	drivers.RegisterModbusRtuDriver(driverManager)
+}
+
 func GetModbusConnection(ipAddr string) (plc4go.PlcConnection, error) {
 	// 鍒涘缓涓�涓笂涓嬫枃锛屽苟璁剧疆 3 绉掕秴鏃�
 	ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
 	defer cancel()
-	conn, err := newModbusConnection(ctx, ipAddr)
+	conn, err := newModbusTCPConnection(ctx, ipAddr)
 	if err != nil {
 		logx.Errorf("new modbus connection err: %v", err.Error())
 		return nil, err
 	}
 	return conn, nil
 }
-
-func newModbusConnection(ctx context.Context, ipAddr string) (plc4go.PlcConnection, error) {
-	// 鍒涘缓椹卞姩绠$悊鍣�
-	driverManager := plc4go.NewPlcDriverManager()
-	// 娉ㄥ唽TCP浼犺緭
-	transports.RegisterTcpTransport(driverManager)
-	// 娉ㄥ唽椹卞姩
-	//drivers.RegisterKnxDriver(driverManager)
-	drivers.RegisterModbusTcpDriver(driverManager)
-
+func newModbusTCPConnection(ctx context.Context, ipAddr string) (plc4go.PlcConnection, error) {
 	// 閫氳繃TCP杩炴帴PLC璁惧
 	connectionString := fmt.Sprintf("modbus-tcp://%s", ipAddr)
 	connectionRequestChanel := driverManager.GetConnection(connectionString)
-
 	// 绛夊緟杩炴帴鍝嶅簲锛屽悓鏃惰�冭檻涓婁笅鏂囩殑瓒呮椂
 	select {
 	case connectionResult := <-connectionRequestChanel:

--
Gitblit v1.8.0