tbruno25 / can-explorer Goto Github PK
View Code? Open in Web Editor NEWVisualize CAN Bus messages in real time
License: Other
Visualize CAN Bus messages in real time
License: Other
Hi Bruno
i'm getting back into the canbus hacking project again and trying to figure out this world :)
how is it possible to make a log file of the canbus entries from your canopy software?
i see the oscilloscope moving up and down and i use the volume on my stereo - how do i determine what the message packet are - as i see high and low but how do i know what the packet data is to tie this into my arduino project?
thank you
Hello and thank you for your posts on hacking the can bus. My Arduino Nano and MCP2515 are functioning properly and collecting data. I'd like to use can-explorer to help interpret that data but can't seem to find the proper settings for Interface and channel. The Ibus on my Saab runs at 33.33kbps. Thanks
I recently bought a OVMS and wonder if it is possible to connect with can-explorer to the network port streaming CAN from the ODB2 in GVRET format.
Currently the view
classes are responsible for both the UI creation and app interactions. The creation portion should be broken out and separated into it's own class ie: UIBuilder
.
Hi guys
After being side tracked i've come back to revisit this project.
I've build a laptop with ubutu on it and i've cloned the repository and run the install as per the instructions.
However when i run command: python canopy -i serial -c /dev/ttyACM0 -b 115200
i get the following error:
File "canopy.py", line 20
def init(self, buffer: defaultditct,, *args, **kwargs):
^
syntaxerror: invalid syntax
can anyone assist?
thank you
Hi, I found your medium article explaining can-explorer (FKA canopy?). I have CAN data coming in on vcan0 after following the directions at ICSim. I am able to view with both candump
and cansniffer
, but I can't figure out how to get your live plotter working. I can launch it using $ can-explorer
, but how do I configure the GUI settings for vcan0?
Sorry for the newb question, I'm looking through your docs but its not apparent to me, as your docs are mostly for the Python scripting interface, and don't mention ICSim/ vcan0.
Thanks for your help, really great code!
The test suite will fail if modules are collected and run in alphabetical order (default)
Notes:
test_gui.py
is run before all otherslog:
✦5 ❯ poetry run pytest -v
=============================================================================================== test session starts ================================================================================================
platform linux -- Python 3.10.12, pytest-7.4.4, pluggy-1.5.0 -- /home/tj/projects/can-explorer/.venv/bin/python
cachedir: .pytest_cache
rootdir: /home/tj/projects/can-explorer
plugins: order-1.2.1
collected 7 items
tests/test_app.py::test_app_must_apply_settings_before_running PASSED [ 14%]
tests/test_app.py::test_app_must_be_inactive_to_apply_settings PASSED [ 28%]
tests/test_controller.py::test_controller_starts_worker PASSED [ 42%]
tests/test_controller.py::test_controller_stops_worker PASSED [ 57%]
tests/test_controller.py::test_controller_populates_data_in_ascending_order PASSED [ 71%]
tests/test_gui.py::test_gui_launch_basic Fatal Python error: Segmentation fault
Current thread 0x00007f0881ffb640 (most recent call first):
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/dearpygui/dearpygui.py", line 9008 in set_axis_limits
File "/home/tj/projects/can-explorer/src/can_explorer/plotting.py", line 56 in update
File "/home/tj/projects/can-explorer/src/can_explorer/views.py", line 60 in update
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/wrapt/decorators.py", line 527 in _synchronized_wrapper
File "/home/tj/projects/can-explorer/src/can_explorer/controllers.py", line 116 in _worker_loop
File "/usr/lib/python3.10/threading.py", line 953 in run
File "/usr/lib/python3.10/threading.py", line 1016 in _bootstrap_inner
File "/usr/lib/python3.10/threading.py", line 973 in _bootstrap
Thread 0x00007f08827fc640 (most recent call first):
File "/usr/lib/python3.10/threading.py", line 324 in wait
File "/usr/lib/python3.10/queue.py", line 180 in get
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/can/interfaces/virtual.py", line 131 in _recv_internal
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/can/bus.py", line 127 in recv
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/can/notifier.py", line 126 in _rx_thread
File "/usr/lib/python3.10/threading.py", line 953 in run
File "/usr/lib/python3.10/threading.py", line 1016 in _bootstrap_inner
File "/usr/lib/python3.10/threading.py", line 973 in _bootstrap
Thread 0x00007f0882ffd640 (most recent call first):
File "/usr/lib/python3.10/threading.py", line 324 in wait
File "/usr/lib/python3.10/threading.py", line 607 in wait
File "/home/tj/projects/can-explorer/src/can_explorer/controllers.py", line 105 in _worker_loop
File "/usr/lib/python3.10/threading.py", line 953 in run
File "/usr/lib/python3.10/threading.py", line 1016 in _bootstrap_inner
File "/usr/lib/python3.10/threading.py", line 973 in _bootstrap
Thread 0x00007f08837fe640 (most recent call first):
File "/usr/lib/python3.10/threading.py", line 324 in wait
File "/usr/lib/python3.10/threading.py", line 607 in wait
File "/home/tj/projects/can-explorer/src/can_explorer/controllers.py", line 105 in _worker_loop
File "/usr/lib/python3.10/threading.py", line 953 in run
File "/usr/lib/python3.10/threading.py", line 1016 in _bootstrap_inner
File "/usr/lib/python3.10/threading.py", line 973 in _bootstrap
Thread 0x00007f0883fff640 (most recent call first):
File "/usr/lib/python3.10/threading.py", line 324 in wait
File "/usr/lib/python3.10/queue.py", line 180 in get
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/can/interfaces/virtual.py", line 131 in _recv_internal
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/can/bus.py", line 127 in recv
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/can/notifier.py", line 126 in _rx_thread
File "/usr/lib/python3.10/threading.py", line 953 in run
File "/usr/lib/python3.10/threading.py", line 1016 in _bootstrap_inner
File "/usr/lib/python3.10/threading.py", line 973 in _bootstrap
Thread 0x00007f08acc31000 (most recent call first):
File "/usr/lib/python3.10/selectors.py", line 416 in select
File "/usr/lib/python3.10/subprocess.py", line 2021 in _communicate
File "/usr/lib/python3.10/subprocess.py", line 1154 in communicate
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pyvirtualdisplay/util.py", line 19 in get_helptext
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pyvirtualdisplay/abstractdisplay.py", line 85 in __init__
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pyvirtualdisplay/xephyr.py", line 36 in __init__
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pyvirtualdisplay/display.py", line 54 in __init__
File "/home/tj/projects/can-explorer/tests/test_gui.py", line 47 in virtual_display
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/fixtures.py", line 895 in call_fixture_func
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/fixtures.py", line 1123 in pytest_fixture_setup
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_callers.py", line 103 in _multicall
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_manager.py", line 120 in _hookexec
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_hooks.py", line 513 in __call__
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/fixtures.py", line 1069 in execute
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/fixtures.py", line 693 in _compute_fixture_value
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/fixtures.py", line 607 in _get_active_fixturedef
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/fixtures.py", line 1045 in execute
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/fixtures.py", line 693 in _compute_fixture_value
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/fixtures.py", line 607 in _get_active_fixturedef
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/fixtures.py", line 1045 in execute
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/fixtures.py", line 693 in _compute_fixture_value
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/fixtures.py", line 607 in _get_active_fixturedef
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/fixtures.py", line 585 in getfixturevalue
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/fixtures.py", line 566 in _fillfixtures
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/python.py", line 1795 in setup
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/runner.py", line 494 in setup
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/runner.py", line 157 in pytest_runtest_setup
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_callers.py", line 103 in _multicall
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_manager.py", line 120 in _hookexec
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_hooks.py", line 513 in __call__
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/runner.py", line 262 in <lambda>
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/runner.py", line 341 in from_call
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/runner.py", line 261 in call_runtest_hook
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/runner.py", line 222 in call_and_report
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/runner.py", line 127 in runtestprotocol
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/runner.py", line 114 in pytest_runtest_protocol
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_callers.py", line 103 in _multicall
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_manager.py", line 120 in _hookexec
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_hooks.py", line 513 in __call__
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/main.py", line 350 in pytest_runtestloop
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_callers.py", line 103 in _multicall
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_manager.py", line 120 in _hookexec
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_hooks.py", line 513 in __call__
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/main.py", line 325 in _main
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/main.py", line 271 in wrap_session
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/main.py", line 318 in pytest_cmdline_main
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_callers.py", line 103 in _multicall
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_manager.py", line 120 in _hookexec
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/pluggy/_hooks.py", line 513 in __call__
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/config/__init__.py", line 169 in main
File "/home/tj/projects/can-explorer/.venv/lib/python3.10/site-packages/_pytest/config/__init__.py", line 192 in console_main
File "/home/tj/projects/can-explorer/.venv/bin/pytest", line 8 in <module>
Extension modules: dearpygui._dearpygui, numpy._core._multiarray_umath, numpy._core._multiarray_tests, numpy.linalg._umath_linalg, PIL._imaging (total: 5)
Segmentation fault (core dumped)
It would be nice to add a DBC file to parse data not only in messages, but in signal too.
When rapidly adjusting the buffer or height sliders the plot tab can get bogged down. This is likely due to the controller callbacks continuously creating and deleting each row.
A potential alternative could be to hide/show existing rows instead of creating/deleting
Would it be possible to adjust canopy to also allow for the visualization of recorded candumps instead of connecting to an interface? I have recorded several candumps and would like to analyze them using canopy for reverse engineering.
e.g. for candump message format
(1620458408.814144) can3 0C000003#0150140000000000
(1620458408.814144) can3 0CFF0303#6400000000000000
(1620458408.814144) can0 069#9102460028284600
Hi, Is it possible to use a logfile earlier created with candump?
I tried piping a cadump log to can-explorer in the terminal ..
Is there a protocol like virtual that allows opening or would i need some tool like can-replay?
Hi Tbruno25
First of all great design and thankyou for sharing with the community.
A question about which devices can be used?
Can we use an arduino with a canbus chip on it like you wrote up for canano and point to the arduino comm port? or do we have to use a specific device?
thank you
Currently a singleton can_explorer.app.app
is created on import and referenced as a global variable. This leads to false failures and potential strange behavior when testing as experienced in #28.
A better design pattern should be utilized and all global references removed. d3c50b6 should also be reverted as it's a temporary fix to avoid the behavior.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.