Пример #1
0
    def test_iteration(self):
        event1 = events.CanMessage(can.Message())
        self.sender.send_event(event1)
        data = self.sender.next_data()
        self.receiver.receive_data(data * 8)

        self.assertListEqual(list(self.receiver), [event1] * 8)
Пример #2
0
    def send(self, msg, timeout=None):
        """Transmit a message to CAN bus.

        :param can.Message msg: A Message object.
        :raises can.interfaces.remote.CanRemoteError:
            On failed transmission to socket.
        """
        self.send_event(events.CanMessage(msg))
Пример #3
0
    def test_send_and_receive(self):
        event1 = events.CanMessage(can.Message())
        self.sender.send_event(event1)
        self.receiver.receive_data(self.sender.next_data())
        event2 = self.receiver.next_event()
        self.assertEqual(event1, event2)

        # No more events shall be returned
        self.assertIsNone(self.receiver.next_event())
Пример #4
0
    def _next_event_from_bus(self, timeout=None):
        """Block until a new a CAN message is received or an exception occurrs.

        :return: An event
        """
        try:
            msg = self.bus.recv(timeout)
        except can.CanError as e:
            logger.error(e)
            return events.RemoteException(e)
        else:
            return None if msg is None else events.CanMessage(msg)
Пример #5
0
    def test_partial_transfer(self):
        event1 = events.CanMessage(can.Message())
        self.sender.send_event(event1)
        data = self.sender.next_data()

        # Send only first 8 bytes
        self.receiver.receive_data(data[:8])
        self.assertIsNone(self.receiver.next_event())

        # Send the rest (and some more)
        self.receiver.receive_data(data[8:])
        self.receiver.receive_data(b'hello')
        event2 = self.receiver.next_event()
        self.assertEqual(event1, event2)
Пример #6
0
    def test_message(self):
        messages = [
            can.Message(timestamp=1470925506.0621243,
                        arbitration_id=0x100,
                        extended_id=False,
                        data=[1, 2, 3, 4]),
            can.Message(arbitration_id=0xabcdef,
                        extended_id=True,
                        data=[0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]),
            can.Message(),
            can.Message(is_error_frame=True),
            can.Message(is_remote_frame=True,
                        arbitration_id=0x123)
        ]

        for msg in messages:
            send_event = events.CanMessage(msg)
            buf = send_event.encode()
            recv_event = events.CanMessage.from_buffer(buf)
            self.assertEqual(recv_event, send_event)
            self.assertAlmostEqual(recv_event.msg.timestamp, msg.timestamp)
            self.assertEqual(len(recv_event), len(buf))