CAN BUS tools.
Project description
About
CAN BUS tools.
Project homepage: https://github.com/eerimoq/cantools
Documentation: http://cantools.readthedocs.org/en/latest
Installation
pip install cantools
Example usage
Scripting
An example parsing and using a small DBC-file:
>>> import cantools
>>> from pprint import pprint
>>> db = cantools.db.load_file('tests/files/motohawk.dbc')
>>> db
version('1.0')
node('PCM1', None)
node('FOO', None)
message('ExampleMessage', 0x1f0, False, 8, 'Example message used as template in MotoHawk models.')
signal('Enable', 0, 1, 'big_endian', False, 1.0, 0, 0.0, 0.0, '-', False, None, {0: 'Disabled', 1: 'Enabled'}, None)
signal('AverageRadius', 1, 6, 'big_endian', False, 0.1, 0, 0.0, 5.0, 'm', False, None, None, '')
signal('Temperature', 7, 12, 'big_endian', True, 0.01, 250, 229.53, 270.47, 'degK', False, None, None, None)
>>> db.messages
[message('ExampleMessage', 0x1f0, 8, 'Example message used as template in MotoHawk models.')]
>>> example_message = db.messages[0]
>>> example_message.comment
'Example message used as template in MotoHawk models.'
>>> pprint(example_message.signals)
[signal('Enable', 0, 1, 'big_endian', False, 1.0, 0, 0.0, 0.0, '-', False, None, {0: 'Disabled', 1: 'Enabled'}, None),
signal('AverageRadius', 1, 6, 'big_endian', False, 0.1, 0, 0.0, 5.0, 'm', False, None, None, ''),
signal('Temperature', 7, 12, 'big_endian', True, 0.01, 250, 229.53, 270.47, 'degK', False, None, None, None)]
>>> db.nodes
[node('PCM1', None), node('FOO', None)]
>>> db.version
'1.0'
The example continues encoding a message and sending it on a CAN bus using the python-can package.
>>> import can
>>> can.rc['interface'] = 'socketcan_ctypes'
>>> can.rc['channel'] = 'vcan0'
>>> can_bus = can.interface.Bus()
>>> data = example_message.encode({'Temperature': 250.1, 'AverageRadius': 3.2, 'Enable': 1})
>>> message = can.Message(arbitration_id=example_message.frame_id, data=data)
>>> can_bus.send(message)
See the test suite for additional examples: https://github.com/eerimoq/cantools/blob/master/tests/test_cantools.py
Command line tool
Decode CAN frames captured with the Linux program candump.
$ candump vcan0 | cantools decode motohawk.dbc
vcan0 1F0 [7] 80 4A 0F 00 00 00 00 :: ExampleMessage(Enable: 'Enabled' -, AverageRadius: 0.0 m, Temperature: 255.92 degK)
vcan0 1F0 [7] 80 4A 0F 00 00 00 00 :: ExampleMessage(Enable: 'Enabled' -, AverageRadius: 0.0 m, Temperature: 255.92 degK)
vcan0 1F0 [7] 80 4A 0F 00 00 00 00 :: ExampleMessage(Enable: 'Enabled' -, AverageRadius: 0.0 m, Temperature: 255.92 degK)
Contributing
Fork the repository.
Implement the new feature or bug fix.
Implement test case(s) to ensure that future changes do not break legacy.
Run the test suite for Python 2 and Python 3. Make sure all tests pass.
python2 setup.py test python3 setup.py test
Create a pull request.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for cantools-9.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97ce589df8fc4b4542a2ea86b34a9a1845556020a4ffe10b68ac10b440cd0c13 |
|
MD5 | 3a9b1a14e77f08853d18c66ecd43ab84 |
|
BLAKE2b-256 | dad32d0c668eed5a29fda0f6de0cce56f275daaa7667424784c37d41dbbfaed3 |