Skip to content

Commit ec41da5

Browse files
author
ylliu
committed
RTU/TCP modbus share same client.
1 parent 72d4612 commit ec41da5

File tree

5 files changed

+33
-3
lines changed

5 files changed

+33
-3
lines changed

api.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,5 @@ type Client interface {
4747
// of register in a remote device and returns FIFO value register.
4848
ReadFIFOQueue(address uint16) (results []byte, err error)
4949
Close() error
50-
SetSlaveId(slaveid byte)
51-
50+
SetSlaveID(slaveid byte)
5251
}

asciiclient.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ type asciiPackager struct {
4646
SlaveId byte
4747
}
4848

49+
func (mb *asciiPackager) SetSlaveId(slaveid byte) {
50+
mb.SlaveId = slaveid
51+
}
52+
4953
// Encode encodes PDU in a ASCII frame:
5054
// Start : 1 char
5155
// Address : 2 chars
@@ -216,6 +220,14 @@ func writeHex(buf *bytes.Buffer, value []byte) (err error) {
216220
return
217221
}
218222

223+
// Close closes current connection.
224+
func (mb *asciiSerialTransporter) Close() error {
225+
mb.mu.Lock()
226+
defer mb.mu.Unlock()
227+
228+
return mb.close()
229+
}
230+
219231
// readHex decodes hexa string to byte, e.g. "8C" => 0x8C.
220232
func readHex(data []byte) (value byte, err error) {
221233
var dst [1]byte

client.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,16 @@ func (mb *client) ReadFIFOQueue(address uint16) (results []byte, err error) {
432432
return
433433
}
434434

435+
//SetSlaveId ---
436+
func (mb *client) SetSlaveID(slaveid byte) {
437+
mb.packager.SetSlaveId(slaveid)
438+
}
439+
440+
// Close closes current connection.
441+
func (mb *client) Close() error {
442+
return mb.transporter.Close()
443+
}
444+
435445
// Helpers
436446

437447
// send sends request and checks possible exception in the response.

modbus.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ type Packager interface {
8585
Encode(pdu *ProtocolDataUnit) (adu []byte, err error)
8686
Decode(adu []byte) (pdu *ProtocolDataUnit, err error)
8787
Verify(aduRequest []byte, aduResponse []byte) (err error)
88+
SetSlaveId(slaveid byte)
8889
}
8990

9091
// Transporter specifies the transport layer.

rtuclient.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ type rtuPackager struct {
4444
SlaveId byte
4545
}
4646

47-
func (mb *rtuPackager) SetSlaveId(slaveid byte){
47+
func (mb *rtuPackager) SetSlaveId(slaveid byte) {
4848
mb.SlaveId = slaveid
4949
}
5050

@@ -169,6 +169,14 @@ func (mb *rtuSerialTransporter) Send(aduRequest []byte) (aduResponse []byte, err
169169
return
170170
}
171171

172+
// Close closes current connection.
173+
func (mb *rtuSerialTransporter) Close() error {
174+
mb.mu.Lock()
175+
defer mb.mu.Unlock()
176+
177+
return mb.close()
178+
}
179+
172180
// calculateDelay roughly calculates time needed for the next frame.
173181
// See MODBUS over Serial Line - Specification and Implementation Guide (page 13).
174182
func (mb *rtuSerialTransporter) calculateDelay(chars int) time.Duration {

0 commit comments

Comments
 (0)