Git Product home page Git Product logo

telemetryviewer'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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

telemetryviewer's Issues

Checksum, sync word not needed for binary messages over TCP or UDP

When using TCP or UDP for binary telemetry, neither the sync word or checksum is needed since both TCP and UDP will only deliver correct, complete packets. These really only make sense for serial connections, for TCP/UDP it's just excess characters.

Also, it would be nice if UDP supported having multiple COMPLETE messages in the same UDP packet. ie: if you have a 24 byte telemetry packet you could put a lot of these in a 1440 UDP packet. This helps avoid network congestion.

This tool has been really useful, thanks for releasing it!

No tiles in version 0.8

Hello!

I try to use version 0.8 but when I setup the connection I have no tiles.
I'm using java version "1.8.0_301" Win 10 home 64bit.
With versin 0.6 it is working.

best regards

Stefan

[Feature Request] - Periodic data export

Hi,

Great software, loving the new version!
I have however noticed a few bugs which result in the program crashing (and subsequently losing all the data - unless there is a secret data stash I dont know about in a temp folder).
Would there be a way to periodically write to an export file, like every sample/second/minute/hour etc to prevent data loss. I'm collecting data over periods up to 24 hours. This would be a really convenient addition!

Thanks

Please add maven or gradle build file to solution

There are dependencies included on your system that are not part of the project and/or build system.

These dependencies are currently located on your system @ C:/Users/FarrellF/Google Drive/Eclipse Workspace.

Thank you can keep up the great work!

Weird open GL dialog on opening telemetry viewer

This is on a Dell 5510 laptop which has both Intel graphics and Nvidia graphics built in.
Prior to testing, everything Java was uninstalled and Java 181 with JRE 181 was installed.
This is Windows 10 version 1709

When I launch the telemetry viewer I get a dialog box titled: OpenGL ES Error
and has the text "Can't find the name of Intel ICD OpenGL driver"
with an "ok" button.

If you click ok the box goes away briefly and comes back, if you click ok 8 times the Telemetry Viewer finishes launching and runs normally.

It doesn't stop you from using the viewer, it's just annoying.

P.S. This doesn't happen on my dell desktop.

Beg for Readme.md...

Would ist be possible to get a readme.md for noobs as well?
e.g. on how to run it on Raspbian?

[Feature Request] - Custom X-Axis from data stream

Amazing tool, best Ive found yet so keep up the good work!
Would love a new chart type that allows to use a custom x-axis from the datastream IE a chart that is not time dependant bound. This allows very useful cyclic like plots to be generated to look at repeatability and variances. I looked at the source code to see how I might do this but its way above my pay grade...
Like this:
image

Export Time?

Hi Farrell,

On the exporting CSV, is it possible to also export the time stamp or sample count in each line? I just want it as another variable in the line.

Thank you!

Suggestion: Oscilloscope-like chart.

Great tool, indeed!
Just an idea... after certain amount of sampling points or time, plotting to start from the beginning of the chart. May be it will be useful for Arduino or other projects, imitating oscilloscope.

Change STL model for Quaternion Chart

I am using the program to visualize the results of my university project (a single motor UAV), transmitted by an ESP32 over UDP. Works flawlessly! For the later presentation of the project (the exam), it would be nice to be able to change the STL of the monkey to something else (3D-CAD model of my drone).

I have tried downloading your project and built a version with a different STL file using Eclipse. However, after building the project, nothing is showing in the quaternion chart (even though data is still being received in the other charts). I am new to developing Java, thus I have not a single clue what might be the problem. Does the STL file need to be in some specific format for it to work? Maybe I am missing some build settings?

Hope you would consider adding this feature or helping me out!
Thanks for your great work

Problem in WidgetHistogramYaxisType.java - Unlikely argument type for equals(): String seems to be unrelated to JComboBox<String>

Eclipse is showing me that there is a "problem" (rather than an error) here: https://github.com/farrellf/TelemetryViewer/blob/master/Telemetry%20Viewer/src/WidgetHistogramYaxisType.java#L243

Description Resource Path Location Type
Unlikely argument type for equals(): String seems to be unrelated to JComboBox<String> WidgetHistogramYaxisType.java /TelemetryViewer-mgj2/src line 243 Java Problem

The line is

if(axisTypeCombobox.equals(type))

I think that it should be

if(axisTypeCombobox.getSelectedItem().toString().equals(type))

but I may be wrong. .? Either way, as it currently stands, the types don't match in the equals().


There's a reason why it compiles without error, but the "problem" still shows up, which seems to be explained in this answer to the question Elegant way to overcome Unlikely argument type for equals(): Stream seems to be unrelated to String.

"Save Layout" function is not working in Binary Mode.

The function "Save Layout" is not working in Binary Mode (it works in CSV but not in Binary).
When you click on "Save Layout" button in binary mode, a empty file is generated.
It is really boring to reconfigure all layout each time i restart the software.
Could you correct this bug please. Thank you.

suggestion: digital time clock lookalike card

i use a real time clock module to import time to the telemetry viewer, now i use 3 dail chards one for hours, one for minutes, one for seconds see the first image.

please can you make a simple digital clock chard? like the second image?

thanks:)

first image
image

second image
image

Display delay when using UDP.

Hi, I’m trying to using UDP with CSV.
When I receive data at first connection. Always fine.
But once when I tried save or disconnect and reconnect.
Display of telemetry having lag.
When press disconnect, sometime appear “UDP packet error”
Did you notice this phenomena.

Serial UART connection with CSV is fine. No problem.

My system condition is
Windows10 Version 1909 (OS Build 18363.959)
Java Version 8 (build 1.8.0_251-b08)

UDP packet transfer with Arduino mkr1000 WifiUDP.h.

Yutaka Suzuki

Suggestion: additional WebSocket server connection option

Thanks for that impressive tool.
Using that nice tool inside a company network behind a proxy connecting an IoT device in the internet is not possible at the moment. For such an scenario, connecting to an outside WebSocket server using standard http ports would be a fine solution to receive realtime data from a device - without to configure a fixed IP of the TelemetryViewer host in the device.
In a new branch (ws-client) in my fork of your famous application I have done a first implementation to add an optional WebSocket client connecting a configurable WebSocket server. It is working fine, but it has a small design beauty mistake at the moment: It uses currently an additional (non-jetty) WebSocket library :-(, ... because I was already familiar with that one. This could be approved later. My interest is to hear your opinion about such a new connectivity feature.
In the repo dist directory an all-in-one jar file can be used for testing.
Kind regards.

Different sampling rates

Great project!!
I am using it in an application where Arduino read 3 type of sensors each with a different sampling frequency (1hz, 50hz 200hz).
Your input is a single stream of data that should contain all sensors reading.
It will be nice to have the possibility to transfer a stream of different records that contain timeframe and values for each set of sensor as , for example , is done using Mavlink protocol.

[Problem] Problem with "inf" or "nan" in serial stream

I may be wrong but I think there needs to be some error trapping for "inf" or "nan" in the serial string. When this happens due to a programatic error or poor data processing then it seems to stall or crash Telemetry which makes sense that it might but it would be nice to have this error checking built in.

Output GUI Tools

It will be very useful to add tools to write to serial output using gui tools.

UI and layout save breaks while setting up charts

This software is working great for me once it is setup. However I am having problems with it while entering/editing the layout. Sometimes after adding a new chart to the layout the save button stops working. Ie you click it, it highlights, but the save dialogue does not appear.

Also, sometimes when creating/editing a chart the checkboxes next to some items in the dialog will not be there.

When the program gets into this state sometimes it will let you save the layout but the file will be corrupt and I get an error when I try to reload it.

Workaround is to save really often and restart a lot (19 times on my last project) I can usually only add one or two charts before seeing this problem.

Version issue? Haven’t seen any other reports of this, maybe it’s me?

Windows 10 1706
Java 8. 161 (latest)
Running v4 jar from your website (not github)
4K monitor
2 nVidia quadro cards k5200 k4200

It’s running perfect as long as I don’t bring up any dialogs.

If it helps I can try other java versions or test prerelease code.

serial send

would be nice to be able to send since you can't send with anything else without disconnecting.

[Feature Request] - Ability to add annotations

It would be nice to add manual annotations to the time line in a similar way that bitfields do.
Click the point of interest, type your text note, maybe the option to reposition.
That's all, thanks for the awesome effort so far !

Question on max input size

Hi
First this is a great viewer for telemetry. So this is more of a question than an issue, well maybe.

We are probably pushing this to the limits but we are passing it 36 floats for a total length of 1116 chars on input to the viewer. I can't seem to get it to display anything. Was wondering if its me or there is some sort of max size on the number of input chars?

Thanks
Mike

[Feature Request] Allowing user to select a STL model for use in the quaternion chart

Hi, I absolutely love this software and appreciate the time and effort you spent in developing and improving it for so many years! So firstly, a massive thank you.

The quaternion chat is a great feature that I expect to use a lot to visual the orientation of my robots quickly and easily. Could you please add the ability to select an STL model from disk when creating the chart so that more relevant 3D models can be used (especially for professional demos)?
Since I don't know any Java I'm not confident in editing the source code myself but I did find the monkey.stl file being read into the code on line 51 of src/OpenGLQuaternionChart.java. Is it enough if I change that to some other STL file that I place in "resources/" to be able to use a different model in quaternion graphs? If so, how do I build the project into a JAR file after that change? Thank you.

Kind Regards,
Vishal

Java errors

Hi, I tried multiple Java versions, both 32 and 64 bit and I'm having problems with all of them.
With java version JRE-9.0.1:

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.NoClassDefFoundError: com/jogamp/opengl/GLCapabilitiesImmutable
        at Main.main(Main.java:16)
        ... 5 more
Caused by: java.lang.ClassNotFoundException: com.jogamp.opengl.GLCapabilitiesImmutable
        at java.base/java.net.URLClassLoader.findClass(Unknown Source)
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
        ... 6 more

With JRE 1.8.0_151

2017-10-29 14:47:52.904:INFO::main: Logging initialized @6553ms to org.eclipse.jetty.util.log.StdErrLog
Exception in thread "main-AWTAnimator#00" java.lang.NullPointerException
        at LogitechSmoothScrolling.enableSmoothScrolling(LogitechSmoothScrolling.java:101)
        at Main$1.windowGainedFocus(Main.java:35)
        at java.awt.Window.processWindowFocusEvent(Unknown Source)
        at java.awt.Window.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.SequencedEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
com.jogamp.opengl.util.AnimatorBase$UncaughtAnimatorException: java.lang.RuntimeException: com.jogamp.opengl.GLException: Caught GLException: Method "glGenFramebuffers" not available on thread AWT-EventQueue-0
        at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:92)
        at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:452)
        at com.jogamp.opengl.util.Animator$MainLoop.run(Animator.java:204)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.RuntimeException: com.jogamp.opengl.GLException: Caught GLException: Method "glGenFramebuffers" not available on thread AWT-EventQueue-0
        at com.jogamp.common.util.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:58)
        at jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:103)
        at jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:201)
        at com.jogamp.opengl.Threading.invokeOnOpenGLThread(Threading.java:202)
        at com.jogamp.opengl.Threading.invoke(Threading.java:221)
        at com.jogamp.opengl.awt.GLCanvas.display(GLCanvas.java:505)
        at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:81)
        ... 3 more
Caused by: com.jogamp.opengl.GLException: Caught GLException: Method "glGenFramebuffers" not available on thread AWT-EventQueue-0
        at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
        at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
        at com.jogamp.opengl.awt.GLCanvas$12.run(GLCanvas.java:1438)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: com.jogamp.opengl.GLException: Method "glGenFramebuffers" not available
        at jogamp.opengl.gl4.GL4bcImpl.glGenFramebuffers(GL4bcImpl.java:14042)
        at OpenGLTimeDomainSlice.<init>(OpenGLTimeDomainSlice.java:23)
        at OpenGLTimeDomainChart.drawChart(OpenGLTimeDomainChart.java:163)
        at OpenGLChartsRegion$1.display(OpenGLChartsRegion.java:205)
        at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
        at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
        at com.jogamp.opengl.awt.GLCanvas$11.run(GLCanvas.java:1424)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
        ... 16 more
java.lang.NullPointerException
        at LogitechSmoothScrolling.enableSmoothScrolling(LogitechSmoothScrolling.java:101)
        at Main$1.windowGainedFocus(Main.java:35)
        at java.awt.Window.processWindowFocusEvent(Unknown Source)
        at java.awt.Window.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.SequencedEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

Error when execute Telemetry Viewer on Ubuntu 20.04

Hello. Great work on Telemetry Viewer. Such a good software.
I recently work on Ubuntu 20.04, and when i tried to execute .jar file of Telemetry Viewer 0.6, i got this message :

Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61)
Caused by: com.jogamp.opengl.GLException: Profile GL2 is not available on null, but: [GLProfile[GLES1/GLES1.hw], GLProfile[GLES2/GLES3.hw], GLProfile[GL2ES1/GLES1.hw], GLProfile[GL4ES3/GL4.hw], GLProfile[GL2ES2/GL4.hw], GLProfile[GL4/GL4.hw], GLProfile[GLES3/GLES3.hw], GLProfile[GL4/GL4.hw], GLProfile[GL3/GL4.hw], GLProfile[GL2GL3/GL4.hw]]
at com.jogamp.opengl.GLProfile.get(GLProfile.java:991)
at com.jogamp.opengl.GLProfile.get(GLProfile.java:1004)
at OpenGLChartsRegion.(OpenGLChartsRegion.java:108)
at Main.main(Main.java:31)
... 5 more

I have no idea about this error. Do you have any ideas to solve this problem? It would be great if you have one. Thank you.

[Feature Request] Time axis from timestamp in the data?

In some of my applications the data doesn't come out at a fixed frequency. However the data source has a real time clock and can put a time stamp in the data it sends.

Could the graphs be setup to use this time stamp as the X axis of charts? This would be very useful when the data doesn't come on a regular schedule. The device can send time in just about any format with microsecond accuracy. It could be sent as real time in some format or something simpler like seconds (or microseconds) since startup in either a float or integer format.

I've been using your tool for some time and it is really great! My latest project is using it to visualize 3d camera tracking data from an HTC VIVE VR tracking system. In this setup the data can come at a fixed sampling rate but in some cases the sampling rate is variable based on the 3D scene being visualized.

Again - Exception in thread "main" java.lang.reflect.InvocationTargetException

Reference: https://github.com/farrellf/TelemetryViewer/issues/30
Hi,
Back in November of last year I ran into this problem (link above). To recap, I was getting a crash when running TelemetryViewer on startup. I was using a development version of Mesa (v: 4.3 Mesa 19.3.0-devel (git-ffb0d3a 2019-09-29 bionic-oibaf-ppa) compat-v: 3.1) but found that if I used the standard Linux Mint version at that time of Mesa 19.0.8 the problem went away.

Time has marched on and the standard Linux Mint version is now Mesa 19.2.8 using the automatic updates. I now have the same problem.

I would guess that anyone else that tries TelemetryViewer on Linux would have the same problem.

Something between Mesa 19.0.8 and 19.2.8 has changed and causes the problem.

In the mean time I'm going to try and roll back Mesa to 19.0.8 as a work around.
Regards,
Gord_W

Possible to recieve broadcasted UDP messages?

I'm connecting my PC to a ESP8266 i STA-mode, to be able to connect multiple PCs and recieve UDP messages I'm trying to use brodcast UDP. I'm not getting this to work, are there any reasons that Telemetry Viewer is not recieving these messages maybe they are filtered??

Serial over Bluetooth (Rfcomm)

Hello

Big thanks for the great job you have done.
I want to plot data that comes through Bluetooth from Arduino. I am able to receive data on /dev/rfcomm0. But unfortunately, this device node will not be enumerated in Telemetry GUI. I went through the source code and saw that the following function is responsible for it: SerialPort.getCommPorts().

Could please give me some hint on how to solve this issue?

Best Regards,

Calculating binary checksum?

I've had some problems getting binary packets to work right. Does anyone have an example of how to correctly calculate the checksum for the binary packet, I'm probably messing up something very simple.

Exception in thread "main" java.lang.reflect.InvocationTargetException

Hi,
I'm eager to try your Telemetry Viewer, but have run into a problem. This is what I get and sorry I don't know anything about Java. If I can provide more info, let me know.
Gord_W

gordon@linuxAMD:~$ java -jar /home/gordon/Downloads/TelemetryViewer_v0.6.jar
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61)
Caused by: java.lang.InternalError: XXX0 profile[1]: GL3bc -> profileImpl GL4bc !!! not mapped
at com.jogamp.opengl.GLProfile.computeProfileMap(GLProfile.java:2071)
at com.jogamp.opengl.GLProfile.initProfilesForDeviceCritical(GLProfile.java:1954)
at com.jogamp.opengl.GLProfile.initProfilesForDevice(GLProfile.java:1875)
at com.jogamp.opengl.GLProfile.initProfilesForDefaultDevices(GLProfile.java:1842)
at com.jogamp.opengl.GLProfile.access$000(GLProfile.java:80)
at com.jogamp.opengl.GLProfile$1.run(GLProfile.java:230)
at java.security.AccessController.doPrivileged(Native Method)
at com.jogamp.opengl.GLProfile.initSingleton(GLProfile.java:216)
at com.jogamp.opengl.GLProfile.getProfileMap(GLProfile.java:2297)
at com.jogamp.opengl.GLProfile.get(GLProfile.java:988)
at com.jogamp.opengl.GLProfile.get(GLProfile.java:1004)
at OpenGLChartsRegion.(OpenGLChartsRegion.java:108)
at Main.main(Main.java:31)
... 5 more

I'm running Linux Mint with the latest update of Java V8.

System:
System: Host: linuxAMD Kernel: 4.15.0-66-generic x86_64 bits: 64 compiler: gcc v: 7.4.0
Desktop: Cinnamon 4.2.4 wm: muffin dm: LightDM Distro: Linux Mint 19.2 Tina
base: Ubuntu 18.04 bionic
Machine: Type: Desktop Mobo: MSI model: FM2-A55M-E33 (MS-7721) v: 2.0 serial:
UEFI: American Megatrends v: 11.6 date: 02/12/2015
CPU: Topology: Quad Core model: AMD A8-5600K APU with Radeon HD Graphics bits: 64 type: MCP
arch: Piledriver rev: 1 L2 cache: 2048 KiB
flags: lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm bogomips: 28746
Speed: 1519 MHz min/max: 1400/3600 MHz Core speeds (MHz): 1: 1397 2: 1397 3: 1396
4: 1397
Graphics: Device-1: AMD Trinity [Radeon HD 7560D] vendor: Micro-Star MSI driver: radeon v: kernel
bus ID: 00:01.0 chip ID: 1002:9904
Display: x11 server: X.Org 1.19.6 driver: ati,radeon unloaded: fbdev,modesetting,vesa
resolution: 1920x1080~60Hz
OpenGL: renderer: AMD ARUBA (DRM 2.50.0 / 4.15.0-66-generic LLVM 9.0.0)
v: 4.3 Mesa 19.3.0-devel (git-ffb0d3a 2019-09-29 bionic-oibaf-ppa) compat-v: 3.1
direct render: Yes

Version 0.7 hangs at startup on macOS High Sierra (10.13.6)

Hi,

Great project, thanks!

I am trying to run the v0.7 jar, but it hangs (with a spinning beachball) after creating the main window. It's hanging before it manages to resize the window to fullscreen and before painting any actual content, if that is of any help?

There are no errors reported in the console, only the message:

[HINT   ]   Start by connecting to a device or opening a file by using the buttons below.

I've tried various JREs/JDKs, and get the same results.

I am able to run v0.6 (and earlier) without any issues.

— Have you any suggestions please?

Cheers.

Add ability to see underlying values

As a user, I'd like to see the underlying textual values coming in from the communication port either on the screen as a table widget or saved to a file.

This feature would allow a user to review values coming from the communication device and can also contain additional information (i.e. like a debug statement that is not necessarily value based that should be displayed on the graph).

Telemetry Viewer Stops logging.

Telemetry viewer I believe runs out of buffer space and stops logging and freezes. Is it possible to log that data and save it after buffer reaches near limit or a set limit then clears buffer, save and continue logging.This only gives me a few hours of logging. I'm trying to fix the issue but I've never coded in Java before.

Thank you.

Required version of JRE

I didn't see it noted anywhere what version of JRE works with TelemetryViewer.
Installing JRE 9x64 on my Win10x64 machine would not respond to opening the JAR.

Uninstalled JRE 9 and installed JRE 8x64 and it came right up.

Looking forward to working with it, it looks like an impressive piece of work!
It would be nice for Arduino IDE like behavior is there was a terminal window where non data messages ( debug text ) was displayed. Also as I saw as already an issue - a write terminal window so the device under observation could be passed outgoing messages to alter behavior on command.

Mac Issue

Great software ! Just a couple of issues.

I am running on a Mac with macOS - High Sierra 10.13.3. The widget controls in the top right of graphs do not work. I cannot close or change the setting.

Also have just upgraded to Java 9.0.4 and the software will not run anymore. Message reads "The Java JAR File "TelemeteryViewer_v0,4 could not be launched."

Help with these two issues would be great. Thank you

Export doesn't work till some data is captures

Maybe I'm missing something, but it seems like the "export" button isn't available till some data is captured. It would be nice if it was available all the time so that when you enter the layout for a new telemetry message you could save it right away without having to capture some data first.

I think in older versions export was always enabled.

v0.8 GUI doesn't load

v0.7 GUI will load and I can create graphs by clicking and dragging, but v0.8 is completely blank with not gridlines. I can add a connection, but nothing displays. I updated my graphics drivers, Java, and JRE.
Any advice?

Option for constant data range on y-axis instead of auto ranging

Hi, This is really great, perfect for robot development!

I would REALLY like to see an option for constant y-axis range. This is really important because when you are across the room, it would be really good to know where the values are in the range that you specify without having to look at the axis values, you just know from the position of the line. Thanks!

P.S. Could you add horizontal bar charts for time data so you could more easily compare several values visually at the same time. ONE more suggestion - some simple signal processing options such as averaging, LPF, HPF - so the arduino doesn't have to :)

is it possible to read the data from the socket ?

Hi,

is it possible to read the data from the socket ? In my usage I have data coming through UDP, it could be in the same format.

If you don't have this, could you please point me to the area of the code which would need modification to send the data for processing.

Thank you

log string data and print as lable

just read csv string or number value and print as lable

i want print hex values and message strings.

Ex: printf("%d,%s\n\r", timestamp, "lamp off")

Support for 32 bit int, 64 bit float (binary) would be nice

I have some high precision IMUs (accelerometer, gyro) that output 32 bit int or 64 bit (double) float format, it would be nice to have support for either of these formats. These IMUs actually need that much precision, without it you can't see the low level noise when the device is sitting still.

One of the IMUs returns a 32 bit integer, which you have to convert to double and multiply by 0.000244148075808 to get acceleration in Gs. Has to be done with doubles or the low-level noise disappears. Would be nice to be able to take a 32 bit int and apply this conversion in TelemetryViewer

Version 0.7 - gluegen-java-src.zip missing from lib

In the TelemetryViewer_v0.7_src_20200717.zip, from the blog download page, in the lib directory, the gluegen-java-src.zip file is missing.

in TelemetryViewer_v0.6_src_20190908.zip, all four files are present in the lib directory:

  • gluegen-java-src.zip
  • gluegen-javadoc.zip
  • jogamp-fat-java-src.zip
  • jogl-javadoc.zip

As you state in issue #40 that you have used a newer version of the OpenGL library then this could be an issue with the library itself, rather than an omission on your part.

Is there a key that will clear all the data?

Is there a function to clear all the captured data and start fresh? Sometimes when testing stuff I just want to throw all the data out before starting the next run so the data doesn't get mixed together. So far the only way I see to do this is re-import the settings file or restart the program.

Will Telemetry Viewer work on Raspberry PI?

I wanted to install TelemetryViewer on a Raspberry PI so I could just plug it into whatever TV was handy and look at telemetry there. I have the standard Java that's included with PI linux and get these errors when I try to start up.

It appears to be complaining about the GL version but I'm afraid I'm not enough of a Java guy to understand exactly what's wrong. Can anyone help?

libEGL warning: DRI2: failed to authenticate
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.InternalError: Available GLVersions not set for EGLGraphicsDevice[type .egl, v1.4.0, connection decon, unitID 0, handle 0x60feb8f8, owner true, NullToolkitLock[obj 0xc88a32]]
at com.jogamp.opengl.GLProfile.initProfilesForDeviceCritical(GLProfile.java:1952)
at com.jogamp.opengl.GLProfile.initProfilesForDevice(GLProfile.java:1875)
at com.jogamp.opengl.GLProfile.initProfilesForDefaultDevices(GLProfile.java:1842)
at com.jogamp.opengl.GLProfile.access$000(GLProfile.java:80)
at com.jogamp.opengl.GLProfile$1.run(GLProfile.java:230)
at java.security.AccessController.doPrivileged(Native Method)
at com.jogamp.opengl.GLProfile.initSingleton(GLProfile.java:216)
at com.jogamp.opengl.GLProfile.getProfileMap(GLProfile.java:2297)
at com.jogamp.opengl.GLProfile.get(GLProfile.java:988)
at com.jogamp.opengl.GLProfile.get(GLProfile.java:1004)
at OpenGLChartsRegion.(OpenGLChartsRegion.java:99)
at Main.main(Main.java:18)
... 5 more

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.