diff --git a/Connector/modules/modbus.py b/Connector/modules/modbus.py index fccc747..c646da0 100644 --- a/Connector/modules/modbus.py +++ b/Connector/modules/modbus.py @@ -4,6 +4,8 @@ Created on 05.12.2013 @author: Philipp Rauch ''' from pymodbus.client.sync import ModbusTcpClient +from datetime import datetime +import struct def setup(conf): PACS = [] @@ -28,9 +30,25 @@ def loop(PACS, item): # ans = PAC[0].write_registers(213,(1,0),unit=2) # print "Antwort: %s" % ans - res = PACS[0].read_holding_registers(213,4,unit=2) - print "Werte: %s" % res.registers + res = PACS[1].read_holding_registers(797,2,unit=2) + print "Werte: %s" % _to_time(res.registers) +def _to_time_abs(reg): + correction = (6*60*60 - 6*60 - 9) #21231 / 5h 53m 51s + timestamp = _to_ulong(reg) + correction + date = datetime.fromtimestamp(timestamp) + return date + +def _to_time_rel(reg): + return _to_ulong(reg)/3600.0 + +def _to_ulong(reg): + return (reg[0]*int(0xFFFF) + reg[1]) + +def _to_float(reg): + tmp = int(reg[0]) << 16 | int(reg[1]) + s = struct.pack('=i', tmp) + return struct.unpack('=f', s) def close(PACS): ### CLOSE ### diff --git a/Connector/switch.py b/Connector/switch.py index c42306b..c86d17b 100644 --- a/Connector/switch.py +++ b/Connector/switch.py @@ -65,7 +65,7 @@ class Switch(Thread): # item = query.get() #block = True # query should be included in the result - item = self.query.get(block = True) + item = None #self.query.get(block = True) if self.source == MYSQL: result = database.loop(self.cursor, item) @@ -74,8 +74,8 @@ class Switch(Thread): #print 'PUT:\t%s' % result - self.queue.put(result) - self.query.task_done() + #self.queue.put(result) + #self.query.task_done() if self.source == MYSQL: sleep(float(conf['mySQL_speed'])) elif self.source == MODBUS: diff --git a/src/test.py b/src/test.py index 938e94e..f3192b9 100644 --- a/src/test.py +++ b/src/test.py @@ -6,11 +6,22 @@ Created on 21.11.2013 # import CANFilter # import Sym2Lib from Config.parser import config +from Connector.switch import Switch, MODBUS +from time import sleep ### LOAD CONFIG ### c = config() conf = c.readConf() +### Modbus ### +sw = Switch(MODBUS) +queue, query = sw.initialisiere() +sw.run() +print 'run' +while True: + query.put(1) + sleep(0.5) + ### Sym2Lib test ### # sym = "%s/%s" % (conf["config_dictionary"], conf["symfile"]) # print Sym2Lib.get_DataFrameDict(sym)