コード例 #1
0
 def setUp(self):
     ics.load_default_settings(self.dev1)
     ics.load_default_settings(self.dev2)
     
     # Make sure we start with a "clean" network
     ics.get_error_messages(self.dev1)
     ics.get_error_messages(self.dev2)
     ics.get_messages(self.dev1, False, 0.1)
     ics.get_messages(self.dev2, False, 0.1)
コード例 #2
0
    def _process_msg_queue(self, timeout=0.1):
        try:
            messages, errors = ics.get_messages(self.dev, False, timeout)
        except ics.RuntimeError:
            return
        for ics_msg in messages:
            if ics_msg.NetworkID not in self.channels:
                continue

            is_tx = bool(ics_msg.StatusBitField & ics.SPY_STATUS_TX_MSG)

            if is_tx:
                if bool(ics_msg.StatusBitField & ics.SPY_STATUS_GLOBAL_ERR):
                    continue
                if ics_msg.DescriptionID:
                    receipt_key = (ics_msg.ArbIDOrHeader,
                                   ics_msg.DescriptionID)
                    self.message_receipts[receipt_key].set()
                if not self._receive_own_messages:
                    continue

            self.rx_buffer.append(ics_msg)
        if errors:
            logger.warning("%d error(s) found", errors)

            for msg in ics.get_error_messages(self.dev):
                error = ICSApiError(*msg)
                logger.warning(error)
コード例 #3
0
def get_iso15765_msgs(device):
    msgs, error_count = ics.get_messages(device)
    print("Received {} messages with {} errors.".format(
        len(msgs), error_count))
    for i, m in enumerate(msgs):
        print('Message #{}\t'.format(i + 1), end='')
        print_message(m)
コード例 #4
0
ファイル: icscandump.py プロジェクト: telehan/vicspy
def dump_can_chnl(chnl=0,tmformat=1):
    global linenm, devices, pre_rxtm, shift_rxtm
    while True:
        messages, errors = ics.get_messages(device)
        for rxmsg in messages:
            linenm += 1
            msgst = rxmsg.StatusBitField
            msgdir = 'Rx'
            if hex(msgst) == '0x4000000':
                msgdir = 'Rx'
            elif hex(msgst) == '0x4000002':
                msgdir = 'Tx'
            else:
                msgdir = 'Er'
            rxtm = rxmsg.TimeHardware/40000000
            rxtm = shift_rxtm + rxtm
            if rxtm < pre_rxtm:
                delta = rxtm - shift_rxtm
                shift_rxtm += 107.3741824
                rxtm = shift_rxtm + delta
            rel_rxtm = rxtm - pre_rxtm
            pre_rxtm = rxtm
            rxid = format(rxmsg.ArbIDOrHeader,'#04X',).replace('0X','').zfill(3)
            rxds = '[{}]'.format(' '.join(format(i, '#04X').replace('0X','') for i in rxmsg.Data))
            rxds = rxds.replace('[','').replace(']','')
            rxch = rxmsg.NetworkID
            rxdl = rxmsg.NumberBytesData
            rxtm = format(rxtm,'.6f')
            rel_rxtm = format(rel_rxtm,'.6f')
            if tmformat == 1 :
                print(rxtm, rxch, rxid, msgdir, 'd', rxdl, rxds, flush=True)
            else:
                print(rel_rxtm, rxch, rxid, msgdir, 'd', rxdl, rxds, flush=True)
        messages = []
コード例 #5
0
 def testLIN(self):
     message = ics.SpyMessageJ1850()
     message.Header = (0x3C, 1, 2)
     message.StatusBitField = ics.SPY_STATUS_NETWORK_MESSAGE_TYPE | \
                              ics.SPY_STATUS_LIN_MASTER
     message.Protocol = ics.SPY_PROTOCOL_LIN
     
     for network in (ics.NETID_LIN, ics.NETID_LIN2, ics.NETID_LIN3, \
                     ics.NETID_LIN4):
         message.NetworkID = network
         message.Data = tuple([random.randint(x, 0xFF) for x in range(6)])
         # Generate the checksum
         checksum = 0
         for byte in message.Data+message.Header[1:3]:
             checksum += byte
             if (checksum > 255):
                 checksum -= 255
         message.Data += ((~checksum & 0xFF),)
         self.assertTrue(ics.transmit_messages(self.dev1, message) == None)
         self.assertFalse(ics.get_error_messages(self.dev1))
         self.assertFalse(ics.get_error_messages(self.dev2))
         messages, error_count = ics.get_messages(self.dev1, False, 0.1)
         self.assertEqual(error_count, 0)
         self.assertEqual(len(messages), 1)
         self.assertEqual(message.Header, messages[0].Header)
         self.assertEqual(message.NetworkID, messages[0].NetworkID)
         self.assertEqual(message.Data[0:-1], messages[0].Data)
         self.assertFalse(ics.get_error_messages(self.dev1))
         self.assertFalse(ics.get_error_messages(self.dev2))
コード例 #6
0
def receive_can(device):
    msgs, error_count = ics.get_messages(device)
    print("Received {} messages with {} errors.".format(
        len(msgs), error_count))
    for i, m in enumerate(msgs):
        print('Message #{}\t'.format(i + 1), end='')
        print('\tArbID: {}\tData: {}'.format(hex(m.ArbIDOrHeader),
                                             [hex(x) for x in m.Data]))
コード例 #7
0
ファイル: neovi_bus.py プロジェクト: zhihongliuus/python-can
    def _process_msg_queue(self, timeout=0.1):
        try:
            messages, errors = ics.get_messages(self.dev, False, timeout)
        except ics.RuntimeError:
            return
        for ics_msg in messages:
            if ics_msg.NetworkID not in self.channels:
                continue
            self.rx_buffer.append(ics_msg)
        if errors:
            logger.warning("%d error(s) found" % errors)

            for msg in ics.get_error_messages(self.dev):
                error = ICSApiError(*msg)
                logger.warning(error)
コード例 #8
0
ファイル: pyCanMain.py プロジェクト: SerhiiSemenov/PyCAN
def receive_can(device, db):
    while (1):
        msgs, error_count = ics.get_messages(device)
        # print("Received {} messages with {} errors.".format(len(msgs), error_count))
        if error_count == 0:
            for i, m in enumerate(msgs):
                print('ID:{:>3}'.format(hex(m.ArbIDOrHeader)), end='')
                print('\tName: {}'.format(
                    db.get_msg_by_id(m.ArbIDOrHeader).name),
                      end='')
                print('\t\tData: {}'.format([hex(x) for x in m.Data]))
                #mssage_data = db.decode_message(frame_id_or_name=m.ArbIDOrHeader, data=bytes(m.Data))
                #print(mssage_data)

        else:
            print("Received {} messages with {} errors.".format(
                len(msgs), error_count))
コード例 #9
0
    def _process_msg_queue(self, timeout=0.1):
        try:
            messages, errors = ics.get_messages(self.dev, False, timeout)
        except ics.RuntimeError:
            return
        for ics_msg in messages:
            if ics_msg.NetworkID not in self.channels:
                continue
            is_tx = bool(ics_msg.StatusBitField & ics.SPY_STATUS_TX_MSG)
            if not self._receive_own_messages and is_tx:
                continue
            self.rx_buffer.append(ics_msg)
        if errors:
            logger.warning("%d error(s) found", errors)

            for msg in ics.get_error_messages(self.dev):
                error = ICSApiError(*msg)
                logger.warning(error)
コード例 #10
0
 def _test_misc(self, state):
     arbs = (0x203, 0x204, 0x205, 0x206, 0x201, 0x202)
     for arb in arbs:
         message = ics.SpyMessage()
         message.ArbIDOrHeader = arb
         message.NetworkID = ics.NETID_DEVICE
         message.Data = (state,)
         self.assertEqual(ics.transmit_messages(self.dev1, message), None)
     # Wait for the report message to get sent
     time.sleep(0.2)
     self.assertFalse(ics.get_error_messages(self.dev1))
     self.assertFalse(ics.get_error_messages(self.dev2))
     messages, error_count = ics.get_messages(self.dev2, False, 0.5)
     self.assertEqual(error_count, 0)
     self.assertNotEqual(len(messages), 0)
     self.assertEqual(messages[-1].ArbIDOrHeader, 0x100)
     for i, arb in enumerate(arbs):
         #print(messages[-1].Data, messages[-1].Data[1]>>i & 1)
         self.assertEqual(messages[-1].Data[1]>>i & 1, state, \
                          "MISC%d PIN state is wrong" % (arb-0x200))
     self.assertFalse(ics.get_error_messages(self.dev1))
     self.assertFalse(ics.get_error_messages(self.dev2))
コード例 #11
0
 def testCAN(self):
     message = ics.SpyMessage()
     message.ArbIDOrHeader = 0xFF
     message.Data = (1,2,3,4,5,6,7,8)
     for network in (ics.NETID_HSCAN, ics.NETID_MSCAN, ics.NETID_HSCAN2, \
                     ics.NETID_HSCAN3, ics.NETID_LSFTCAN, ics.NETID_SWCAN):
         message.NetworkID = network
         try:
             self.assertTrue(ics.transmit_messages(self.dev1, message) == None, network)
         except ics.RuntimeError as ex:
             print(ex, network)
             raise ex
         self.assertFalse(ics.get_error_messages(self.dev1))
         self.assertFalse(ics.get_error_messages(self.dev2))
         messages, error_count = ics.get_messages(self.dev1, False, 0.1)
         self.assertEqual(error_count, 0)
         self.assertEqual(len(messages), 1)
         self.assertEqual(message.ArbIDOrHeader, messages[0].ArbIDOrHeader)
         self.assertEqual(message.NetworkID, messages[0].NetworkID)
         self.assertEqual(message.Data, messages[0].Data)
         self.assertFalse(ics.get_error_messages(self.dev1))
         self.assertFalse(ics.get_error_messages(self.dev2))