|
20 | 20 | The corresponding server must be started before e.g. as: |
21 | 21 | python3 server_sync.py |
22 | 22 | """ |
23 | | -import argparse |
24 | 23 | import os |
25 | 24 | import asyncio |
26 | 25 | import logging |
27 | 26 |
|
28 | 27 | # --------------------------------------------------------------------------- # |
29 | 28 | # import the various client implementations |
30 | 29 | # --------------------------------------------------------------------------- # |
| 30 | +from examples.helper import get_commandline |
31 | 31 | from pymodbus.client import ( |
32 | 32 | AsyncModbusSerialClient, |
33 | 33 | AsyncModbusTcpClient, |
34 | 34 | AsyncModbusTlsClient, |
35 | 35 | AsyncModbusUdpClient, |
36 | 36 | ) |
37 | | -from pymodbus.transaction import ( |
38 | | - ModbusAsciiFramer, |
39 | | - ModbusBinaryFramer, |
40 | | - ModbusRtuFramer, |
41 | | - ModbusSocketFramer, |
42 | | - ModbusTlsFramer, |
43 | | -) |
44 | 37 |
|
45 | 38 |
|
46 | | -def setup_async_client(args=None): |
| 39 | +_logger = logging.getLogger() |
| 40 | + |
| 41 | + |
| 42 | +def setup_async_client(args): |
47 | 43 | """Run client setup.""" |
48 | | - if not args: |
49 | | - args = get_commandline() |
50 | | - if args.comm != "serial" and args.port: |
51 | | - args.port = int(args.port) |
52 | 44 | _logger.info("### Create client object") |
53 | 45 | if args.comm == "tcp": |
54 | 46 | client = AsyncModbusTcpClient( |
@@ -134,69 +126,10 @@ async def run_async_client(client, modbus_calls=None): |
134 | 126 | _logger.info("### End of Program") |
135 | 127 |
|
136 | 128 |
|
137 | | -# --------------------------------------------------------------------------- # |
138 | | -# Extra code, to allow commandline parameters instead of changing the code |
139 | | -# --------------------------------------------------------------------------- # |
140 | | -FORMAT = "%(asctime)-15s %(levelname)-8s %(module)-15s:%(lineno)-8s %(message)s" |
141 | | -logging.basicConfig(format=FORMAT) |
142 | | -_logger = logging.getLogger() |
143 | | - |
144 | | - |
145 | | -def get_commandline(): |
146 | | - """Read and validate command line arguments""" |
147 | | - parser = argparse.ArgumentParser( |
148 | | - description="Connect/disconnect a synchronous client." |
149 | | - ) |
150 | | - parser.add_argument( |
151 | | - "--comm", |
152 | | - choices=["tcp", "udp", "serial", "tls"], |
153 | | - help='"serial", "tcp", "udp" or "tls"', |
154 | | - type=str, |
155 | | - ) |
156 | | - parser.add_argument( |
157 | | - "--framer", |
158 | | - choices=["ascii", "binary", "rtu", "socket", "tls"], |
159 | | - help='"ascii", "binary", "rtu", "socket" or "tls"', |
160 | | - type=str, |
161 | | - ) |
162 | | - parser.add_argument( |
163 | | - "--log", |
164 | | - choices=["critical", "error", "warning", "info", "debug"], |
165 | | - help='"critical", "error", "warning", "info" or "debug"', |
166 | | - type=str, |
167 | | - ) |
168 | | - parser.add_argument( |
169 | | - "--port", |
170 | | - help="the port to use", |
171 | | - type=str, |
172 | | - ) |
173 | | - args = parser.parse_args() |
174 | | - |
175 | | - # set defaults |
176 | | - comm_defaults = { |
177 | | - "tcp": ["socket", 5020], |
178 | | - "udp": ["socket", 5020], |
179 | | - "serial": ["rtu", "/dev/ptyp0"], |
180 | | - "tls": ["tls", 5020], |
181 | | - } |
182 | | - framers = { |
183 | | - "ascii": ModbusAsciiFramer, |
184 | | - "binary": ModbusBinaryFramer, |
185 | | - "rtu": ModbusRtuFramer, |
186 | | - "socket": ModbusSocketFramer, |
187 | | - "tls": ModbusTlsFramer, |
188 | | - } |
189 | | - _logger.setLevel(args.log.upper() if args.log else logging.INFO) |
190 | | - if not args.comm: |
191 | | - args.comm = "tcp" |
192 | | - if not args.framer: |
193 | | - args.framer = comm_defaults[args.comm][0] |
194 | | - args.port = args.port or comm_defaults[args.comm][1] |
195 | | - args.framer = framers[args.framer] |
196 | | - return args |
197 | | - |
198 | | - |
199 | 129 | if __name__ == "__main__": |
200 | | - # Connect/disconnect no calls. |
201 | | - testclient = setup_async_client() |
| 130 | + cmd_args = get_commandline( |
| 131 | + server=False, |
| 132 | + description="Run asynchronous client.", |
| 133 | + ) |
| 134 | + testclient = setup_async_client(cmd_args) |
202 | 135 | asyncio.run(run_async_client(testclient), debug=True) |
0 commit comments