khoitd1997 / qt_signal_analyzer

Device Firmware and Qt front-end code for a basic signal analyzer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Qt Signal Analyzer

Device Firmware and Qt front-end code for a basic signal analyzer

Structure

The repos have two major parts, documentations for each parts are in the README of each respective folder:

  • qt/: Code for the front-end GUI of the analyzer using Qt 5
  • firmware/: Device firmware for the STM32F4 data collector

Features

  • Display multiple waveform inputs received from device
  • Collect and Analyze waveform statistics
  • Manual and Dynamic scaling
  • Saving and Loading data and graphs
  • Allow selection of multiple devices
  • Maybe some DSP features

Live Mode

Live mode has these main components:

  • Graph Control: Allow changing scaling and offset of X/Y axis, renaming graph, and changing their on/off status.
  • Measurement and Logger: Allow measuring frequency, period, max, min, peak-to-peak of waveform, frequency and period uses zero-crossing detection and would probably be optimized in the future. The logger allows selecting which targets to log and report total time and points since the start of logging.
  • Cursor Settings: Control the X/Y axis cursor, it reports the difference in X as well the specific position and difference in Y.
  • Math: Draw additional waveform with sources being the signal currently recorded as arguments, currently allows, subtraction, sum, abs and log.

All components are organized as drop-down menu for convenience and except for the cursor one(cursor uses Javascript as its logic handler), has its own thread in order to minimize data processing time. When user interacts, QML will usually invoke a C++ function to update the data structure describing the states, and at certain frequency, the measurements or graph is redrawn to reflect the current options and data. The rate of refresh is being optimized to potentially make it < 100 ms.

Credits

Attributes for icons that I borrowed:

About

Device Firmware and Qt front-end code for a basic signal analyzer


Languages

Language:C 97.4%Language:C++ 1.0%Language:QML 1.0%Language:Assembly 0.3%Language:Makefile 0.1%Language:CMake 0.1%Language:JavaScript 0.1%Language:QMake 0.0%Language:Shell 0.0%Language:GDB 0.0%