miniscope v3
You can find several different oscilloscope projects on my pages, but documentation is usally not complete. I had not released source code of PC application. I sent it to few interested people. They usally screamed in horror seeing the mess I made.
Miniscope v3 project is intented to create unified and modular user interface
for PC oscilloscopes.
Compiler/IDE: Turbo C++ Explorer (BDS 2006). Installing current hotfixes (2009.10.14: rollup with Hotfixes 1-10,
additional Hotfixes 11, 12, 13 are available at http://cc.embarcadero.com/ for
registered users) is strongly recommended.
To run program
cc3270MT.dll and cg32.dll libraries may be
required (depending on compilation options used to build specific executable). Place them in application
or system directory.
Miniscope software is licensed as GPL v2. If the integration of miniscope code requires the use of a license other than GPL, an alternative license may be arranged. Contact me for further details.
Docs: doxygen
- 2008.12.30 Initial test project with display interface class and first
implementation (DisplayOpenGL) limited to single channel. Features
plot scaling and moving, screen cursors readout, amplitude spectrum presentation.
Display can be resized at runtime.
miniscope_v3_0_0_1.7z
- 2009.04.01 Initial main app to input device dll interface.
Archive contains wavein.dll library that collects samples from
WAVEIN / WAVE MAPPER device.
miniscope_v3_0_0_2.7z - 2009.07.02 Main application, updated wavein.dll and brand new armscope.dll library
(for simple hardware based on AT91SAM7S64 you can find on my page) with source code.
Besides of new functionality
some bugs were fixed, including unnecessary CPU cycles consumed when graph content
doesn't need to be updated.
miniscope_v3_0_0_5.7z
- 2009.07.18 Version 0.0.6:
- persistence of input device settings implemented inside device dll; armscope.dll uses cfg file parsed/generated with JsonCpp,
- changing used device dll without application restart.
- 2009.08.21 Version 0.0.7:
- FIXED: no coupling type update at startup,
- FIXED: plot not updated after resetting zoom/offset,
- FIXED: X axis labels incorrectly displayed in spectrum analyzer mode when there is no data,
- FIXED: no settings update when sensitivity/sampling/trigger trackbar position was changed using keyboard,
- added slow signal recorder mode,
- enabled main form hints, added hints for toolbar buttons,
- added progress bar representing received part of expected data buffer from device,
- armscope.dll: libusb updated to 0.1.12.1,
- turned off "Use dynamic RTL" option (no dependency to cc3270MT.dll),
- cursors are drawn on top of actual plot line,
- current X and Y axis zoom displayed on toolbar,
- added build timestamp to "About" and build-tools\touch.exe to build chain,
- added Statistics.cpp/StatisticsUnit.cpp - calculation of min, max and avg value,
- added dialog on startup when no input device dll is selected,
- added option to export plot image to bitmap file (File menu),
- armscope.dll project is NOT INCLUDED in this package - visit miniscope v2 page to download it.
- 2009.09.06 Version 0.0.8:
- FIXED: AV at startup if input library was not found,
- data vector passed do display represents physical value, not ADC output,
- offset and sensitivity calibration for each sensitivity range (if supported by input dll).
- 2009.09.11 Version 0.0.9:
- FIXED: leading backspace in default filename when saving plot as bitmap and default directory is empty,
- ScreenSnap set to true for some of the windows,
- added fancy hexagonal toolbar for plot (toggled by middle button),
- selecting input device dll is now required, application will abort if device is not selected,
- added feedback form for loading device, initial loading moved to TfrmMain::OnShow,
- added simple plot data export to JSON and CSV format.
- 2009.09.12 Version 0.0.10:
- FIXED: random halt (typically with continuous trigger when system CPU load was high); VCL code (reading GUI state) removed from CallbackTriggerFn,
- FFT is calculated only after receiving full expected data frame from device.
- 2009.09.17 Added hidpic.dll input plugin.
This device + library set is rather proof of concept than usefull tool (well, just like wavein.dll). Hardware is PIC microcontroller running Generic HID example from MCHPUSB 2.5 package - reading ADC and switch, toggling LED when requested.
Since PIC microcontroller is configured to send single ADC value per HID report there is no way to get sampling rate over 1000 samples per second (and even at lower sample rates sampling period may be unstable).
On the plus side this is nice example how to create input dll using MinGW (not obvious thing is function name decoration, use -Wl,--add-stdcall-alias or -Wl,--kill-at) and work with HID devices in general.
Dll function names decoration comparison
If you have PICDEM-USB or similar you should be able to test it in few minutes.
Please note that all input dll projects depends on header files that are part of main application and they are intended to be put on the same directory tree level as main application project.
This project is available to download from single-chip DSO page. - 2009.09.23 Version 0.0.11
- FIXED: zoom was not cleared in recorder mode; simplified ActionZoomClearExecute,
- display: auto adjusting plot zoom and position for Y axis; I don't consider similar command usefull for X axis right now,
- display: added enum E_OFFSET_ACTION to Display class to allow leave offset untouched or clear it calling SetZoom,
- display: X offset is not changing when using Y axis zoom, Y offset is not changing when using X axis zoom.
- 2009.10.08 Version 0.0.12
- FIXED: plot grid visibility options had no meaning in recorder mode,
- statistics updated after receiving full frame (same as FFT) and when statistics window is opened if full frame is already received,
- statistics window is not shown until device dll is loaded,
- added signal frequency measuring to statistics,
- added transparency setting to plot toolbox; setting is ignored if tranparency is not supported by OS (i.e. Win98).
- 2009.10.20. Version 0.0.13
- FIXED: project failed to build if there was space in project path (incorrect Pre-Build tools command), thanks to Łukasz for report,
- FIXED: FFT was not displayed or displayed incorrectly if data buffer size was not power of two,
- SOLVED: high CPU usage by plot was side effect of using CodeGuard; with CodeGuard turned off (release build) drawing 14k samples takes less than 3 ms on Pentium M @ 600 MHz + ATI R9000 set (30 times faster than previously), d'oh!,
- added auto adjusting plot zoom and position for X axis,
- nicer log window,
- added TimeCounter.h - utility to measure execution time,
- added info about CodeGuard usage and debug build in About window.
- 2009.11.14. Version 0.0.14
- FIXED: on some low-end computers there was blank rectangle (size of the save dialog) visible on image exported to clipboard or file,
- FIXED: incorrectly displayed sensitivity, sampling and incorrect visibility state of buttons related to trigger types when failed to connect to device on startup,
- added JSON file viewer,
- oscilloscope control panel is disabled if device is not connected,
- receive progress bar is hidded when not waiting for data,
- reduced size of exported bitmap file (changed format to 8 bit).
- 2010.01.24 sig_test.dll - test signal generator plugin.

sig_test_dll.7z
- Version 0.0.15
-
Framework for signal filters based on factory pattern
(inspired by A. Alexandrescu, Modern C++ Design). This is nicely
scallable pattern - to add new filter type only single cpp file has
to be added to project, no changes in any other files are necessary.
-
Framework for signal filters based on factory pattern
(inspired by A. Alexandrescu, Modern C++ Design). This is nicely
scallable pattern - to add new filter type only single cpp file has
to be added to project, no changes in any other files are necessary.

