Miniscope v4
Miniscope v4 is a PC/Win32 application intended to work as a generic GUI for oscilloscopes. Key feature of miniscope v4 is virtually unlimited number od data channels.
Miniscope v4 is a continuation of miniscope v3. Miniscope v3 may still be preferred for single-channel devices because of its lower complexity (both user interface/GUI and device dll interface).
Similar to miniscope v3 application is portable (although specific input device may require driver), native and built as static (no 3rd party library dependencies).
- 2010.12.12 Initial release. This is straightforward conversion of miniscope 3 into
multichannel-capable oscilloscope. All features of previous application should be kept, but user
interface may be irritating.
miniscope_v4_0_0.7z- recommended version 4.0.5 or 4.0.9
sig_test_dll_v4_0_0.7z
- 2010.12.20 Added localization (traslation) capability with GNU gettext.
See translations page for details.
miniscope_v4_0_1.7z
- common ancestor for every form with call to TranslateComponent(),
- detection of available languages at startup,
- initial Polish translation (would not be maintained probably, only for demonstration/testing purposes).
- 2011.01.14 miniscope_v4_0_2.7z
- FIXED: incorrect values (labels) at horizontal grid when zooming in/out,
- changed zoom behavior: program calculates zoom to get 1:2:5/div value sequence when zooming in/out; hold Shift while zooming for more precise changes,
- added current (taking zoom into account) volts/div and time/div (or frequency/div) display,
- Settings: added "Write log to file" switch,
- added markers for 0V (GND) level for each channel,
- added View/Plot menu to toggle visibility of plot elements.
- 2011.01.29 miniscope_v4_0_3.7z
- device interface (version number incremented)
- added (optional) function to enable/disable each channel,
- added (optional) function to change trigger position (pre-/post-trigger),
- added pre-/post-trigger control to user interface,
- display: added trigger position and voltage markers,
- refactoring: merged struct S_DATAFRAME (meta-data) with class Data (actual samples) to make easier to keep data presentation consistent,
- updated sig_test.dll source,
- dll library to connect with single-channel DMA-based AT91SAM7S hardware (firmware armscope_dma_20100224.7z): armscope_dma_1ch_dll.7z,
- 2-channel firmware for AT91SAM7S device (demonstrational purposes only - it's supposed to run on single-channel hardware, so there is no i.e. gain control for second channel, only difference from single-chanel firmware is ADC configuration, but it should be fairly easy to extend): armscope_dma_2ch.7z,
- dll library compatible with 2-channel AT91SAM7S firmware armscope_dma_2ch_dll.7z.
- device interface (version number incremented)
- 2011.02.03 Updated for current miniscope v4 bus_pirate.dll.
Also miniscope_v4_0_4.7z - trivial but very useful interface changes:
- plot: smooth trace moving (OnMouseMove, configurable option, enabled by default),
- plot: trace vertical zoom using mouse scroll.
- 2011.02.09 Updated bus_pirate.dll and
bundled bus_pirate.dll + miniscope binaries,
hopefully fixing hangup when closing application.
Update: apparently problem still exists, this is probably same elusive problem as encountered with library version for v3. If you see this problem and want to help with debugging and/or fix it I'd recommend adding additional logging function to library (writing data directly to file) to catch hangup moment (I would suspect Disconnect() function). Unfortunately Code::Blocks debugger seems to not work when debugged dll library and host application are located in different directories. - 2011.02.12 miniscope_v4_0_5.7z
- FIXED: not working recorder mode (added custom assignment operator for Data::Channel).
- 2011.06.23 miniscope_v4_0_6.7z
- changed date/time formatting to YYYY-mm-dd HH:MM and added capture timestamp to statistics window,
- part of main window separated into separate window, TfrmControl to reduce complexity,
- changed device interface (version number incremented: v12,
currently only miniscope v2a/v2b libraries are updated) - more standard and more functional trigger handling
- added "Run" function: acquisition start/stop, this would make it easier to work with large buffer size and slow sampling speed combination (previously there was no method to stop frame acquisition in progress),
- added "SetTriggerMode" function: setting trigger mode to single, normal, auto or (for devices capturing data in real time such as miniscope v2 or sound card) continuous,
- manual trigger ("force trigger") button is now active in every trigger mode except continuous (if dll has exported "ManualTrigger" function)
- lots of small fixes (but as usual some new bugs are expected),
- updated (but as always: not tested) Code::Blocks/MinGW library for Bus Pirate, bus_pirate_dll_20111129.7z.
- 2012.04.21 miniscope_v4_0_7.7z
- FIXED: occasional incorrect "Auto fit X" behavior after switching sampling frequency,
- FIXED: problem with switching to spectrum analyzer mode,
- FIXED: not working trigger source selector.
- 2012.04.22 miniscope_v4_0_8.7z
- FIXED: plot not updated when using frame prev/next in recorder mode until redrawing; immediate plot update on frame selection change.
- 2012.04.28 miniscope_v4_0_9.7z
- FIXED: not working controls for low-speed recorder mode.
- 2012.05.03 miniscope_v4_0_10.7z
- FIXED: trigger mode selector visibility not restored after exiting low-speed recorder mode.
- 2012.08.06 miniscope_v4_0_11.7z
- old "Statistics" renamed to "Measurements",
- added new "Statistics" window for calculating time period sum and average values,
- 2012.09.22 miniscope_v4_0_12.7z + sig_test.dll
- added channel enable/disable function, present previously in device interface, implemented only by sig_test.dll for now,
- cleaned dll enumeration log,
- added dll re-enumeration function to dll selection window,
- statistics window: added ID to caption; ID is incremented each time new window is opened.
- 2012.10.21 miniscope_v4_0_13.7z
- removed dxgettext (translations) as a possible source of crash at exit (stack frame at THook.Disable, PatchPosition[0]:=Original[0]); it might be rare and OS-related (Win7 64-bit) problem, but translation usefulness seemed questionable and even my initial translation was not maintained, so it shouldn't be big loss; thanks to kab for report,
- small changes to dll interface headers for compatibility with MSVC.
- 2012.11.03 miniscope_v4_0_14.7z
- improved drawing performance; initially my idea was to reduce number of OpenGL calls (currently each data point is drawn even if zoom is very low and hundreds of points would be drawn in single physical place), but after testing OpenGL overhead seems not significant; while profiling other bottleneck was found: call to [] std::vector operator, replacing it with raw pointer reduced display update time from 600 ms to 200 ms (drawing 3 channels with 1M samples each on Pentium M @ 600MHz + Radeon 9000M),
- added Device/Connect, Disconnect to main menu (useful mainly for testing purposes: eliminated the need to restart application when connection with device is lost, i.e. device firmware was updated),
- FIXED: assertion on switching to FFT mode with disabled channel,
- added range and cursor values labels to plot,
- FIXED: incorrect time/div displayed value at startup.
- 2014.06.26 miniscope_v4_0_16.7z
- limited recorder file length to 2GB (ftell/fseek limitation),
- minor fixes and cleanup.
- 2015.11.05 miniscope_v4_0_17.zip
- added MRU (Most Recently Used) lists for JSON and MS3 files,
- GND mark is not drawn for disabled channel (e.g. dsoundscope.dll used with mono sound card),
- package (Release_Build) contains initial configuration (sig_test.dll) from the start.
- 2016.10.02 AVR nano clone with generic_uart.dll
- 2016.11.07 miniscope_v4_0_18.zip
- FIXED: data export (conversion) from loaded MS3 file (custom format) to JSON and CSV
- allowing storing gain coefficient when its value calculated during calibration is outside of reasonable range (thus device DLL can be used with hardware it was not intended for, i.e. with different voltage range than specified by device description)
- FIXED: wrong frequency calculated by automatic frequency measurements for square waves with sharp slopes
- trigger position and level markers are now hidden in continuous trigger mode
- 2017.01.04 miniscope_v4_0_19.zip
- FIXED: X, Y value/div labels were not updated on new frame after switching sampling speed
- X, Y (for each channel) oscilloscope mode zoom is restored after restart
- settings: new option to keep display in 1-2-5 time base / sensitivity sequence ("rounding") when switching sampling speed / gain
- 2017.01.10 miniscope_v4_0_20.zip
- plot Y positions are stored in config file
- plot: added plot line width setting
- new measurements window allowing copying text
- added some const qualifiers in device DLL interface header
- 2017.06.15 miniscope_v4_0_21.zip
- support for png format when exporting plot images (included libpng and zlib as static libraries)
- added quick export for plot image toolbar button; files are saved to default (previously used) directory with names containing timestamp including milliseconds
- status bar: no flickering when moving cursors (changed to DoubleBuffered)
- updated "About" window, added license text for libpng and zlib, added link to application directory
- moved json-cpp code to separate static library
- 2017.07.16 miniscope_v4_01_00.zip
- application configuration uses now JSON instead of ini format; this breaks backward compatibility and application must be configured again as there is no ini import (most likely selecting device dll again is all what should be done), minor version number is changed to indicate this
- fixed incorrect colors in exported png files
- added miliseconds to default file name for manual bmp/png exporting for consistency
- hotkeys (local and global), hotkey settings (reused from tSIP), available actions to assign:
- plot image export
- manual trigger
- switching mouse tools
- 2020.04.15 miniscope_v4_01_01.zip
- changed windows positions from desktop center to screen center (problems with multi-monitor configurations)
- reduced (~4x) JSON (samples stored as JSON) loading time
- fixed zoom clear button staying down
- device interface: added callbacks allowing device to change sampling time, sensitivity and coupling type in GUI
- few other minor fixes