diff --git a/README.md b/README.md index e952636..2743328 100644 --- a/README.md +++ b/README.md @@ -70,9 +70,14 @@ err := handler.Connect() defer handler.Close() client := modbus.NewClient(handler) +client.ChangeSlaveId(0x02) //you can change slaveId before use results, err := client.ReadDiscreteInputs(15, 2) ``` References ---------- - [Modbus Specifications and Implementation Guides](http://www.modbus.org/specs.php) + + +Update log: +2017-07-12:add ChangeSlaveId api \ No newline at end of file diff --git a/api.go b/api.go index fe06ab0..2a4c3f4 100644 --- a/api.go +++ b/api.go @@ -5,6 +5,7 @@ package modbus type Client interface { + ChangeSlaveId(newSlaveId byte) //add 2017-7-11 // Bit access // ReadCoils reads from 1 to 2000 contiguous status of coils in a diff --git a/asciiclient.go b/asciiclient.go index 98d9c60..c3b11d0 100644 --- a/asciiclient.go +++ b/asciiclient.go @@ -46,6 +46,10 @@ type asciiPackager struct { SlaveId byte } +func (mb *asciiPackager) ChangeSlaveId(newSlaveId byte) { + mb.SlaveId = newSlaveId +} + // Encode encodes PDU in a ASCII frame: // Start : 1 char // Address : 2 chars diff --git a/client.go b/client.go index ac3ee2e..b9cec0a 100644 --- a/client.go +++ b/client.go @@ -20,6 +20,11 @@ type client struct { transporter Transporter } +//add 2017-7-11 +func (mb *client) ChangeSlaveId(newSlaveId byte) { + mb.packager.ChangeSlaveId(newSlaveId) +} + // NewClient creates a new modbus client with given backend handler. func NewClient(handler ClientHandler) Client { return &client{packager: handler, transporter: handler} diff --git a/modbus.go b/modbus.go index 869473c..0ddc985 100644 --- a/modbus.go +++ b/modbus.go @@ -85,6 +85,7 @@ type Packager interface { Encode(pdu *ProtocolDataUnit) (adu []byte, err error) Decode(adu []byte) (pdu *ProtocolDataUnit, err error) Verify(aduRequest []byte, aduResponse []byte) (err error) + ChangeSlaveId(newSlaveId byte)//add 2017-7-11 } // Transporter specifies the transport layer. diff --git a/rtuclient.go b/rtuclient.go index ce55bd8..62ec970 100644 --- a/rtuclient.go +++ b/rtuclient.go @@ -42,6 +42,10 @@ type rtuPackager struct { SlaveId byte } +//add 2017-7-11 +func (mb *rtuPackager) ChangeSlaveId(newSlaveId byte) { + mb.SlaveId = newSlaveId +} // Encode encodes PDU in a RTU frame: // Slave Address : 1 byte // Function : 1 byte diff --git a/tcpclient.go b/tcpclient.go index 4e53c73..8104bc6 100644 --- a/tcpclient.go +++ b/tcpclient.go @@ -55,6 +55,11 @@ type tcpPackager struct { SlaveId byte } +//add 2017-7-11 +func (mb *tcpPackager) ChangeSlaveId(newSlaveId byte) { + mb.SlaveId = newSlaveId +} + // Encode adds modbus application protocol header: // Transaction identifier: 2 bytes // Protocol identifier: 2 bytes