Exemple #1
0
    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
Exemple #2
0
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")
Exemple #6
0
 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)
Exemple #7
0
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
Exemple #8
0
    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)
Exemple #9
0
 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
 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
    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
Exemple #12
0
        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)
Exemple #13
0
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)
Exemple #15
0
        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")
Exemple #18
0
 def __init__(self):
     self.canLib = canlib.canlib()
     self.reader_period = 0.01 #seconds
     self.old_read_msg = ''
     self.read_msg_list = []