1
0
mirror of https://github.com/JoelBender/bacpypes synced 2025-09-28 22:15:23 +08:00
bacpypes/sandbox/test_io_server.py

77 lines
1.4 KiB
Python

#!/usr/bin/python
"""
Test IO Server
"""
import random
from bacpypes.debugging import bacpypes_debugging, ModuleLogger
from bacpypes.consolelogging import ArgumentParser
from bacpypes.core import run
from io import IOController, IOServer
# some debugging
_debug = 0
_log = ModuleLogger(globals())
# defaults
CONTROLLER = "test"
#
# TestController
#
@bacpypes_debugging
class TestController(IOController):
def __init__(self, name):
if _debug: TestController._debug('__init__')
IOController.__init__(self, name)
def process_io(self, iocb):
if _debug: TestController._debug('process_io %r', iocb)
# some random data
rslt = random.random() * iocb.args[0]
# send back the result
self.complete_io(iocb, rslt)
#
# __main__
#
try:
# create a parser
parser = ArgumentParser(description=__doc__)
# add an option to pick a controller
parser.add_argument('--controller',
help="controller name",
default=CONTROLLER,
)
# parse the command line arguments
args = parser.parse_args()
if _debug: _log.debug("initialization")
if _debug: _log.debug(" - args: %r", args)
# this is an IO server
IOServer()
# create a test controller
TestController(args.controller)
_log.debug("running")
run()
except Exception, e:
_log.exception("an error has occurred: %s", e)
finally:
_log.debug("finally")