Source code for leicadnaunit

#!/usr/bin/env python
"""
.. module:: leicadnaunit.py
   :platform: Unix, Windows
   :synopsis: Ulyxes - an open source project to drive total stations and
       publish observation results.  GPL v2.0 license Copyright (C)
       2010- Zoltan Siki <siki.zoltan@epito.bme.hu>.

.. moduleauthor:: Zoltan Siki <siki.zoltan@epito.bme.hu>,
    Daniel Moka <mokbme@gmail.com>
"""

import re
from measureunit import MeasureUnit

[docs]class LeicaDnaUnit(MeasureUnit): """ Leica DNA measure unit :param name: name of measure unit (str), default 'Leica level' :param typ: type of measure unit (str), default 'Level' """ MEASURE = "GET/M/WI32/WI330" TEMPERATURE = "GET/M/WI95" SETAUTOOFF = "SET/95/" GETAUTOOFF = "CONF/95" unitDiv = [1000.0, 1000.0 / 0.3048, None, None, None, None, 10000.0, 10000.0 / 0.3048, 100000.0] def __init__(self, name='Leica level', typ='Level'): """ Construnctor for leica dna unit """ # call super class init super().__init__(name, typ)
[docs] @staticmethod def GetCapabilities(): """ Get instrument specialities :returns: List of specialities """ return ['LEVEL', 'DISTANCE', 'TEMPERATURE']
[docs] def Result(self, msg, ans): """ process result of a measurement :param msg: message sent :param ans: answer to message :returns: observation results (dictionary) """ m = re.search("^@[EW]([0-9]+)$", ans) res = {} if m is not None: res["error"] = int(m.group(1)) return res # error ansBuflist = re.split(' ', ans.strip('*')) if msg == self.MEASURE: for item in ansBuflist: if re.search("^32\.", item): # distance res["distance"] = float(item[7:]) / self.unitDiv[int(item[5])] elif re.search("^330", item): # staff reading res["staff"] = float(item[7:]) / self.unitDiv[int(item[5])] elif msg == self.TEMPERATURE: for item in ansBuflist: if re.search("^95", item): # temperature res["temperature"] = float(item[7:]) / self.unitDiv[int(item[5])] elif msg == self.SETAUTOOFF: if len(ans): res["error"] = ans elif msg == self.GETAUTOOFF: if len(ans): res["error"] = ans return res
[docs] def MeasureMsg(self): """ Start measure message :returns: measure message """ return self.MEASURE
[docs] def TemperatureMsg(self): """ Get temperature message :returns: temperature message """ return self.TEMPERATURE
[docs] def SetAutoOffMsg(self, par): """ Set auto off message :param par: 0/1/2 Off/On/Sleep mode :return: auto off message """ return f"{self.SETAUTOOFF}{par}"
[docs] def GetAutoOffMsg(self): """ Get auto off message :returns: get auto off message """ return self.GETAUTOOFF