introduced StringIO

introduce line oriented communication
+ HasIodev Mixin
+ minor fixes
Change-Id: I22605824d2f45147224840172bae281f85c80a11
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/21953
Tested-by: JenkinsCodeReview <bjoern_pedersen@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
This commit is contained in:
2019-12-03 15:50:45 +01:00
parent f5af074015
commit bc089d2ae0
5 changed files with 283 additions and 5 deletions

View File

@ -28,7 +28,7 @@ from collections import OrderedDict
from secop.datatypes import EnumType, FloatRange, BoolType, IntRange, \
StringType, TupleOf, get_datatype, ArrayOf, TextType
from secop.errors import ConfigError, ProgrammingError, SECoPError, BadValueError
from secop.errors import ConfigError, ProgrammingError, SECoPError, BadValueError, SilentError
from secop.lib import formatException, formatExtendedStack, mkthread
from secop.lib.enum import Enum
from secop.metaclass import ModuleMeta
@ -282,6 +282,8 @@ class Module(HasProperties, metaclass=ModuleMeta):
"""poll parameter <pname> with proper error handling"""
try:
return getattr(self, 'read_'+ pname)()
except SilentError as e:
pass
except SECoPError as e:
self.log.error(str(e))
except Exception as e:
@ -298,16 +300,18 @@ class Module(HasProperties, metaclass=ModuleMeta):
pnames = pobj.handler.parameters
valuedict = {n: self.writeDict.pop(n) for n in pnames if n in self.writeDict}
if valuedict:
self.log.info('write parameters %r', valuedict)
self.log.debug('write parameters %r', valuedict)
pobj.handler.write(self, valuedict, force_read=True)
return
pobj.handler.read(self)
else:
if pname in self.writeDict:
self.log.info('write parameter %s', pname)
self.log.debug('write parameter %s', pname)
getattr(self, 'write_'+ pname)(self.writeDict.pop(pname))
else:
getattr(self, 'read_'+ pname)()
except SilentError as e:
pass
except SECoPError as e:
self.log.error(str(e))
except Exception as e: