def main(): print("Initializing") # create the ElectronicControlUnit (one ECU can hold multiple ControllerApplications) ecu = j1939.ElectronicControlUnit() # Connect to the CAN bus # Arguments are passed to python-can's can.interface.Bus() constructor # (see https://python-can.readthedocs.io/en/stable/bus.html). # ecu.connect(bustype='socketcan', channel='can0') # ecu.connect(bustype='kvaser', channel=0, bitrate=250000) ecu.connect(bustype='pcan', channel='PCAN_USBBUS1', bitrate=250000) # ecu.connect(bustype='ixxat', channel=0, bitrate=250000) # ecu.connect(bustype='vector', app_name='CANalyzer', channel=0, bitrate=250000) # ecu.connect(bustype='nican', channel='CAN0', bitrate=250000) # ecu.connect('testchannel_1', bustype='virtual') # add CA to the ECU ecu.add_ca(controller_application=ca) ca.subscribe(ca_receive) # callback every 0.5s ca.add_timer(0.500, ca_timer_callback1) # callback every 5s ca.add_timer(5, ca_timer_callback2) # by starting the CA it starts the address claiming procedure on the bus ca.start() time.sleep(120) print("Deinitializing") ca.stop() ecu.disconnect()
def start_listening(self): print("Open CAN device {}".format(self.cfg['port'])) # create the ElectronicControlUnit (one ECU can hold multiple ControllerApplications) ecu = j1939.ElectronicControlUnit() # Connect to the CAN bus ecu.connect(bustype='socketcan', channel=self.cfg['port']) # add CA to the ECU ecu.add_ca(controller_application=self) self.start()
def main(): print("Initializing") # create the ElectronicControlUnit (one ECU can hold multiple ControllerApplications) ecu = j1939.ElectronicControlUnit() # Connect to the CAN bus # Arguments are passed to python-can's can.interface.Bus() constructor # (see https://python-can.readthedocs.io/en/stable/bus.html). # ecu.connect(bustype='socketcan', channel='can0') # ecu.connect(bustype='kvaser', channel=0, bitrate=250000) ecu.connect(bustype='pcan', channel='PCAN_USBBUS1', bitrate=250000) # ecu.connect(bustype='ixxat', channel=0, bitrate=250000) # ecu.connect(bustype='vector', app_name='CANalyzer', channel=0, bitrate=250000) # ecu.connect(bustype='nican', channel='CAN0', bitrate=250000) # subscribe to all (global) messages on the bus ecu.subscribe(on_message) # name descriptor for the ca CA_NAME = j1939.Name(arbitrary_address_capable=0, industry_group=j1939.Name.IndustryGroup.Industrial, vehicle_system_instance=1, vehicle_system=1, function=1, function_instance=1, ecu_instance=1, manufacturer_code=666, identity_number=1234567) ca = j1939.ControllerApplication(CA_NAME, 0xF1) # add CA to the ECU ecu.add_ca(controller_application=ca) # by starting the CA it starts the address claiming procedure on the bus ca.start() # create the instance of the Dm1 to be able to receive active DTCs Dm1_rec = j1939.Dm1(ca) # subscribe to DM1-messages on the bus Dm1_rec.subscribe(dm1_receive) # create the instance of the Dm1 to be able to send active DTCs Dm1_snd = j1939.Dm1(ca) # start sending Dm1-message from source-id 10 Dm1_snd.start_send(callback=dm1_before_send) time.sleep(120) print("Deinitializing") ecu.disconnect()
def setUp(self): """Called before each test methode. Method called to prepare the test fixture. This is called immediately before calling the test method; other than AssertionError or SkipTest, any exception raised by this method will be considered an error rather than a test failure. The default implementation does nothing. """ self.can_messages = [] self.pdus = [] self.STOP_THREAD = object() self.message_queue = queue.Queue() self.message_thread = threading.Thread(target=self._async_can_feeder) self.message_thread.start() self.ecu = j1939.ElectronicControlUnit() # redirect the send_message from the can bus to our simulation self.ecu.send_message = self._send_message
def main(): print("Initializing") # create the ElectronicControlUnit (one ECU can hold multiple ControllerApplications) ecu = j1939.ElectronicControlUnit() # Connect to the CAN bus # Arguments are passed to python-can's can.interface.Bus() constructor # (see https://python-can.readthedocs.io/en/stable/bus.html). # ecu.connect(bustype='socketcan', channel='can0') # ecu.connect(bustype='kvaser', channel=0, bitrate=250000) ecu.connect(bustype='pcan', channel='PCAN_USBBUS1', bitrate=250000) # ecu.connect(bustype='ixxat', channel=0, bitrate=250000) # ecu.connect(bustype='vector', app_name='CANalyzer', channel=0, bitrate=250000) # ecu.connect(bustype='nican', channel='CAN0', bitrate=250000) # ecu.connect('testchannel_1', bustype='virtual') # compose the name descriptor for the new ca name = j1939.Name(arbitrary_address_capable=0, industry_group=j1939.Name.IndustryGroup.Industrial, vehicle_system_instance=1, vehicle_system=1, function=1, function_instance=1, ecu_instance=1, manufacturer_code=666, identity_number=1234567) # create derived CA with given NAME and ADDRESS ca = OwnCaToProduceCyclicMessages(name, 128) # add CA to the ECU ecu.add_ca(controller_application=ca) # by starting the CA it starts the address claiming procedure on the bus ca.start() time.sleep(120) print("Deinitializing") ca.stop() ecu.disconnect()
def main(): print("Initializing") # create the ElectronicControlUnit (one ECU can hold multiple ControllerApplications) ecu = j1939.ElectronicControlUnit() #print ecu # Connect to the CAN bus # Arguments are passed to python-can's can.interface.Bus() constructor # (see https://python-can.readthedocs.io/en/stable/bus.html). ecu.connect(bustype='socketcan', channel='can0') # ecu.connect(bustype='kvaser', channel=0, bitrate=250000) # ecu.connect(bustype='pcan', channel='PCAN_USBBUS1', bitrate=250000) # ecu.connect(bustype='ixxat', channel=0, bitrate=250000) # ecu.connect(bustype='vector', app_name='CANalyzer', channel=0, bitrate=250000) # ecu.connect(bustype='nican', channel='CAN0', bitrate=250000) # subscribe to all (global) messages on the bus ecu.subscribe(on_message) time.sleep(120) print("Deinitializing") ecu.disconnect()