Giter Site home page Giter Site logo

windelbouwman / lognplot Goto Github PK

View Code? Open in Web Editor NEW
77.0 7.0 11.0 961 KB

Plotting and logging of real-time data for desktop.

License: GNU General Public License v3.0

Rust 66.93% Python 29.97% Makefile 0.26% Batchfile 0.15% CMake 0.17% C++ 0.85% GDB 0.01% Assembly 0.04% C 0.25% C# 1.36% Shell 0.01%
visualization tracing gtk-rs cairo pyqt5 python rust plotting gui timeseries

lognplot's People

Contributors

phectori avatar timonterbraak avatar windelbouwman 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

lognplot's Issues

Option to link plot axis

Given several plots, it should be possible to link the x-axis to allow analysis across different plots.

Windows build: ease the pain

This issue aims to gather all troubles on windows when running lognplotgtk

Tasks:

  • Windows build procedure must be document
  • Several in app icons are missing on windows
  • Dragging a signal loses the mouse cursor
  • hdf5 support on windows
  • lognplot icon is missing in the top-left corner of the windows window

Any other issues?

RFC: simulink adapter

It would be cool to add a simulink adapter in some way.

I can see multiple ways on how this could work:

  • integrate lognplot client into a simulink block, and make this available as a library block
  • Use the simulink C-API to auto discover all signals in the model and subscribe somehow to changes

Any other ideas how this could work? What would be a good way to do this?

Feature: text logging

Figure a way to visualize text messages, like for example log message or state enums.

Add ads adapter

Add a ADS adapter which will download signals from beckhof ADS and sends them into the lognplot tool.

Crash when adding plots

The lognplotgtk application crashes when adding plots to the "extra" 2x2 plot window.

To reproduce:

  • Run application cargo run --release
  • Open extra plot window by clicking View -> New 2x2 plot window
  • Drag plots to all 4 plots in the new window.
  • Keep adding plots until it crashes (usually after 5 or 6 in total)

Output:

    Updating crates.io index
    Finished release [optimized] target(s) in 4.45s
     Running `/Users/frits/Documents/Projects/lognplot/target/release/lognplotgtk`
2020-03-04 20:29:50,819 INFO  [lognplotgtk] Starting lognplot GUI tool
2020-03-04 20:29:50,823 INFO  [lognplot::net::server] Server thread begun!!!
2020-03-04 20:29:50,823 INFO  [lognplot::net::server] Starting up server at port 12345!
2020-03-04 20:29:50,824 INFO  [lognplot::net::server] Server listening on [::]:12345
2020-03-04 20:29:50.936 lognplotgtk[56082:1894993] *** WARNING: Method userSpaceScaleFactor in class NSView is deprecated on 10.7 and later. It should not be used in new applications. Use convertRectToBacking: instead.

(<unknown>:56082): Gdk-WARNING **: 20:29:51.144: GdkQuartzDisplay does not implement the monitor vfuncs
Key! 65513
2020-03-04 20:29:57,273 INFO  [lognplotgtk::mainwindow] New window!
2020-03-04 20:30:06,201 INFO  [lognplotgtk::chart_widget] DROP ["META_chart_render_time_chart1"]
2020-03-04 20:30:14,775 INFO  [lognplotgtk::chart_widget] DROP ["META_chart_render_time_chart1"]
2020-03-04 20:30:16,954 INFO  [lognplotgtk::chart_widget] DROP ["META_chart_render_time_chart1"]
2020-03-04 20:30:20,572 INFO  [lognplotgtk::chart_widget] DROP ["META_chart_render_time_chart1"]
2020-03-04 20:30:22,448 INFO  [lognplotgtk::chart_widget] DROP ["META_chart_render_time_chart1"]
2020-03-04 20:30:24,512 INFO  [lognplotgtk::chart_widget] DROP ["META_chart_render_time_chart1"]
2020-03-04 20:30:24,512 INFO  [lognplotgtk::chart_widget] Signal META_chart_render_time_chart1 is already shown

(<unknown>:56082): Gdk-WARNING **: 20:30:24.514: losing last reference to undestroyed window

(<unknown>:56082): GLib-GObject-CRITICAL **: 20:30:24.514: g_object_ref: assertion 'old_val > 0' failed
[1]    56082 segmentation fault  cargo run --release

Test environment:

  • macOS Catalina 10.15.1
  • cargo 1.41.0

Add MQTT adapter

Add a python script which subscribes to all MQTT topics and pushes them on to the lognplot tool.

Points of interest:

  • what happens when a topic is added?

The file can be added to the demos folder, or in a new folder named adapters.

Add trigger signal type

To be able to trigger the plot to a certain signal, a trigger signal comes in handy. This signal should be usable in the plot to select as a trigger.

Drag'n'drop area non-responsive

On Fedora 31 with python3 (3.7.5) and python3-qt5 (5.13.1) the drop area is not working. The signals in the list get nicely updated, but I cannot plot them.

Support ipv4 / ipv6 everywhere

There are some issues with mixing ipv4 / ipv6.

Check:

  • lognplot rust ipv4 / ipv6 server support
  • lognplot rust client ipv4 / ipv6 support
  • lognplot python client support
  • lognplot python server support

For now ipv4 is used, but it should work seamless.

Storage backend using RocksDB database

The RocksDB library provides a persistent key value store. Keys and values are arbitrary byte arrays. The keys are ordered within the key value store according to a user-specified comparator function.

Implementation is in C++, there are rust and python binding available. The database is stored in a single directory (not single-file).

https://github.com/facebook/rocksdb/blob/gh-pages-old/intro.pdf?raw=true
https://github.com/facebook/rocksdb/wiki

Python bindings for rocksdb:
https://python-rocksdb.readthedocs.io/en/latest/index.html

Rust bindings for rocksdb:
https://github.com/rust-rocksdb/rust-rocksdb

Saving configuration of signal analysis look'n'feel

Another feature request:
gtkwave features a 'save' file that stores the configuration of the user interface at any savepoint. Restarting gtkwave with a previously saved configuration gives you an identical setup. This is useful for repetitive measurements / introspections, as it may be quite cumbersome to re-configure a complex aggregation of signals and plots. (For the insiders; referring to the embedded debugger UI.)
So, I think it would be nice to be able to define a subset of the available signals and store that selection, together with the visualization properties and corresponding plot configuration. The data source may have (slightly) changed, but its values are then projected into the same look'n'feel.

swvviewer on crates.io

Hi!

Do you plan to release the ITM code as a lib on crates.io somehow?
I am very interested in it! I could write it myself ofc, but not sure that's worth it, but I have no interest in a binary crate :)
Also I only have interest in the protocol itself, as we have all the debug probe stuff down already.
Do you think this is a possibility?

Best,
Noah

how to properly use rust network client

I'm trying to write a program that uses the TcpClient, but I had to modify mod.rs to expose it properly in order for my application to use it. The modification required is:

diff --git a/lognplot/src/net/mod.rs b/lognplot/src/net/mod.rs
index bd488aa..b20e910 100644
--- a/lognplot/src/net/mod.rs
+++ b/lognplot/src/net/mod.rs
@@ -9,7 +9,7 @@
 //! - Read data from file
 //! - Demo data (random values)
 
-mod client;
+pub mod client;
 mod payload;

Am I doing something wrong here (I'm not a very experienced rust programmer)? What is the proper way for an application to use the TcpClient structure to communicate with the GUI?

Dependend crate futures-io 0.3.1 does not compile

I am not yet too familiar with rust to find out how to explicitly try an older version of futures-io. That would likely work as it seems to be an indirect dependency.
Or is my Rust to rusty..? I guess 1.39 is not too old yet...

Support for mixed-signal plotting?

I read through the list of related tools in the README. Since this is still low-profile, I take the liberty of writing down 2 feature request / wishes. Those are the things that at least partially lack in either one of the tools mentioned.

  • mixed-signal support; gtkwave to some extend can plot both digital and analog signals, but has poor support of handling the analog signals
  • math operations; this will likely hurt performance, and I am not sure if it combines well with the massive-data-support already built-in. But, in practice it is very useful to apply some math operation to the signal before plotting; either scaling the (analog) signal, or masking (bits) of a digital signal.

Maybe there is a better way to gather feature requests?

New Release to crates.io?

In order to use the Rust client in external projects, we need a new release to crates.io because the current 0.1 release do not have the TcpClient.

Thank you

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.