Git Product home page Git Product logo

gui_tool's People

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

Watchers

 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

gui_tool's Issues

CAN serial ports are renamed to "n/a" (by Qt?!)

Running on Mac OS 10.12.

For some reason, multiple ports are named "n/a", so only one shows up in the initial setup window. Doing a little bit of debugging, I tracked it down to the Qt import (?!?). Here's a minimal reproducible case:

import serial.tools.list_ports

for port, name, _ in serial.tools.list_ports.comports():
    print(port, name)

print("----------")

from PyQt5.QtCore import Qt
for port, name, _ in serial.tools.list_ports.comports():
    print(port, name)

On my machine, this prints

/dev/cu.Bluetooth-Incoming-Port n/a
/dev/cu.usbserial-LW1L5G7Q CANUSB - CANUSB
/dev/cu.usbmodem7AB068B1 Black Magic Probe
/dev/cu.usbmodem7AB068B3 Black Magic Probe
----------
/dev/cu.Bluetooth-Incoming-Port n/a
/dev/cu.usbserial-LW1L5G7Q n/a
/dev/cu.usbmodem7AB068B1 Black Magic Probe
/dev/cu.usbmodem7AB068B3 Black Magic Probe

This is a very unexpected interaction. I tried to work around by rearranging so that list_ifaces is defined before any Qt imports, but any subsequent Qt imports causes the renaming to happen.

Load custom DSDL

Hi,
I am trying to debug code that uses custom messages on UAVCAN, and I would like a way to load custom DSDL types in the GUI. Currently I did an ugly patch to do it (see below) but I would be interested in implementing a more complete feature if needed by others.

commit 2bc955ece0d4c699ac75755e6381cd7c2e1c1f09
Author: Antoine Albertelli <[email protected]>
Date:   Wed Mar 29 15:59:26 2017 +0200

    Ugly hack to load custom datatypes

diff --git a/uavcan_gui_tool/widgets/bus_monitor/window.py b/uavcan_gui_tool/widgets/bus_monitor/window.py
index 8b755ae..a5803d0 100644
--- a/uavcan_gui_tool/widgets/bus_monitor/window.py
+++ b/uavcan_gui_tool/widgets/bus_monitor/window.py
@@ -11,6 +11,7 @@ import time
 import os
 from functools import partial
 import uavcan
+uavcan.load_dsdl('.')
 from uavcan.driver import CANFrame
 from PyQt5.QtWidgets import QMainWindow, QHeaderView, QLabel, QSplitter, QSizePolicy, QWidget, QHBoxLayout, \
     QPlainTextEdit, QDialog, QVBoxLayout, QMenu, QAction

Not compatible with KDE Breeze dark theme

The GUI is not compatible with the KDE Breeze Dark Theme of KDE, i.e. I cannot read the values in the monitor:

grafik

Also the buttons have almost got no contrast.

Would be nice, if you could fix this.

Mebus

Add some documentation about plotter widgets

Now it is entirely unclear that plots can be scaled by holding the right click down and moving the cursor around. This is a powerful feature but it is difficult to discover.

Plotter filter for uavcan.protocol.debug.KeyValue

If you try to add filter for uavcan.protocol.debug.KeyValue message and filter out only messages with specified key you have to use filter:
msg.key.decode() == 'some_key'
instead of
msg.key == 'some_key'

Plotter time axis issue

Hey Pavel,

I think there is a bug in the plotting of data using Plotter. It seems as if the resolution on the time axis is not sufficient to resolve data which comes at higher rates.
Pl see the attached screen shots.
Fig1: Here the rate of the storm32.Status is set to 20 (ca 20 ms per message). As evident from the bus monitor every ca 20ms a message is received, and checking shows that each has a new data item. the plot looks as expected.
Fig2: Here the rate of the storm32.Status is set to 3 (ca 3 ms per message). As evident from the bus monitor every ca 3ms a message is received, and checking shows that each has a NEW data item. So, from the bus monitor everything seems perfect. However, the plot has these strange "steps/spikes". My first guess would be that for plotting a too low resolution for the time axis data is used.
The issue seems to start for rates below about 10-15 (clearly present at 10).

cheers, Olli

uavcanguitool-plotter-issue-02
uavcanguitool-plotter-issue-01

Bus Monitor export to file feature

This feature is needed and missing. A possible approach is to save all CAN frames into a human-readable (yet easily parseable) text file, one frame at a line, additionally extended with parsed UAVCAN message representation. For example:

RX  20:13:41.360935 1E016EF8    67 47                       gG          120 110 uavcan.protocol.GetNodeInfo
# <human-readable message uavcan.protocol.GetNodeInfo (request) in YAML format goes here>
RX  20:13:41.413945 1E01F881    C0                          .           1   120 uavcan.protocol.GetNodeInfo
RX  20:13:41.414946 1E0101F8    54 A7 32 00 00 00 00 80     T.2.....    120 1   uavcan.protocol.GetNodeInfo
RX  20:13:41.415946 1E0101F8    00 00 01 06 03 65 52 20     .....eR     120 1   uavcan.protocol.GetNodeInfo
RX  20:13:41.415946 1E0101F8    14 04 D3 18 A0 8F 59 00     ......Y.    120 1   uavcan.protocol.GetNodeInfo
# <human-readable message uavcan.protocol.GetNodeInfo (response) in YAML format goes here>

Plotter HIDE-SHOW button

Plotter may benefit a lot from adding a simple checkbox or button for each graph, which would toggle graph's visibility.
It is extremly useful if you plot more that 2 graphs at a time(sometimes even more that 1)

uavcan V1 compatible ?

If I understand gui_tool is for uavcan version 0 only.

If I am right I cannot find something about this in README file

Certificate error

When trying to create .exe file i get this error:

C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64
Using this signtool: C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64
Traceback (most recent call last):
File "setup.py", line 273, in
setup(**args)
File "setup.py", line 237, in setup
raise RuntimeError('Expected to find exactly one PFX in the outer dir, found this: %r' % pfx_path)
RuntimeError: Expected to find exactly one PFX in the outer dir, found this: []

Where i can find the .pfx file?
Thanks

UX improvements

  • Bus monitor: make the capture button pressed by default
  • If the local node is configured in anonymous mode, show some sort of non-intrusive hints suggesting to switch the node into the normal mode. A periodic message in the status bar could suit this purpose well.
  • Same applies to the dynamic node ID allocation server.
  • Indicate the name and all configuration parameters of the active interface somewhere.
  • Link the documentation page from the help menu

Launch GUI tool macOS

Hi,

I succeeded in installing the GUI tool via the MacPorts option given on your documentation, and I can see via pip freeze that it is indeed installed. However, I can't seem to figure out how to launch it. It is probably very simple, but I don't know how...

Thank you for your time.

Logger illumination

How do you like the idea of making code highlighting for a more beautiful display?

Now:
SharedScreenshot
My idea:
image

Sample code:
logger.info('Param get/set response: '+LoggerCustomColor.BOLD+'%s'+LoggerCustomColor.ENDC, e.response)

Here is the class itself LoggerCustomColor:

class LoggerCustomColor:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKCYAN = '\033[96m'
    OKGREEN = '\033[92m'

    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'

Multi-node configuration window

We need a GUI element allowing the user to configure a set of configuration parameters on multiple nodes identically.

For example, given multiple ESC, the user may need to assign parameters like motor profile identically for all of them, while keeping other parameters, such as UAVCAN node ID or ESC index, unchanged.

Linux launch

When I try to launch GUI tool on Linux using icon in menu, it launches and asks me what can adapter I would like to use. But then it can't get access to my adapter and fails.
So I have to launch it using console like this
sudo uavcan_gui_tool

But what is the point of having pretty icon in the menu then?

Error with switching to a new library name

In the file main.py on line 505, the uavcan library has not been changed to pyuavcan_v0.

Before:

InternalObjectDescriptor('uavcan', uavcan,
                                     'The main Pyuavcan module'),

Must be:

InternalObjectDescriptor('uavcan', pyuavcan_v0,
                                     'The main Pyuavcan module'),

Dependency PyQt5 uses GPL3 license

PyQt5 uses a more restrictive license (GPLv3) that requires developers share any source code for derivative works, under the same license.

gui_tool uses the MIT license, which does not impose the open-source restriction.

These licenses seem incompatible, since they both require that derivative works use the same license (MIT and GPL3 simultaneously), and my concern is that development projects that rely on gui_tool may be unaware that they are required by transitive license to open-source their code.

Off the top of my head, gui_tool should either remove the dependency on PyQt5, or else move to a GPL3 license, but both of these seem either burdensome technically, or problematic legally.

Is this a real problem? Is there a real solution?

Add support to select Socket can interfaces

I have an ubuntu system where the CAN interface appears as a network interface - can0 . The driver plumbs this as a socket can device and not a traditional UART/Serial device.

It would be helpful to have the gui_tool communicate over socket can on systems where that is the hardware interface to the UAVCAN device.

It would make for a good sample application/code on how to use UAVCAN programmatically over Socket can.

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.