Decreasing sampling_frequency to 10 Hz renders Joulescope SW (Not Responding)

The Joulescope PC Software is persistently (even after power cycling JS220 & restarting my PC) in a state where it’s “Not Responding.” This started after I reduced the sampling_frequency (in Preferences->Device->setting) to 10 Hz and increased the buffer_duration to 1 day.

I’ve tried the following actions to get it out of this persistent state:

  1. Pressing “Reset to Defaults” button causes PC software to show “Not Responding” in title bar, even after waiting 5 minutes before killing task, power cycling the JS220, and restarting my computer. Next launch of PC software still shows sampling_frequency is set to 10 Hz.
  2. Changing buffer_duration back to 30 seconds causes PC software to show “Not Responding” in title bar, even after waiting 5 minutes before killing task, power cycling the JS220, and restarting my computer. However, the next launch of the Joulescope software showed that the buffer_duration is now set back to 30 seconds.
  3. Changing sampling_frequency to any other value other than 10 Hz causes PC software to show “Not Responding” in title bar, even after waiting 5 minutes before killing task, power cycling the JS220, and restarting my computer. Next launch of PC software still shows sampling_frequency is set to 10 Hz.
  4. Toggling from the Oscilloscope radio button to the Multimeter radio button by navigating to View → Oscilloscope causes the PC software to show “Not Responding” in title bar, even after waiting 5 minutes before killing task, power cycling the JS220, and restarting my computer. Next launch of PC software still shows the Oscilloscope radio button selected.

Software Equipment Used:

  • Joulescope UI version 0.10.12
  • Joulescope driver version 1.0.11

I have logs that I can send if that would help.

Hi @sconyers and welcome to the Joulescope forum. I suspect that you are running into issue #172. The existing 0.10.12 Joulescope UI does not prevent you from selecting RAM buffers that far exceed the capability of your host computer.

I recommend deleting the Joulescope UI configuration entirely. Close the Joulescope UI. Assuming you are on Microsoft Windows, use Windows file explorer and navigate to %LOCALAPPDATA%\joulescope\config. Select and delete joulescope_config.json in that directory. You can then start the Joulescope UI.

If you then want to configure 10 Hz, do that first. Then select 1 day.

@milberty I had to modify the json file with a text editor as follows to solve my issue. Selecting 10 Hz and then 1 day in preferences still caused the “Not Responding” issue.

      "Device/setting/buffer_duration": "1 day",
      "Device/setting/sampling_frequency": "10 Hz",

Hi @sconyers - I just tried to duplicate this by editing %LOCALAPPDATA%\joulescope\config1joulescope_config.json to 10 Hz downsampling and 1 day buffer duration. I confirm that I see lots of these errors:

Exception ignored in: 'pyjoulescope_driver.binding._on_cmd_publish2_cbk'
Traceback (most recent call last):
  File "C:\repos\Jetperch\pyjoulescope\joulescope\v1\device.py", line 431, in _on_stream
    b.insert(topic, value)
  File "C:\repos\Jetperch\pyjoulescope\joulescope\v1\stream_buffer.py", line 228, in insert
    b.add(value['sample_id'], value['data'],
  File "C:\repos\Jetperch\pyjoulescope\joulescope\v1\sample_buffer.py", line 162, in add
    self._buffer[ptr1:] = data[:k]
ValueError: could not broadcast input array from shape (0,) into shape (863417,)

What this error says is that no new data is available, which is then not handled well by the UI. I tried out a bunch of different settings, and it looks like the lowest output frequency that is currently well-supported by the UI with the JS220 is 5 kHz.

We are working to move downsampling onboard the JS220 and improve the Joulescope UI buffering, so what you are seeing is a temporary implementation. For the meantime, can you use 5 kHz or greater sampling rates? If you want longer durations (days, weeks, months), we recommend that you use the statistics (reductions) output, perhaps using the downsample_logging.py script.

Does this work for you?