def __init__(self, ch=None, flags=0, canlibHnd=None, ean=None, serial=None, cardChannel=0): if canlibHnd is None: self.canlib = canlib.canlib() else: self.canlib = canlibHnd self._cardChannel = cardChannel if ean is not None: ch = self._findChannel(ean, serial, cardChannel) if ch is not None: self.channel = self.canlib.openChannel(ch, flags) self._loadInfo() self.close() else: self.channel = None self._loadInfo() self._ean = ean self._serial = serial self._channel = ch self.memo = None
def readConfig(): import os import canlib cl = canlib.canlib() # We already knew that our device was connected to CANlib channel number 0 canlibChannel = 0 # Open the device ch = cl.openChannel(channel=canlibChannel) # List files on device numFiles = ch.fileGetCount() if numFiles: for i in range(numFiles): name = ch.fileGetName(i) # Skip known system files if (os.path.splitext(name)[1].lower() == '.kmf' or name.lower() == 'param.lif' or name.lower() == 'database.bin'): print "Skipping %s" % name else: # Copy user files to PC print "Copying %s" % name ch.fileCopyFromDevice(name, name) ch.close()
def readRawFromCAN(ch, debug, visual=False): c1 = canlib.canlib() radar = RadarDataParser(debug) channels = c1.getNumberOfChannels() if ch >= channels: print("Invalid channel number") sys.exit() try: ch1 = c1.openChannel(ch, canlib.canOPEN_ACCEPT_VIRTUAL) print("Using channel: %s, EAN: %s" % (ch1.getChannelData_Name(), ch1.getChannelData_EAN())) ch1.setBusOutputControl(canlib.canDRIVER_NORMAL) ch1.setBusParams(canlib.canBITRATE_500K, 4, 3, 1, 1, 0) ch1.busOn() except (canlib.canError) as ex: print(ex) # Initialize the Radar - send out a RADIATE command (xBF or 191) message = [0, 0, 0, 0, 0, 0, 191, 0] ch1.write(1256, message, 8) rospy.init_node('esr_node', anonymous=True) pub = rospy.Publisher('esr_front', kvaser.msg.CANESR, queue_size=10) if visual: visualizer = RadarVisualizer() r = rospy.Rate(10) r.sleep() # pub.publish(s) r.sleep() while not rospy.is_shutdown(): try: msgId, msg, dlc, flg, time = ch1.read() # # raw can format: # msgId: 1899 # msg: [2, 0, 0, 0, 0, 0, 0, 0] # dlc (msg len): 8 # flg: 0 # time: 1219812 # radarData = radar.parseMessage(msgId, msg, dlc, flg, time) if len(trackdata) > 0: #KFC rossend(std.msg.String(data=json.dumps(radarData))) pub.publish(json.dumps(radarData)) if visual: visualizer.update(radarData) except (canlib.canNoMsg) as ex: pass except (canlib.canError) as ex: print(ex) rospy.spin()
def print_header(): """ Print out a fancy little header with some status info. """ cl = canlib.canlib(); channels = cl.getNumberOfChannels() logging.info("/-------------------------------------------------\\") logging.info("| Booting DSRC+Radar Collision Avoidance") logging.info("| Canlib running version %s with %s channels" % (cl.getVersion(), channels)) logging.info("\-------------------------------------------------/\n")
def print_header(): """ Print out a fancy little header with some status info. """ cl = canlib.canlib() channels = cl.getNumberOfChannels() logging.info("/-------------------------------------------------\\") logging.info("| Booting DSRC+Radar Collision Avoidance") logging.info("| Canlib running version %s with %s channels" % (cl.getVersion(), channels)) logging.info("\-------------------------------------------------/\n")
def __init__(self, filename): """ Initialize the data parser, connect to the can bus. """ Process.__init__(self) self.data = {} self.power_tracks = {} self.file = open('filename','w') self.startTime = None cl = canlib.canlib() self.ch1 = cl.openChannel(0, canlib.canOPEN_ACCEPT_VIRTUAL)
def setUpChannel(channel=0, openFlags=canlib.canOPEN_ACCEPT_VIRTUAL, bitrate=canlib.canBITRATE_500K, bitrateFlags=canlib.canDRIVER_NORMAL): cl = canlib.canlib() ch = cl.openChannel(channel, openFlags) print("Using channel: %s, EAN: %s" % (ch.getChannelData_Name(), ch.getChannelData_EAN())) ch.setBusOutputControl(bitrateFlags) ch.setBusParams(bitrate) ch.busOn() return ch
def run(self): cl = canlib.canlib() channels = cl.getNumberOfChannels() ch = 0 # Hard-coded, might need to change! if ch >= channels: print("Invalid channel number") sys.exit() try: ch1 = cl.openChannel(ch, canlib.canOPEN_ACCEPT_VIRTUAL) print("Using channel: %s, EAN: %s" % (ch1.getChannelData_Name(), ch1.getChannelData_EAN())) ch1.setBusOutputControl(canlib.canDRIVER_NORMAL) ch1.setBusParams(canlib.canBITRATE_500K) ch1.busOn() except (canlib.canError) as ex: print(ex) # Initialize the Radar message = [0, 0, 0, 0, 0, 0, 191, 0] ch1.write(1265, message, 8) msg_counter = 0 # Variable that keeps track of the iteration of msg 1344 we are on while True: ss = time.time() # - self.startTime try: msgId, msg, dlc, flg, msgtime = ch1.read() if msgId >= 1280 and msgId <= 1343: self.track_msg(msgId, msg) elif (msgId == 1344): self.track_status_msg(msg_counter, msg) msg_counter += 1 elif (msgId > 1344 and msg_counter > 0): msg_counter = 0 elif (msgId == 1512): sdat = [(ss, k, v[0], v[1], v[2], v[3], self.power_tracks[k]) for k, v in self.data.iteritems() if self.power_tracks[k] > 0] self.queue.put(sdat) self.data = {} # Start with a fresh object self.power_tracks = {} except (canlib.canNoMsg) as ex: pass except (canlib.canError) as ex: print(ex)
def allDevices(): devices = [] cl = canlib.canlib() indx = -1 cl.reinitializeLibrary() for ch in range(cl.getNumberOfChannels()): try: dev = kvDevice(ch=ch) except canlib.canError as e: if e.canERR == canlib.canERR_NOTFOUND: return devices else: raise e if indx == -1 or dev != devices[indx]: devices.append(dev) indx += 1 return devices
self.document = minidom.parseString(conf_xml) def parseXml(self, conf_xml): self.document = minidom.parseString(conf_xml) def toXml(self): return self.document.toxml() def toLif(self): xl = kvaMemoLibXml.kvaMemoLibXml() conf_lif = xl.kvaXmlToBuffer(self.document.toxml()) return conf_lif if __name__ == '__main__': cl = canlib.canlib() rate = cl.translateBaud(freq=canlib.canBITRATE_1M) print(rate) print("- Manually creating configuration -----------------") memoConfig = kvMemoConfig(afterburner=10000) memoConfig.addBusparams(channel=0, rateParam=rate) memoConfig.addBusparams(channel=1, rateParam=rate) trigger = kvTrigger(logmode=TRIG_ON_EVENT, fifomode=False) trigVarTimer = kvTrigVarTimer(idx=0, offset=10) trigger.addTrigVarTimer(trigVarTimer) trigVarTimer = kvTrigVarTimer(idx=1, offset=20) trigger.addTrigVarTimer(trigVarTimer) trigStatement = kvTrigStatement(postFixExpr=0, function=ACTION_START_LOG, param=1)
import canopenpy as cnp import canlib import time try: ch = canlib.canlib().openChannel(0,canlib.canOPEN_EXCLUSIVE) ch.open(bitrate=500000) canopen = cnp.CanOpen(ch) canopen.setNodeId(1) except canlib.canError as err: print(err) print(ch.getBusParams()) def getValue(cmd): try: res = canopen.SetOsIntCmd(cmd) if res[-1]==';': res=res[:-1] except Exception as ex: res = None print('getValue:',ex) return res def sendCommand(cmd): try: res = canopen.SetOsIntCmd(cmd) except : print('SendCommand',res) def console():
def run(self): """ Start reading data from the CAN Bus and sending full objects to the dispatcher. """ configure_logs(getattr(logging, self.log_level, None)) # self.logger = logging.getLogger('debug_radar') # These are logging properly on Bryce's machinekk:w # self.logger.info( "welcome to the debug_radar logger!") # logging.getLogger('radar').info("this is a dummy message") msgToFunc = { 1248: self.status_one, 1249: self.status_two, 1250: self.status_three, 1251: self.status_four, 1280: self.track_msg, 1281: self.track_msg, 1282: self.track_msg, 1283: self.track_msg, 1284: self.track_msg, 1285: self.track_msg, 1286: self.track_msg, 1287: self.track_msg, 1288: self.track_msg, 1289: self.track_msg, 1290: self.track_msg, 1291: self.track_msg, 1292: self.track_msg, 1293: self.track_msg, 1294: self.track_msg, 1295: self.track_msg, 1296: self.track_msg, 1297: self.track_msg, 1298: self.track_msg, 1299: self.track_msg, 1300: self.track_msg, 1301: self.track_msg, 1302: self.track_msg, 1303: self.track_msg, 1304: self.track_msg, 1305: self.track_msg, 1306: self.track_msg, 1307: self.track_msg, 1308: self.track_msg, 1309: self.track_msg, 1310: self.track_msg, 1311: self.track_msg, 1312: self.track_msg, 1313: self.track_msg, 1314: self.track_msg, 1315: self.track_msg, 1316: self.track_msg, 1317: self.track_msg, 1318: self.track_msg, 1319: self.track_msg, 1320: self.track_msg, 1321: self.track_msg, 1322: self.track_msg, 1323: self.track_msg, 1324: self.track_msg, 1325: self.track_msg, 1326: self.track_msg, 1327: self.track_msg, 1328: self.track_msg, 1329: self.track_msg, 1330: self.track_msg, 1331: self.track_msg, 1332: self.track_msg, 1333: self.track_msg, 1334: self.track_msg, 1335: self.track_msg, 1336: self.track_msg, 1337: self.track_msg, 1338: self.track_msg, 1339: self.track_msg, 1340: self.track_msg, 1341: self.track_msg, 1342: self.track_msg, 1343: self.track_msg, 1344: self.track_status_msg, 1488: self.validation_msg_one, 1489: self.validation_msg_two, 1508: self.additional_status_one, 1509: self.additional_status_two, 1510: self.additional_status_three, 1511: self.additional_status_four, 1512: self.additional_status_five, } cl = canlib.canlib() channels = cl.getNumberOfChannels() ch = 0 # Hard-coded, might need to change! if ch >= channels: print("Invalid channel number") sys.exit() try: ch1 = cl.openChannel(ch, canlib.canOPEN_ACCEPT_VIRTUAL) print("Using channel: %s, EAN: %s" % (ch1.getChannelData_Name(), ch1.getChannelData_EAN())) ch1.setBusOutputControl(canlib.canDRIVER_NORMAL) ch1.setBusParams(canlib.canBITRATE_500K) ch1.busOn() except (canlib.canError) as ex: print(ex) # Initialize the Radar message = [0, 0, 0, 0, 0, 0, 191, 0] ch1.write(1265, message, 8) msg_counter = 0 # Variable that keeps track of the iteration of msg 1344 we are on while True: try: msgId, msg, dlc, flg, time = ch1.read() # self.logger.debug("In radar_data_parser and this is a message") # self.logger.debug("msgId: %9d time: %9d flg: 0x%02x dlc: %d " % (msgId, time, flg, dlc)) print_var = ''.join('{:02x}'.format(x) for x in msg) # self.logger.debug((msg,print_var)) if msgId in msgToFunc: # This message is valid, so we need to parse it if msgId >= 1280 and msgId <= 1343: msgToFunc[msgId](msgId, msg) else: # self.logger.debug("In radar_data_parser and this is msgId %d", msgId) if (msgId == 1344): msgToFunc[msgId](msg_counter, msg) msg_counter += 1 elif (msgId > 1344 and msg_counter > 0): msgToFunc[msgId](msg) msg_counter = 0 else: msgToFunc[msgId](msg) if (msgId == 1512): # self.callback(copy.deepcopy(self.data)) self.callback(self.data) #if self.log: # sends JSON data to radar log file #logging.getLogger('radar').info(json.dumps(self.data)) self.data = {} # Start with a fresh object except (canlib.canNoMsg) as ex: pass except (canlib.canError) as ex: print(ex)
description='Udacity SDC Micro Challenge Radar viewer') parser.add_argument( '--channel', type=int, default=0, help='CANbus channel where target ESR radar is located') parser.add_argument('--debug', action='store_true', default=False, help='display debug messages') args = parser.parse_args() ch = args.channel debug = args.debug c1 = canlib.canlib() radar = RadarDataParser(debug) channels = c1.getNumberOfChannels() if ch >= channels: print("Invalid channel number") sys.exit() try: ch1 = c1.openChannel(ch, canlib.canOPEN_ACCEPT_VIRTUAL) print("Using channel: %s, EAN: %s" % (ch1.getChannelData_Name(), ch1.getChannelData_EAN())) ch1.setBusOutputControl(canlib.canDRIVER_NORMAL) ch1.setBusParams(canlib.canBITRATE_500K, 4, 3, 1, 1, 0) ch1.busOn() except (canlib.canError) as ex:
def run(self): """ Start reading data from the CAN Bus and sending full objects to the dispatcher. """ configure_logs(getattr(logging, self.log_level, None)) self.logger = logging.getLogger('debug_radar') # These are logging properly on Bryce's machinekk:w # self.logger.info( "welcome to the debug_radar logger!") # logging.getLogger('radar').info("this is a dummy message") msgToFunc = { 1248: self.status_one, 1249: self.status_two, 1250: self.status_three, 1251: self.status_four, 1280: self.track_msg, 1281: self.track_msg, 1282: self.track_msg, 1283: self.track_msg, 1284: self.track_msg, 1285: self.track_msg, 1286: self.track_msg, 1287: self.track_msg, 1288: self.track_msg, 1289: self.track_msg, 1290: self.track_msg, 1291: self.track_msg, 1292: self.track_msg, 1293: self.track_msg, 1294: self.track_msg, 1295: self.track_msg, 1296: self.track_msg, 1297: self.track_msg, 1298: self.track_msg, 1299: self.track_msg, 1300: self.track_msg, 1301: self.track_msg, 1302: self.track_msg, 1303: self.track_msg, 1304: self.track_msg, 1305: self.track_msg, 1306: self.track_msg, 1307: self.track_msg, 1308: self.track_msg, 1309: self.track_msg, 1310: self.track_msg, 1311: self.track_msg, 1312: self.track_msg, 1313: self.track_msg, 1314: self.track_msg, 1315: self.track_msg, 1316: self.track_msg, 1317: self.track_msg, 1318: self.track_msg, 1319: self.track_msg, 1320: self.track_msg, 1321: self.track_msg, 1322: self.track_msg, 1323: self.track_msg, 1324: self.track_msg, 1325: self.track_msg, 1326: self.track_msg, 1327: self.track_msg, 1328: self.track_msg, 1329: self.track_msg, 1330: self.track_msg, 1331: self.track_msg, 1332: self.track_msg, 1333: self.track_msg, 1334: self.track_msg, 1335: self.track_msg, 1336: self.track_msg, 1337: self.track_msg, 1338: self.track_msg, 1339: self.track_msg, 1340: self.track_msg, 1341: self.track_msg, 1342: self.track_msg, 1343: self.track_msg, 1344: self.track_status_msg, 1488: self.validation_msg_one, 1489: self.validation_msg_two, 1508: self.additional_status_one, 1509: self.additional_status_two, 1510: self.additional_status_three, 1511: self.additional_status_four, 1512: self.additional_status_five, } cl = canlib.canlib() channels = cl.getNumberOfChannels() ch = 0; # Hard-coded, might need to change! if ch >= channels: print("Invalid channel number") sys.exit() try: ch1 = cl.openChannel(ch, canlib.canOPEN_ACCEPT_VIRTUAL) print("Using channel: %s, EAN: %s" % (ch1.getChannelData_Name(), ch1.getChannelData_EAN())) ch1.setBusOutputControl(canlib.canDRIVER_NORMAL) ch1.setBusParams(canlib.canBITRATE_500K) ch1.busOn() except (canlib.canError) as ex: print(ex) # Initialize the Radar message = [0,0,0,0,0,0,191,0] ch1.write(1265,message,8) msg_counter = 0 # Variable that keeps track of the iteration of msg 1344 we are on while True: try: msgId, msg, dlc, flg, time = ch1.read() # self.logger.debug("In radar_data_parser and this is a message") # self.logger.debug("msgId: %9d time: %9d flg: 0x%02x dlc: %d " % (msgId, time, flg, dlc)) print_var = ''.join('{:02x}'.format(x) for x in msg) # self.logger.debug((msg,print_var)) if msgId in msgToFunc: # This message is valid, so we need to parse it if msgId >= 1280 and msgId <= 1343: msgToFunc[msgId](msgId, msg) else: # self.logger.debug("In radar_data_parser and this is msgId %d", msgId) if (msgId == 1344): msgToFunc[msgId](msg_counter, msg) msg_counter += 1 elif (msgId > 1344 and msg_counter > 0): msgToFunc[msgId](msg) msg_counter = 0 else: msgToFunc[msgId](msg) if (msgId == 1512): # self.callback(copy.deepcopy(self.data)) self.callback(self.data) if self.log: # sends JSON data to radar log file logging.getLogger('radar').info(json.dumps(self.data)) self.data = {} # Start with a fresh object except (canlib.canNoMsg) as ex: pass except (canlib.canError) as ex: print(ex)
import canlib import logging import logging.config import sys debug = True if __name__ == '__main__': if debug is True: logging.config.fileConfig('logger.ini') logger = logging.getLogger() cl = canlib.canlib() channels = cl.getNumberOfChannels() dbg_str = "canlib version: %s" % cl.getVersion() logging.debug(dbg_str) logging.info("you should see the version number in logs/canlib_all.log!") logging.debug("this should not print to command line") logging.info("this should print to command line") logging.warning("this is a test warning") logging.error("this is a test error")
def __init__(self): self.canLib = canlib.canlib() self.reader_period = 0.01 #seconds self.old_read_msg = '' self.read_msg_list = []