Git Product home page Git Product logo

cangaroo's Introduction

cangaroo

An open source can bus analyzer with support for transmit/receive of standard and FD frames and DBC decoding of incoming frames

Supported interfaces:

  • CANable SLCAN interfaces on Windows and Linux
  • CANable 2 SLCAN interfaces on Windows and Linux with FD support
  • Candlelight interfaces on Windows
  • Socketcan interfaces on Linux
  • CANblaster socketCAN over UDP server with auto-discovery

demo1

written by Hubert Denkmair [email protected]

further development by Ethan Zonca [email protected]

Building on Linux

  • to install all required packages in a vanilla ubuntu 16.04:
    • sudo apt-get install build-essential git qt5-qmake qtbase5-dev libnl-3-dev libnl-route-3-dev cmake qt5-default libqt5serialport5 libqt5serialport5-dev libqt5charts5 libqt5charts5-dev
  • build with:
    • qmake -qt=qt5
    • make
    • make install

Building on Windows

  • Qt Creator (Community Version is okay) brings everything you need
  • except for the PCAN libraries.
    • Get them from http://www.peak-system.com/fileadmin/media/files/pcan-basic.zip
    • Extract to .zip to src/driver/PeakCanDriver/pcan-basic-api
    • Make sure PCANBasic.dll (the one from pcan-basic-api/Win32 on a "normal" 32bit Windows build) is found when running cangaroo, e.g. by putting it in the same folder as the .exe file.
  • if you don't want Peak support, you can just disable the driver: remove the line "win32:include($$PWD/driver/PeakCanDriver/PeakCanDriver.pri)" from src/src.pro
  • if you want to deploy the cangaroo app, make sure to also include the needed Qt Libraries. for a normal release build, these are: Qt5Core.dll Qt5Gui.dll Qt5Widgets.dll Qt5Xml.dll

Changelog

v0.2.4 unreleased

  • Add initial support for CANFD
  • Add support for SLCAN interfaces on Windows and Linux (CANable, CANable 2.0) including FD support
  • Add support for CANblaster socketCAN over UDP server with auto-discovery
  • Add live filtering of CAN messages in trace view

v0.2.1

  • make logging easier
  • refactorings
  • scroll trace view per pixel, not per item (always show last message when autoscroll is on)

v0.2.0 released 2016-01-24

  • docking windows system instead of MDI interface
  • windows build
  • windows PCAN-basic driver
  • handle muxed signals in backend and trace window
  • do not try to extract signals from messages when DLC too short
  • can status window
  • bugfixes in setup dialog
  • show timestamps, log level etc. in log window

v0.1.3 released 2016-01-16

  • new can interface configuration GUI (missing a suid binary to actually set the config)
  • use libnl-route-3 for socketcan device config read
  • query socketcan interfaces for supported config options
  • new logging subsystem, do not use QDebug any more
  • some performance improvements when receiving lots of messages
  • bugfix with time-delta view: timestamps not shown when no previous message avail

v0.1.2 released 2016-01-12

  • fix device re-scan ("could not bind" console message)
  • fix some dbc parsing issues (signed signals, ...)
  • implement big endian signals

v0.1.1 released 2016-01-11

  • change source structure to better fit debian packaging
  • add debian packaging info

v0.1 released 2016-01-10

initial release \o/

TODO

backend

  • support non-message frames in traces (e.g. markers)
  • implement plugin API
  • embed python for scripting

can drivers

  • allow socketcan interface config through suid binary
  • socketcan: use hardware timestamps (SIOCSHWTSTAMP) if possible
  • cannelloni support
  • windows vector driver

import / export

  • export to other file formats (e.g. Vector ASC, BLF, MDF)
  • import CAN-Traces

general ui

  • give some style to dock windows
  • load/save docks from/to config

log window

  • filter log messages by level

can status window

  • display #warnings, #passive, #busoff, #restarts of socketcan devices

trace window

  • assign colors to can interfaces / messages
  • limit displayed number of messages
  • show error frames and other non-message frames
  • sort signals by startbit, name or position in candb

CanDB based generator

  • generate can messages from candbs
  • set signals according to value tables etc.
  • provide generator functions for signal values
  • allow scripting of signal values

replay window

  • replay can traces
  • map interfaces in traces to available networks

graph window

  • test QCustomPlot
  • allow for graphing of interface stats, message stats and signals

packaging / deployment

  • provide clean debian package
  • gentoo ebuild script
  • provide static linked binary
  • add windows installer

cangaroo's People

Contributors

esclear avatar hubertd avatar normaldotcom avatar strupppi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cangaroo's Issues

Failure to install on Ubuntu 20

Hello,

I've been able to run qmake and make just fine, but when I run make install, I get the following:

make[1]: Entering directory '/home/my-name/cangaroo/src'
make[1]: Nothing to be done for 'install'.
make[1]: Leaving directory '/home/my-name/cangaroo/src'```

And I can't run `cangaroo` from the command line or anything as a result. If I copy over the `cangaroo.install` file from the Debian folder and execute that, Cangaroo opens, but `canifconfig` is broken and I think that causes issues.

Install prefix

Thanks for taking care of the project!

I have a question concerning the install prefix. Where is it defined? Common search results for qmake state it could be set using

qmake -set prefix /path/to/install
# or
qmake PREFIX=/path/to/install

Neither seem to work for me.
I'm a bit puzzled here, because the autogenerated Makefile is pretty complex, does not define a PREFIX like in many classical makefiles and the install target is referring to install_subtargets and so forth. Also, make install does not seem to do anything, actually.

Other than that, I'd like to report that I can build just fine on a recent Kubuntu Jammy 22.04.4 LTS. The only thing that needs changing in the build instructions for newer Ubuntus would be to remove qt5-default from the list of installed packages. This one does not exist anymore but also does not seem to be necessary.

Incorrectly DBC decoding little endian single.

Cangaroo output:

image

Vector CANalyzer output:

image

.dbc file:

 SG_ HeartbeatSigSingle : 16|32@1- (1,0) [0|0] "" Vector__XXX
 SG_ HeartbeatSigDec : 8|8@1+ (1,0) [0|255] "" Vector__XXX
 SG_ HeartbeatSigInc : 0|8@1+ (1,0) [0|255] "" Vector__XXX```

Data Filter Feature Request

Could we add data filtering based on Frame IDs or the Raw byte, data-in-position?

I am open to collaborate on the work

Failure to make on Ubuntu 20.04

Hello ,
I 'm trying to install at Ubuntu 20.04
qmake -qt=qt5 was fine
make didn't work

here is error message

driver/SocketCanDriver/SocketCanInterface.cpp:411:6: error: no declaration matches ‘bool SocketCanInterface::readMessage(CanMessage&, unsigned int)’
  411 | bool SocketCanInterface::readMessage(CanMessage &msg, unsigned int timeout_ms) {
      |      ^~~~~~~~~~~~~~~~~~
In file included from driver/SocketCanDriver/SocketCanInterface.cpp:22:
driver/SocketCanDriver/SocketCanInterface.h:79:18: note: candidate is: ‘virtual bool SocketCanInterface::readMessage(QList<CanMessage>&, unsigned int)’
   79 |     virtual bool readMessage(QList<CanMessage> &msglist, unsigned int timeout_ms);
      |                  ^~~~~~~~~~~
driver/SocketCanDriver/SocketCanInterface.h:52:7: note: ‘class SocketCanInterface’ defined here
   52 | class SocketCanInterface: public CanInterface {
      |       ^~~~~~~~~~~~~~~~~~
driver/SocketCanDriver/SocketCanInterface.cpp: In member function ‘virtual void SocketCanInterface::sendMessage(const CanMessage&)’:
driver/SocketCanDriver/SocketCanInterface.cpp:408:9: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
  408 |  ::write(_fd, &frame, sizeof(struct can_frame));
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[1]: *** [Makefile:1383: ../build/o/unix/SocketCanInterface.o] Error 1
make[1]: Leaving directory '/home/injae/work/cangaroo/src'
make: *** [Makefile:47: sub-src-make_first-ordered] Error 2

candlelight and Cangaroo

I use the Candlelight firmware for USB to CAN conversion and the Cangaroo software on Windows 10, but Cangaroo cannot find the CAN tool.
image
image

Qt creator in windows 10

When i import the project and build it i have a problem with libnl-3 package miss Can you help me please?

Windows build issue

Windows built failed with this error:
“sys/time.h”: No such file or directory

qt version:5.12.12

Trace view error

My device sends extended CANID packets. Protocol SLCAN.
"Aggregate by ID" by default is on.

  1. I switch it off. Trace view works ok.
  2. I switch it on. Trace view works ok.
  3. I switch it off. Here is an error. Trace view remains sorted by ID and trace becomes unusable.
    image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.