fix debug modus, add CAN Connector-Module

This commit is contained in:
Philipp Rauch 2014-03-20 16:15:01 +01:00
parent 77082c62ca
commit 1621080721
8 changed files with 123 additions and 34 deletions

View file

@ -33,7 +33,8 @@ class Request(object):
def REST_start():
api = REST()
print 'REST-Thread:\t%s\n' % api
if conf['config_debug']:
print 'REST-Thread:\t%s\n' % api
api.app.run(host = conf['flask_server'],
port = int(conf['flask_port']))
#debug = conf['flask_debug']
@ -48,7 +49,7 @@ class REST(object):
### Start EMS thread ###
self.EMS = ems(self.buf)
self.emsthread = self.EMS.start()
self.EMS.start()
if conf['config_debug']:
print 'EMS-Thread:\t', self.EMS

View file

@ -22,8 +22,11 @@ def CAN_start(conf):
'''
start CAN communication
'''
print 'starte CAN mit Baud von', conf['can_baudrate']
if conf['config_debug']:
print 'starte CAN mit Baud von', conf['can_baudrate']
can = CANFilter(conf)
if conf['config_debug']:
print 'CAN-Thread:\t', can
can.start()
def get_DataFrameDict(symfile):
@ -77,12 +80,18 @@ class CANFilter(Thread):
sym = '%s/%s' % (self.conf['config_dictionary'],
self.conf['can_symfile'])
self.symList.append(get_DataFrameDict(sym))
Add2Adapter(self.pcan, sym)
if self.conf['config_debug']:
Add2Adapter(self.pcan, sym, toPrint = True)
else:
Add2Adapter(self.pcan, sym, toPrint = False)
elif isinstance(self.conf['can_symfile'], list):
for element in self.conf['can_symfile']:
sym = '%s/%s' % (self.conf['config_dictionary'], element)
self.symList.append(get_DataFrameDict(sym))
Add2Adapter(self.pcan, sym)
if self.conf['config_debug']:
Add2Adapter(self.pcan, sym, toPrint = True)
else:
Add2Adapter(self.pcan, sym, toPrint = False)
def run(self):
'''
@ -124,5 +133,6 @@ class CANFilter(Thread):
#self.db.writeDatabase(strTable=self.lookup[receiveMessageName], dfData=res, bClear=False)
self.db.writeDatabase(strTable=tablename, dfData=res, bClear=False)
sym[receiveMessageName] = sym[receiveMessageName].drop(sym[receiveMessageName].index[:])
print "%s - Write to DB - %s" % (res['DateTime'][0], tablename)
if self.conf['config_debug']:
print "%s - Write to DB - %s" % (res['DateTime'][0], tablename)
sleep(0.01)

85
Connector/modules/can.py Normal file
View file

@ -0,0 +1,85 @@
'''
Created on 11.02.2014
@author: Philipp Rauch
'''
'''
@attention: NOT TESTET
@warning:
'''
from PCan import PcanAdapter
from Sym2Lib import Add2Adapter, readSym, _get_easy_Dict_
from datetime import datetime
from time import sleep
from pandas import DataFrame
from profile.database import Database
### Lookup for CAN --> DB ###
lookup = {
'dc_battery' : 'battery'
}
def get_DataFrameDict(symfile):
'''
generate a from a symfile a dictionary with all messages and DataFrames
'''
mes = readSym(symfile)
symDict = _get_easy_Dict_(mes)
dfDict = {}
for i in symDict.keys():
dfDict.update( { i : DataFrame(columns = symDict[i]) } )
return dfDict
def setup(conf):
### init DB ###
db = Database()
db.loadDatabase(strHost = conf['mySQL_server'],
intPort = int(conf['mySQL_port']),
strUser = conf['mySQL_user'],
strPasswd = conf['mySQL_pass'],
strDatabase = conf['mySQL_database'],
strTable = None)
symList = []
### init PCAN ###
pcan = PcanAdapter(PcanAdapter.Baudrate[conf['can_baudrate']],
debug = conf['config_debug'])
pcan.initialize()
if isinstance(conf['can_symfile'], str):
sym = '%s/%s' % (conf['config_dictionary'],
conf['can_symfile'])
symList.append(get_DataFrameDict(sym))
Add2Adapter(pcan, sym)
elif isinstance(conf['can_symfile'], list):
for element in conf['can_symfile']:
sym = '%s/%s' % (conf['config_dictionary'], element)
symList.append(get_DataFrameDict(sym))
Add2Adapter(pcan, sym)
return [pcan, db, symList]
def loop(can, item):
receiveMessageName = can[0].receiveMessage()
for sym in can[2]:
if receiveMessageName in sym.keys():
tmp = {}
for sig in list(sym[receiveMessageName].columns):
tmp[sig] = can[0].Messages[receiveMessageName].Signals[sig].GetData()
sym[receiveMessageName] = sym[receiveMessageName].append(tmp, ignore_index=True)
if len(sym[receiveMessageName].index) == 100:
res = DataFrame(sym[receiveMessageName].mean(axis=0)).T
res.drop('isMaster', axis = 1, inplace = True)
res.drop('isCharging', axis = 1, inplace = True)
res['DateTime'] = datetime.now()
can[1].writeDatabase(lookup[receiveMessageName], res)
sym[receiveMessageName] = sym[receiveMessageName].drop(sym[receiveMessageName].index[:])
sleep(0.01)

View file

@ -106,7 +106,7 @@ def _set_time(PAC, offset):
stamp = time.time()
high = int(int(stamp) >> 16)
low = int(int(stamp) & int(0xFFFF))
print PAC.write_registers(offset, (high, low, 0, 0), unit=1)
PAC.write_registers(offset, (high, low, 0, 0), unit=1)
def close(PACS):
### CLOSE ###

View file

@ -1,17 +0,0 @@
'''
Created on 21.02.2014
@author: rauchp
'''
from Config.parser import config
from CAN.Filter import CAN_start
### LOAD CONFIG ###
c = config()
conf = c.readConf()
'''
File to only start CAN communication.
'''
CAN_start(conf)

View file

@ -11,7 +11,7 @@ flask_server = 0.0.0.0 # 0.0.0.0 for public access # default 0.0.0.0
flask_port = 5000 # default 5000
#### CONFIG ####
config_debug = True # default False
config_debug = False # default False
#### CAN ####
## possible Baud Rates: 100k, 125k, 250k, 500k, 1000k ##

View file

@ -14,8 +14,11 @@ from pandas import DataFrame
import numpy
def PAC_start(conf):
print 'starte PAC-Verbindung'
if conf['config_debug']:
print 'starte PAC-Verbindung'
pac = modbus_pac(conf)
if conf['config_debug']:
print 'PAC-Thread:\t', pac
pac.start()
class modbus_pac(Thread):
@ -54,9 +57,12 @@ class modbus_pac(Thread):
### Modbus ###
self.modbus = Switch(MODBUS)
if self.conf['config_debug']:
print 'SWITCH-Thread:\t', self.modbus
self.modbus.initialisiere()
print '\tTEST-QUERY:\t', self.modbus.query
print '\tTEST-QUEUE:\t', self.modbus.queue
if self.conf['config_debug']:
print '\tPAC-QUERY:\t', self.modbus.query
print '\tPAC-QUEUE:\t', self.modbus.queue
self.modbus.start()
def run(self):
@ -70,8 +76,9 @@ class modbus_pac(Thread):
for mes in self.conf['pac_messages']:
self.modbus.query.put([1, int(mes)])
res.update(self.modbus.queue.get())
print "%s - %s" % (datetime.now(), res.keys())
if self.conf['config_debug']:
print "%s - %s" % (datetime.now(), res.keys())
### save one line in res_data, use self.tab as mask###
res_data = self.tab.append(res, ignore_index=True)

View file

@ -16,13 +16,15 @@ conf = c.readConf()
#############################################################
## startet die Modbus Kommunikation
#############################################################
#from pac import PAC_start
#PAC_start(conf)
print '>> RUN_Modbus <<'
from pac import PAC_start
PAC_start(conf)
#############################################################
## startet die CAN Kommunikation
#############################################################
print '>> RUN_CAN <<'
from CAN.Filter import CAN_start
CAN_start(conf)
@ -31,5 +33,6 @@ CAN_start(conf)
## startet die API
## - muss als letztes ausgefuehrt werden, da blockiert.
#############################################################
#from API.service import REST_start
#REST_start()
print '>> RUN_API <<'
from API.service import REST_start
REST_start()