From 176201866273bf7f8cf9b1f5c2b172a53a6b258a Mon Sep 17 00:00:00 2001 From: FM-FE Date: Fri, 27 Jun 2025 10:14:04 +0800 Subject: [PATCH] feat: add support for slave start TCP connect as client --- README.md | 12 ++++++++++++ tcpclient.go | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/README.md b/README.md index e952636..a555070 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,18 @@ handler.Logger = log.New(os.Stdout, "test: ", log.LstdFlags) err := handler.Connect() defer handler.Close() +client := modbus.NewClient(handler) +results, err := client.ReadDiscreteInputs(15, 2) +results, err = client.WriteMultipleRegisters(1, 2, []byte{0, 3, 0, 4}) +results, err = client.WriteMultipleCoils(5, 10, []byte{4, 3}) + +// Modbus TCP slave start TCP connect as client +listener, err := net.Listen("tcp", "MasterIP:Port") +conn, err := listener.Accept() +handler := modbus.NewTCPClientHandler("") +handler.UseConnect(conn) // listen conn from slave +defer handler.Close() + client := modbus.NewClient(handler) results, err := client.ReadDiscreteInputs(15, 2) results, err = client.WriteMultipleRegisters(1, 2, []byte{0, 3, 0, 4}) diff --git a/tcpclient.go b/tcpclient.go index 4e53c73..447d375 100644 --- a/tcpclient.go +++ b/tcpclient.go @@ -217,6 +217,13 @@ func (mb *tcpTransporter) connect() error { return nil } +func (mb *tcpTransporter) UseConnect(conn net.Conn) error { + if mb.conn == nil { + mb.conn = conn + } + return nil +} + func (mb *tcpTransporter) startCloseTimer() { if mb.IdleTimeout <= 0 { return