Code Monkey home page Code Monkey logo

pyjoulescope_ui'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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

pyjoulescope_ui's Issues

[Feature Request] Keyboard annotation interaction

Would like to see annotations be dropped with the keyboard as in the Saleae Logic software:

Pressing the number keys attaches measurement markers to the cursor, dropped when clicked. Pairs are attached to 1 and 2, 3 and 4, and so on. Maybe 1 drops the single annotation, and 2 and 3 drop the dual? Something like that.

[Feature Request] Move markers on click & drag

Platforms: all
Joulescope UI 0.7.0

Customer request: Click and drag should move the marker. The existing software uses click/release, move, click/release.

Click & drag is used to pan the view. We could make it modal based upon whether the cursor is over a marker, but modal behaviors can cause confusion. However, if the marker activates (perhaps by becoming a brighter color) as you hover over it, then it could use click and drag.

[Feature Request] Export raw data

Maybe it is already possible, but I have not found out how. Is there a simple way of dumping the measurements using the gui? Using the cli? Or is the .jls format easily convertible / readable?

p2p statistic does not accumulate

Platform: Win10
Joulescope UI version: 0.6.10

When the Multimeter view Accumulate button is activated, all statistics should be computed over the entire duration. p2p should be max - min. However, p2p does not appear to be calculated correctly.

Here is an example:
image

USB connectivity problems on macOS

Setup: MacBook Pro running Mojave connected to Joulescope hardware through the provided A-B USB cable. Joulescope UI 0.4.6.

If I plug in JS hardware after starting the app, no readings come through. Quitting the app and restarting fixes the issue. Not a big deal.

My MBP sleeps after a period of keyboard inactivity. When I awaken it, the app no longer updates readings. A restart of the App fixes the problem.

Thanks for the report, John!

Wishlist - automatic power on

I keep my joulescope permanently plugged into my power supply, so having the output disabled by default at startup can get a bit annoying. Every morning I plug a new prototype or candidate for repair into the supply, and wonder why it isn't lighting up. This is before the coffee hits, so it takes a moment to realize that I need to open the software to get it to turn on.

Presumably this is for safety... But it would be great if there was a non-volatile firmware setting that would make it turn on by default.

JLS export always assumes 15V range

When exporting data using dual markers, the JLS file always presumes 15V range. The JLS file must be configured for 5V range when the captured data was collected with the 5V range.

Widget sizes not always restored correctly on start

Win 10 x64
0.7.0

The 0.7.0 software introduced the ability to save and restore the previous session, including widget sizes. We have one report that the Single Value widget took up most of the display, even though that was not how the software was on the previous exit. We have not been able to duplicate yet, and the reporter has not seen it again either.

We are using QT's saveState and restoreState functions to adjust these dockwidget sizes. I have a suspicion that normal window resizing events and the restoreState are interacting somehow.

However, single value widgets really should be fixed height. This doesn't solve the problem for other widgets, but it at least means that a single value widget doesn't take up most of the space.

Memory leak on abnormal Joulescope disconnect

Joulescope UI 0.6.8
Win10x64

Under normal conditions, the Joulescope UI memory usage is good. However, under some abnormal disconnection situations, the Joulescope UI does not free the device (or at least the stream buffer instance). Joulescope UI normally takes about 900 MB RAM usage with a 30 second buffer. I was able to forcefully disconnect and reconnect (by quickly unplugging the USB connector). By repeating this twice, I now observe 2427 MB RAM usage.

References:

The Preferences Dialog "Help" button does nothing

Version: 0.8.6
Platforms: all

Clicking on the Preferences dialog "help" button does not do anything.

This button was added to describe how to use Preferences, which could certainly use some explanation. Great idea, but the help was never written.

"General/data_path" needs better error handling

Platform: Win 10 x64
Joulescope UI version: 0.7.0

A customer reported an issue with 0.6.8 where cfg["General"]["data_path"] was null in the JSON file:

{
  "General": {
    "data_path": null,
    "update_check": true,
    "log_level": "INFO"
  },
...

which caused the application not to start with the error:
Failed to execute script main

The actual issue was accessing the variable which failed path validation.

How does 0.7.0 work? 0.7.0 has many changes to preferences, but I tested and found weaknesses. We should improve the Joulescope UI error checking and error handling for bad path values.

The configuration file is stored to:  "c:\User{username|\AppData\local\joulescope\config\joulescope_config.json "
And the corresponding setting is:
"General/data_path": "C:\Users\mliberty\Documents\joulescope",

If I set this to null and then start, the application still runs.  However, selecting File -> Open does not work:

Traceback (most recent call last):
  File "D:\repos\Jetperch\pyjoulescope_ui\joulescope_ui\main.py", line 983, in on_recording_open
    self, 'Open Joulescope Recording', self._path, 'Joulescope Data (*.jls)')
  File "D:\repos\Jetperch\pyjoulescope_ui\joulescope_ui\main.py", line 354, in _path
    if not os.path.isdir(path):
TypeError: _isdir: path should be string, bytes or os.PathLike, not NoneType

If I close the application, set "General/data_path" to "" (empty string), run, then select File -> Open, it still doesn't work, and I get:

Traceback (most recent call last):
  File "D:\repos\Jetperch\pyjoulescope_ui\joulescope_ui\main.py", line 983, in on_recording_open
    self, 'Open Joulescope Recording', self._path, 'Joulescope Data (*.jls)')
  File "D:\repos\Jetperch\pyjoulescope_ui\joulescope_ui\main.py", line 355, in _path
    os.makedirs(path, exist_ok=True)
  File "D:\venv\joulescope\lib\os.py", line 221, in makedirs
    mkdir(name, mode)
FileNotFoundError: [WinError 3] The system cannot find the path specified: ''

[Feature Request] Time Information for Statistics

Joulescope 0.5.0 running on 64-bit Windows 10.

Please consider adding time information for the following data:

  1. Oscilloscope view, Energy
  • The cumulative energy in the Control-pane should have elapsed time next to it in order to help estimating device energy consumption and show how long energy measurement has been running since last Clear energy.
  • The elapsed time should be updated as cumulative energy is updated in order to keep them in sync.
  • The elapsed time should be reset together with cumulative energy when user selects Tools | Clear energy.
  • Bonus: It would also be very helpful to show also cumulative mAh along with the cumulative energy and elapsed time. This would help with battery capacity estimation.
  1. Oscilloscope view, Trace statistics
  • The oscilloscope trace statistics for each trace should also display time span for the data. Now it is a bit difficult to determine what is the time span of the statistics calculated.
  1. Multimeter view
  • Multimeter view should also show elapsed time. Especially during accumulation, the elapsed time is essential.

The dual markers statistics are missing Δt and ∫

All platforms
0.7.0

The waveform view allows the user to add dual markers. The dual markers display the statistics over the selected window. Starting with 0.7.0, the statistics no longer include the delta time for the window or the integral:

image

The Joulescope UI used to display both of these statistics. This computation must have been lost when we restructured the markers to prevent crashes in 0.7.0. Future releases should include these statistics.

Waveform show_min_max "fill" sometimes does not work

Platform: Win 10 x64, Ubuntu 18.04 LTS, mac OS Mojave 10.14.6
Joulescope UI version: 0.7.0

In the waveform view, selecting show_min_max "off", "fill", "off", "fill" does not show fill, only the mean line. You need to select "lines" before "fill" for the fill to display.

Crash with Arduino Nano 33 BLE target

Joulescope UI 0.6.8
Win10 x64

After upgrading to 0.6.8 from 0.6.3, frequent (every few minutes) Joulescope UI crashes occur. When uploading programs to an Arduino Nano 33 BLE attached as the load, the Joulescope UI crashes frequently. See forum for full description and log files.

After inspecting the logs, the common error is:

Windows fatal exception: access violation

but the error occurs in different locations.

Differences between pyjoulescope 0.6.3 and 0.6.8.

Crash locations in the provided logs

File "site-packages\joulescope\driver.py", line 342 in open
joulescope_20191114_204349_6204.log - immediately at start
joulescope_20191114_203423_9856.log - immediately at start
joulescope_20191114_201445_15440.log - on_statusUpdateTimer timeout
joulescope_20191114_193211_11196.log - on_statusUpdateTimer timeout
joulescope_20191114_192145_9784.log - on_statusUpdateTimer timeout

File "site-packages\joulescope\driver.py", line 343 in open
joulescope_20191114_200553_21728.log - on_statusUpdateTimer timeout

File "site-packages\joulescope\driver.py", line 262 in parameters (deepcopy)
joulescope_20191114_205414_10172.log - immediately at start
joulescope_20191114_191138_11904.log - on_statusUpdateTimer timeout, then on open
joulescope_20191114_211037_17152.log - immediately at start

File "joulescope_ui\main.py", line 421 in on_statusUpdateTimer (formatTime in logging)
joulescope_20191114_202630_21940.log - immediately at start
joulescope_20191114_201716_26564.log - on_statusUpdateTimer timeout

File "site-packages\joulescope\usb\device_thread.py", line 93 in _cmd_process_all (formatTime in logging)
joulescope_20191114_195217_14164.log - after device thread hung

The joulescope_20191114_201716_26564.log is an example of on_statusUpdateTimer then crash

INFO:2019-11-14 21:25:50,739:driver.py:1159:joulescope.driver:scan_for_changes 1 devices: 0 added, 0 removed
INFO:2019-11-14 21:25:50,739:main.py:965:joulescope_ui.main:current device = Joulescope:000491, False
INFO:2019-11-14 21:25:50,739:main.py:971:joulescope_ui.main:_device_scan done
INFO:2019-11-14 21:25:50,987:main.py:495:joulescope_ui.main:Device notify
INFO:2019-11-14 21:25:50,987:main.py:951:joulescope_ui.main:_device_scan start
INFO:2019-11-14 21:25:50,988:driver.py:1159:joulescope.driver:scan_for_changes 1 devices: 0 added, 0 removed
INFO:2019-11-14 21:25:50,989:main.py:965:joulescope_ui.main:current device = Joulescope:000491, False
INFO:2019-11-14 21:25:50,989:main.py:971:joulescope_ui.main:_device_scan done
INFO:2019-11-14 21:25:51,087:main.py:495:joulescope_ui.main:Device notify
INFO:2019-11-14 21:25:51,087:main.py:951:joulescope_ui.main:_device_scan start
INFO:2019-11-14 21:25:51,088:driver.py:1159:joulescope.driver:scan_for_changes 1 devices: 0 added, 0 removed
INFO:2019-11-14 21:25:51,088:main.py:965:joulescope_ui.main:current device = Joulescope:000491, False
INFO:2019-11-14 21:25:51,088:main.py:971:joulescope_ui.main:_device_scan done
ERROR:2019-11-14 21:26:15,764:device_thread.py:151:joulescope.usb.device_thread:device thread hung: control_transfer_in - FORCE CLOSE
INFO:2019-11-14 21:26:15,764:device.py:659:joulescope.usb.winusb.device:WinUsbDevice.close
INFO:2019-11-14 21:26:15,764:device.py:385:joulescope.usb.winusb.device:endpoint stop
INFO:2019-11-14 21:26:15,765:driver.py:590:joulescope.driver:streaming done(0, )
INFO:2019-11-14 21:26:17,764:device_thread.py:93:joulescope.usb.device_thread:DeviceThread._cmd_process_all close
INFO:2019-11-14 21:26:17,764:device_thread.py:123:joulescope.usb.device_thread:DeviceThread.run flush
INFO:2019-11-14 21:26:17,764:device_thread.py:125:joulescope.usb.device_thread:DeviceThread.run done
ERROR:2019-11-14 21:26:17,764:main.py:421:joulescope_ui.main:statusUpdateTimer failed - assume device error
Traceback (most recent call last):
  File "joulescope_ui\main.py", line 407, in on_statusUpdateTimer
  File "site-packages\joulescope\driver.py", line 819, in status
  File "site-packages\joulescope\driver.py", line 761, in _status
  File "site-packages\joulescope\usb\device_thread.py", line 197, in control_transfer_in
  File "site-packages\joulescope\usb\device_thread.py", line 159, in _post_block
OSError
INFO:2019-11-14 21:26:17,765:main.py:873:joulescope_ui.main:_device_recover: start
INFO:2019-11-14 21:26:17,765:main.py:902:joulescope_ui.main:_device_change remove
INFO:2019-11-14 21:26:17,765:main.py:833:joulescope_ui.main:device_close Joulescope:000491
INFO:2019-11-14 21:26:17,766:view.py:431:joulescope.view:close
INFO:2019-11-14 21:26:17,766:view.py:183:joulescope.view:View.run done
INFO:2019-11-14 21:26:17,766:driver.py:661:joulescope.driver:stop : streaming=True
WARNING:2019-11-14 21:26:17,766:device_thread.py:139:joulescope.usb.device_thread:response queue not empty
INFO:2019-11-14 21:26:17,766:device_thread.py:130:joulescope.usb.device_thread:DeviceThread.post(read_stream_stop) when thread not running
ERROR:2019-11-14 21:26:17,766:driver.py:461:joulescope.driver:USB stop failed
Traceback (most recent call last):
  File "joulescope_ui\main.py", line 407, in on_statusUpdateTimer
  File "site-packages\joulescope\driver.py", line 819, in status
  File "site-packages\joulescope\driver.py", line 761, in _status
  File "site-packages\joulescope\usb\device_thread.py", line 197, in control_transfer_in
  File "site-packages\joulescope\usb\device_thread.py", line 159, in _post_block
OSError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "site-packages\joulescope\driver.py", line 459, in close
  File "site-packages\joulescope\driver.py", line 663, in stop
  File "site-packages\joulescope\usb\device_thread.py", line 203, in read_stream_stop
  File "site-packages\joulescope\usb\device_thread.py", line 146, in _post_block
OSError: DeviceThread not running
INFO:2019-11-14 21:26:17,770:main.py:1191:joulescope_ui.main:_device_stream(False)
INFO:2019-11-14 21:26:17,770:main.py:1183:joulescope_ui.main:_device_stream_stop when no device
INFO:2019-11-14 21:26:17,770:main.py:590:joulescope_ui.main:_accumulators_zero_last
INFO:2019-11-14 21:26:17,770:main.py:878:joulescope_ui.main:_device_recover: done
INFO:2019-11-14 21:26:17,773:scrollbar.py:181:joulescope_ui.oscilloscope.scrollbar:set_display_mode(buffer)
INFO:2019-11-14 21:26:17,779:main.py:951:joulescope_ui.main:_device_scan start
INFO:2019-11-14 21:26:17,780:driver.py:1159:joulescope.driver:scan_for_changes 1 devices: 1 added, 0 removed
INFO:2019-11-14 21:26:17,780:main.py:891:joulescope_ui.main:_device_change add Joulescope:000491
INFO:2019-11-14 21:26:17,780:main.py:965:joulescope_ui.main:current device = disable, True
INFO:2019-11-14 21:26:17,780:main.py:967:joulescope_ui.main:device_scan activate first device Joulescope:000491
INFO:2019-11-14 21:26:17,780:main.py:833:joulescope_ui.main:device_close disable
INFO:2019-11-14 21:26:17,780:main.py:590:joulescope_ui.main:_accumulators_zero_last
INFO:2019-11-14 21:26:17,781:main.py:670:joulescope_ui.main:device_open Joulescope:000491
INFO:2019-11-14 21:26:17,781:main.py:590:joulescope_ui.main:_accumulators_zero_last
INFO:2019-11-14 21:26:17,781:device_thread.py:174:joulescope.usb.device_thread:open
INFO:2019-11-14 21:26:17,781:device_thread.py:116:joulescope.usb.device_thread:DeviceThread.run start
INFO:2019-11-14 21:26:17,782:device.py:659:joulescope.usb.winusb.device:WinUsbDevice.close
INFO:2019-11-14 21:26:17,782:device.py:620:joulescope.usb.winusb.device:WinUsbDevice.open
INFO:2019-11-14 21:26:17,782:device.py:649:joulescope.usb.winusb.device:is_high_speed = True
INFO:2019-11-14 21:26:17,782:device.py:650:joulescope.usb.winusb.device:interface_settings = InterfaceDescriptor(
    length=9,
    descriptor_type=4,
    interface_number=0,
    alternate_setting=0,
    num_endpoints=2,
    interface_class=255,
    interface_sub_class=0,
    interface_protocol=0,
    interface=0)
Windows fatal exception: access violation

Thread 0x00000d90 (most recent call first):
  File "site-packages\joulescope\usb\winusb\device.py", line 784 in process
  File "site-packages\joulescope\usb\device_thread.py", line 119 in run
  File "threading.py", line 865 in run
  File "threading.py", line 917 in _bootstrap_inner
  File "threading.py", line 885 in _bootstrap

Thread 0x00003940 (most recent call first):
  File "site-packages\joulescope\usb\winusb\win32_device_notify.py", line 119 in _run_window
  File "threading.py", line 865 in run
  File "threading.py", line 917 in _bootstrap_inner
  File "threading.py", line 885 in _bootstrap

Current thread 0x000057f4 (most recent call first):
  File "site-packages\joulescope\driver.py", line 342 in open
  File "joulescope_ui\main.py", line 677 in _device_open
  File "joulescope_ui\main.py", line 895 in <lambda>
  File "joulescope_ui\main.py", line 968 in _device_scan
  File "joulescope_ui\main.py", line 975 in on_deviceScan
  File "joulescope_ui\main.py", line 1551 in run
  File "joulescope_ui\command.py", line 49 in on_cmd
  File "joulescope_ui\__main__.py", line 28 in <module>

Add charge unit preference

All platforms
0.7.0

Charge is currently displayed in the SI units of coulombs (C). However, many applications prefer to use amp-hours (Ah). We should create a preference that the user can select, and then ensure that it is respected throughout the UI, including the displays for:

  • Single value
  • Waveform statistics (right of curve area)
  • Dual markers

Adding the same waveform twice causes unexpected behavior

Platform: Win10 x64 with Joulescope UI 0.6.6
Duplicated: yes
Reported by: haly-tom on the forum.

To duplicate this issue, open the Waveform view. click SettingsAddcurrent, even through the current waveform is already displayed. The software displays a second current waveform but the first becomes inactive. If you then right-click on the original current waveform's y-axis, the new waveform becomes hidden. Attempting to hide the original current waveform again has no effect.

See video: https://imgur.com/a/JpxGCfJ

Solution: The Joulescope UI should not allow the same waveform to be added multiple times. The SettingsAdd button should only display the remaining waveforms. When a waveform is being added, the software should also check if the waveform is already added. If so, remove it before adding the new one.

Add "Waveform Control" signal buttons

Version: 0.8.6
Platforms: all

The existing system uses right-click on the y-axis → hide to hide a signal. Then click settings → Add → {signal} to add. The Waveform Control widget should have a quick way to show/hide the most frequently used signals: current, voltage, power.

Waveform markers draw region is too large

Win10 x64
Joulescope UI 0.7.0

The waveform widget supports single markers and dual markers, which are drawn over the waveform. These markers draw correctly, but they are not sufficiently bounded. They draw over the y-axis and the view statistics at the right. The expected behavior is that the markers are constrained to the waveform plot region only. This GIF shows the current behavior:
marker_draw_region_incorrect

Wishlist - toolbar button for toggling the min/max lines

One of the most frequent operations for me is turning the min/max lines off as required. They are super-handy when you need to see the peaks, and super irritating when you don't. It would be nice if the toggle for them wasn't buried in the settings menu - maybe a hotkey or toolbar button?

Memory leak while recording [Ubuntu only]

Version: 0.8.6
Platform: Ubuntu 18.04 LTS

Description
When recording streaming data from a Joulescope, the memory utilization increases until linux eventually kills the Joulescope UI processes. Before linux kills the process, it does try to use swap space (if available) which renders the machine inoperable until linux finally gives up and kills the Joulescope UI process.

Note that the Joulescope UI works great on Ubuntu with streaming data. The memory leak only occurs when recording.

Steps to reproduce
In my testing, I duplicated this issue twice. It does take some run time.

  • Connect a Joulescope and start the Joulescope UI.
  • Select View → Oscilloscope
  • Verify that the UI displays live data from the connected Joulescope
  • Press the Record button in the Control Widget
  • Wait. For my machine with 16 GB, crashes in about 20 minutes.

Expected behavior
The memory usage should be constant during recording as with Win10 and macOS.

Possible causes
The new DataRecorder or the multiprocessing implementation may be holding on to the data somehow. Ubuntu is also still using Python 3.6 where Win10 and macOS are on Python 3.7.

[Feature Request] Add horizontal markers to waveform display

All platforms
0.7.0

The Joulescope UI software has supported vertical markers in the waveform widget for quite some time. These single and dual markers compute many useful statistics. However, we sometimes want to measure the y-axis values on the graph without estimating using the grid lines. The software should support single and dual horizontal markers for the y-axis. The display can be much simpler for the y-axis. Single markers only need to display their y-axis value. Dual markers should display their y-axis value and the delta between the markers.

Ui_DeveloperDockWidget is missing

When trying to run from source I found that the following widgets are missing:

  • Ui_DeveloperDockWidget
  • Ui_ErrorWindow
  • Ui_mainWindow
  • Ui_ControlDockWidget

It looks like they might be in the .gitignore under these files:

  • control_widget.py
  • developer_widget.py
  • error_window.py
  • main_window.py

Profile change does not update sampling frequency

Version: 0.8.3
Platforms: All platforms

Observed behavior

  1. When the user selects a different sampling rate, the new sampling rate is not automatically applied until the user disables the active device then re-enables it.
  2. When the user selects a profile with a different sampling rate, the sampling rate is not automatically applied.

Expected behavior
The sampling rate should be updated immediately, even if that means stopping and then restarting data streaming.

Error with pip install

I'm trying to install the joulescope-ui on OSX high sierra. I get the following error when using pip3 install joulescope-ui

Collecting joulescope-ui
  Downloading https://files.pythonhosted.org/packages/c5/cb/09bd4abd9645199378453501f3d18b955329199f9729880c0f18624e219b/joulescope_ui-0.4.5.tar.gz (155kB)
    100% |████████████████████████████████| 163kB 1.6MB/s
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/d2/zsp27n4j6sg3mpr9zztg2w0m0000gn/T/pip-install-ak5j6mhr/joulescope-ui/setup.py", line 33, in <module>
        from pyside2uic import compileUi
    ModuleNotFoundError: No module named 'pyside2uic'

    ----------------------------------------

If I then manually install pyside2 using pip3 install pyside2 and re-run pip3 install joulescope-ui, I get the following error:

Collecting joulescope-ui
  Using cached https://files.pythonhosted.org/packages/c5/cb/09bd4abd9645199378453501f3d18b955329199f9729880c0f18624e219b/joulescope_ui-0.4.5.tar.gz
ERROR: Packages installed from PyPI cannot depend on packages which are not also hosted on PyPI.
joulescope-ui depends on pyqtgraph@ https://github.com/jetperch/pyqtgraph/tarball/c8548b3246d29ee84a1ef76ebf63a5bb0e39c917#egg=pyqtgraph-0.11.0.dev0requests>=2.0.0

I'm using pip 19.1.1 with python 3.6.

Prepackaged distribution fails to run on Linux Mint 18.1 (Ubuntu 16.04.x LTS)

The prepackaged version seems to be compiled against libc6 2.25 but on my system only version 2.23 is available.

$ ./joulescope_launcher 
[19895] Error loading Python lib '/home/ristomatti/Tools/joulescope_0_4_6/libpython3.6m.so.1.0': dlopen: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by /home/ristomatti/Tools/joulescope_0_4_6/libpython3.6m.so.1.0)
$ apt show libc6
Package: libc6
Version: 2.23-0ubuntu11

Also running pip3 install -r requirements.txt fails but I guess that is to be expected since the system provides only python 3.5. I was able to run it from source after installing python 3.7.0 using pyenv though, so libc6 version didn't seem to matter.

Frequent crashes when removing markers

I don't have a reliable recipe for replicating this, but in 0.6.8 I get frequent crashes when removing markers, if I have stopped and started the capture in-between marker operations and zoom changes. Usually with multiple marker pairs active.

Disclaimer - entirely possible its a graphics driver issue on my end.

Dragging the endpoints of the top x-axis zoom bar does not work correctly

Platform: Windows 10 x64 running Joulescope UI 0.6.6

While using a Joulescope in live streaming mode, dragging on the main section of the blue bar works correctly. However, if you drag the yellow bar then it stops expanding/contracting around the mid-point then picks up again right at the end:
https://imgur.com/a/wkdRDsz

Thank you to Haly-Tom for reporting this issue over on the forum:
https://forum.joulescope.com/t/ability-to-specify-buffered-data-size/122/5

Exporting does not work on 0.8.3

When trying to export on 0.8.3 it does not save the data.

I have tried uninstalling and reinstalling, restarting machine .

I reverted back to 0.7.0 and was able to export data.

Optimize JLS file responsiveness for small files

Version: 0.8.3 and earlier
Platforms: all

The JLS file format is capable of storing and accessing long data captures with reasonable performance. However, it is not too much faster with small files than it is with big files. For files that can fit entirely in RAM, the UI should just load them into RAM. The UI could have a preference for the maximum amount of data to load into RAM.

Save annotations applied to JLS recordings

Affects: All platforms
Versions: 0.7.0

The Joulescope UI records live Joulescope data to JLS files. The user can then open the JLS files using the Joulescope UI, explore the data, and add annotations. The UI should allow the user to save these annotations and last view range alongside the original JLS file. When the JLS file is opened again, the UI should restore the last view range and add all annotations.

The annotations are currently limited to single markers and dual markers, but this feature would apply to any future annotations added to the UI.

Add File→Open Recent

Version: 0.8.3
Platforms: All

Behavior: The Joulescope UI has no easy way to open recordings that were recently opened.

Request: The Joulescope UI should keep track of the last N (N=10) files. When the user selects File→Open Recent, a submenu should expand allowing the user to select from the most recent files.

Preferences "Reset" does not work

Version: 0.8.3
Platforms: All

Observed Behavior
Completely adjust the Widgets/Multimeter font-color and background-color and exit preferences. Open preferences again and click on Widgets/Multimeter. Click "Reset to Defaults". The right-hand pane goes blank. Clicking on Widgets/Multimeter shows the original values.

Alternatively, clicking "Reset" above does not immediately update the right-hand pane, but does if you click away and back. However, the actual multimeter colors are not updated.

Expected Behavior
Clicking "Reset to Defaults" or "Reset" for the profile should completely restore the factory default preference values.

Dual marker statistics incorrect when viewing JLS file and Δt < 20 ms

The statistics values displayed by dual markers should always be correct. However, in 0.6.2 and earlier, if you open a JLS file, then place the markers so that they do not contain a 10 ms reduction window (possible for any duration under 20 ms), then the resulting statistics will be incorrect. Note that the statistics displayed to the right of each waveform which are computed over the entire display ARE correct.

[Feature request] Dual marker times are not legible

Win 10 x64 (but applies to all)
Joulescope UI 0.7.0

When dual markers are close together, the absolute position time of each marker, the marker flag, and the delta time do not draw well:
image

Many applications do not care about absolute time, so we could add an option to hide absolute time. Then, we just have to worry about the Δt. Δt should always be on top of the markers, but it appears to be behind one of them. When the markers are too close together, we also do not have enough space. If absolute time is disabled, could display Δt to the right.

Power consumption prediction

Can we have an option/view that can predict how long the device that is being test can be operate?

Example: A user enter 2500 mAh (a single AA battery), and the software will predict how long the device will be last (hours/days) base on the inputs from JouleScope.

I think this will simplify the process of calculation for the developer/engineer to design low power device. Thanks!

In waveform, y-axis right click → Range → auto should immediately autoscale

With 0.6.2 on Win10x64 in waveform view, the y-axis autoranging should be immediately applied when selected. Currently, the y-axis scale stays the same until any refresh, such as x-axis zoom or pan.

To repeat:

  1. Open Joulescope UI
  2. Select ViewOscilloscope
  3. Pause streaming or open a JLS file.
  4. Right-click on the y-axis, select Rangemanual.
  5. Keep mouse over y-axis and use scroll wheel to zoom in.
  6. Right-click on the y-axis, select Rangeauto

Joulescope UI does not start

Version: 0.6.8 upgrading to 0.8.3
Platform: Win10

Received a report from a Joulescope customer who was previously running 0.6.8 and then upgraded to 0.8.3. The first run of 0.8.3 worked great. The second run did not work:

image

The customer solved this by deleting the %LOCALAPPDATA%\joulescope directory. The Joulescope UI now runs correctly.

I attempted to duplicate this process, but it worked correctly. We did test upgrade from 0.7.0 to 0.8.3 as part of the release process, but we did not go back to 0.6.8 to 0.8.3.

Regardless, the Joulescope UI should probably just ignore & log bad configuration files. It could perhaps store them off so that the user can troubleshoot manually.

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.