diff --git a/src/AbstractModbusDatapoint.py b/src/AbstractModbusDatapoint.py deleted file mode 100644 index 9b23ed0..0000000 --- a/src/AbstractModbusDatapoint.py +++ /dev/null @@ -1,26 +0,0 @@ - -class AbstractModbusDatapoint(object): - def __init__(self, label, unit, address, count, scanRate): - self.label = label - self.unit = unit - self.address = address - self.count = count - self.scanRate = scanRate - self.type = 'abstract data point' - self.command = None - self.value = None - self.enqueued = False - if self.scanRate: - self.priority = 1 - else: - self.priority = 0 - - def __str__(self): - return "{0}, {1}: {2} {3} {4} {5} {6}".format(self.type, self.label, self.unit, self.address, self.count, self.command, self.value) - - def setCommand(self, cmd): - self.command = cmd - - def setValue(self, value): - self.value = value - diff --git a/src/CmdServer.py b/src/CmdServer.py index 03a5327..5b3b647 100644 --- a/src/CmdServer.py +++ b/src/CmdServer.py @@ -3,7 +3,10 @@ import socketserver import cmd import re import io - +import datetime +import pickle +import sys +import RegisterDatapoint class CmdInterpreterException(ValueError): pass @@ -18,9 +21,10 @@ def parseIntArbitraryBase(s): return i class CmdInterpreter(cmd.Cmd): - def __init__(self, infile, outfile, notifier, registers): + def __init__(self, infile, outfile, config, notifier, registers): super().__init__(stdin=infile, stdout=outfile) self.use_rawinput = False + self.config = config self.notifier = notifier self.registers = registers self.prompt = "test8> " @@ -45,10 +49,9 @@ class CmdInterpreter(cmd.Cmd): self.__println("Bye!") return True - def do_add(self, arg): + def do_add_hr(self, arg): try: - (registerType, label, unit, address, count, scanrate, readTopic, writeTopic, feedbackTopic) = self.splitterRe.split(arg) - self.__println("RegisterType: {0}".format(registerType)) + (label, unit, address, count, scanrate, readTopic, writeTopic, feedbackTopic) = self.splitterRe.split(arg) self.__println("Label: {0}".format(label)) self.__println("Unit: {0}".format(unit)) self.__println("Address: {0}".format(address)) @@ -82,20 +85,18 @@ class CmdInterpreter(cmd.Cmd): raise CmdInterpreterException('writeTopic must not be set when scanRate is zero') if feedbackTopic: raise CmdInterpreterException('feedbackTopic must not be set when scanRate is zero') - allowedRegisterTypes = ['HoldingRegister'] - if registerType not in allowedRegisterTypes: - raise CmdInterpreterException('Unknown register type {0}, allowed are {1!s}'.format(registerType, allowedRegisterTypes)) - - + r = RegisterDatapoint.HoldingRegisterDatapoint(label, unit, address, count, datetime.timedelta(seconds=scanrate), readTopic, writeTopic, feedbackTopic) + self.registers.append(r) except ValueError as e: self.__println("ERROR: {0!s}, {1!s}".format(e.__class__.__name__, e)) - def help_add(self): + def help_add_hr(self): # HoldingRegisterDatapoint('Voltage', 1, 0x2000, 2, datetime.timedelta(seconds=10), 'Pub/Voltage', None, None), - self.__println("Usage: add