88
99import asyncio
1010import logging
11+ import sys
1112
1213from pymodbus import FramerType , pymodbus_apply_logging_config
1314from pymodbus .datastore import (
1920from pymodbus .server import ModbusTcpServer
2021
2122
23+ try :
24+ import helper # type: ignore[import-not-found]
25+ except ImportError :
26+ print ("*** ERROR --> THIS EXAMPLE needs the example directory, please see \n \
27+ https://pymodbus.readthedocs.io/en/latest/source/examples.html\n \
28+ for more information." )
29+ sys .exit (- 1 )
30+
31+
2232class Manipulator :
2333 """A Class to run the server."""
2434
@@ -43,8 +53,9 @@ def trace_connect(self, connect: bool) -> None:
4353 txt = "Connected" if connect else "Disconnected"
4454 print (f"---> { txt } " )
4555
46- async def setup (self ):
56+ async def setup (self , cmdline ):
4757 """Prepare server."""
58+ args = helper .get_commandline (server = True , description = "server hooks" , cmdline = cmdline )
4859 pymodbus_apply_logging_config (logging .DEBUG )
4960 datablock = ModbusSequentialDataBlock (0x00 , [17 ] * 100 )
5061 context = ModbusServerContext (
@@ -53,11 +64,12 @@ async def setup(self):
5364 ),
5465 single = True ,
5566 )
67+ address : tuple [str , int ] = (args .host if args .host else "" , args .port if args .port else 0 )
5668 self .server = ModbusTcpServer (
5769 context ,
5870 framer = FramerType .SOCKET ,
5971 identity = None ,
60- address = ( "127.0.0.1" , 5020 ) ,
72+ address = address ,
6173 trace_packet = self .trace_packet ,
6274 trace_pdu = self .trace_pdu ,
6375 trace_connect = self .trace_connect ,
@@ -68,10 +80,10 @@ async def run(self):
6880 await self .server .serve_forever ()
6981
7082
71- async def main ():
83+ async def main (cmdline = None ):
7284 """Run example."""
7385 server = Manipulator ()
74- await server .setup ()
86+ await server .setup (cmdline = cmdline )
7587 await server .run ()
7688
7789
0 commit comments