fix debug modus, add CAN Connector-Module
This commit is contained in:
parent
77082c62ca
commit
1621080721
8 changed files with 123 additions and 34 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
85
Connector/modules/can.py
Normal 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)
|
||||
|
|
@ -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 ###
|
||||
|
|
|
|||
17
src/can.py
17
src/can.py
|
|
@ -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)
|
||||
|
|
@ -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 ##
|
||||
|
|
|
|||
17
src/pac.py
17
src/pac.py
|
|
@ -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)
|
||||
|
|
|
|||
11
src/run.py
11
src/run.py
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue