def StartSerialServer(context, identity=None, framer=ModbusAsciiFramer, **kwargs): ''' Helper method to start the Modbus Async Serial server :param context: The server data context :param identify: The server identity to use (default empty) :param framer: The framer to use (default ModbusAsciiFramer) :param port: The serial port to attach to :param baudrate: The baud rate to use for the serial device :param console: A flag indicating if you want the debug console :param ignore_missing_slaves: True to not send errors on a request to a missing slave ''' from twisted.internet import reactor from twisted.internet.serialport import SerialPort port = kwargs.get('port', '/dev/ttyS0') baudrate = kwargs.get('baudrate', Defaults.Baudrate) console = kwargs.get('console', False) _logger.info("Starting Modbus Serial Server on %s" % port) factory = ModbusServerFactory(context, framer, identity, **kwargs) if console: InstallManagementConsole({'factory': factory}) protocol = factory.buildProtocol(None) SerialPort.getHost = lambda self: port # hack for logging SerialPort(protocol, port, reactor, baudrate) reactor.run()
def StartTcpServer(context, identity=None, address=None, console=False, defer_reactor_run=False, **kwargs): """ Helper method to start the Modbus Async TCP server :param context: The server data context :param identify: The server identity to use (default empty) :param address: An optional (interface, port) to bind to. :param console: A flag indicating if you want the debug console :param ignore_missing_slaves: True to not send errors on a request to a missing slave :param defer_reactor_run: True/False defer running reactor.run() as part of starting server, to be explictly started by the user """ from twisted.internet import reactor address = address or ("", Defaults.Port) framer = kwargs.pop("framer", ModbusSocketFramer) factory = ModbusServerFactory(context, framer, identity, **kwargs) if console: InstallManagementConsole({'factory': factory}) _logger.info("Starting Modbus TCP Server on %s:%s" % address) reactor.listenTCP(address[1], factory, interface=address[0]) if not defer_reactor_run: reactor.run(installSignalHandlers=_is_main_thread())
def StartTcpServer(self, context, transport, identity=None, address=None, console=False, defer_reactor_run=False, custom_functions=[], **kwargs): """ Helper method to start the Modbus Async TCP server :param context: The server data context :param identify: The server identity to use (default empty) :param address: An optional (interface, port) to bind to. :param console: A flag indicating if you want the debug console :param ignore_missing_slaves: True to not send errors on a request \ to a missing slave :param defer_reactor_run: True/False defer running reactor.run() as part \ of starting server, to be explictly started by the user :param custom_functions: An optional list of custom function classes supported by server instance. """ address = address or ("", Defaults.Port) framer = kwargs.pop("framer", ModbusSocketCustomFramer) factory = ModbusServerFactory(context, framer, identity, **kwargs) for f in custom_functions: factory.decoder.register(f) if console: InstallManagementConsole({'factory': factory}) # log.event("Modbus, Starting Modbus TCP Server on %s:%s" % address) self._transport = reactor.listenTCP(address[1], factory, interface=address[0]) if not defer_reactor_run: reactor.run(installSignalHandlers=_is_main_thread())
def StartTcpServer(context, identity=None): ''' Helper method to start the Modbus Async TCP server :param context: The server data context :param identify: The server identity to use (default empty) ''' from twisted.internet import reactor _logger.info("Starting Modbus TCP Server on %s" % Defaults.Port) framer = ModbusSocketFramer factory = ModbusServerFactory(context, framer, identity) InstallManagementConsole({'factory': factory}) reactor.listenTCP(Defaults.Port, factory) reactor.run()
def makeService(self, options): """ Construct a service from the given options """ if options["type"] == "tcp": server = internet.TCPServer else: server = internet.UDPServer framer = ModbusSocketFramer context = self._build_context(options['store']) factory = ModbusServerFactory(None, framer) if options['console']: InstallManagementConsole({ 'server' : factory }) return server(int(options["port"]), factory)
def StartTcpServer(context, identity=None, address=None, console=False): ''' Helper method to start the Modbus Async TCP server :param context: The server data context :param identify: The server identity to use (default empty) :param address: An optional (interface, port) to bind to. :param console: A flag indicating if you want the debug console ''' from twisted.internet import reactor address = address or ("", Defaults.Port) framer = ModbusSocketFramer factory = ModbusServerFactory(context, framer, identity) if console: InstallManagementConsole({'factory': factory}) _logger.info("Starting Modbus TCP Server on %s:%s" % address) reactor.listenTCP(address[1], factory, interface=address[0]) reactor.run()