Skip to content

Commit 5d91882

Browse files
authored
Add forwarder example with multiple slaves. (#992)
1 parent b396c39 commit 5d91882

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

examples/modbus_forwarder.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
def run_forwarder():
2323
"""Run forwarder setup."""
24-
port_server, port_client = get_commandline()
24+
port_server, port_client, slaves = get_commandline()
2525

2626
client = ModbusTcpClient(
2727
host="localhost",
@@ -32,7 +32,12 @@ def run_forwarder():
3232
# in RemoteSlaveContext
3333
# For e.g to forward the requests to slave with unit address 1 use
3434
# store = RemoteSlaveContext(client, unit=1)
35-
store = RemoteSlaveContext(client)
35+
if slaves:
36+
store = {}
37+
for i in slaves:
38+
store[i.to_bytes(1, "big")] = RemoteSlaveContext(client, unit=i)
39+
else:
40+
store = RemoteSlaveContext(client)
3641
context = ModbusServerContext(slaves=store, single=True)
3742

3843
# start forwarding client and server
@@ -68,6 +73,12 @@ def get_commandline():
6873
help="the port to use",
6974
type=int,
7075
)
76+
parser.add_argument(
77+
"--slaves",
78+
help="list of slaves to forward",
79+
type=int,
80+
nargs="+",
81+
)
7182
args = parser.parse_args()
7283

7384
# set defaults
@@ -77,7 +88,7 @@ def get_commandline():
7788
if not args.port_client:
7889
args.port_client = 5010
7990

80-
return args.port, args.port_client
91+
return args.port, args.port_client, args.slaves
8192

8293

8394
if __name__ == "__main__":

0 commit comments

Comments
 (0)