Desktop application that utilizes the PyQt framework and custom SCPI and serial drivers to run frequency sweeps on an extra-wide-band (2kHz - 6GHz) RF Signal Generator while keeping the electromagnetic field at a constant amplitude via closed-loop control from a field probe's feedback input
- Root of the application: Sets up UI, connects UI actions with hardware control and information feedback from device drivers via Signals and Slots. Also runs the PID loop for steady-state field control via the Signal Generator's output and Field Probe's composite field input.
- File for all supported Field Probes at the moment with the aim to make the interface as modular as possible with the controller
- Contains some objects for software testing without hardware-in-the-loop and the ETSLindgrenHI6006 class for use with the customer's onsite hardware, with a custom dynamic serial reading protocol on a thread separate from the UI that reads exact expected string lengths given write command query to avoid any application lag given serial's large over head in Python.
- File containing both a test Signal Generator class for pure software testing as well as the AgilentN5181A object. In this class, the modulation type, power, and state of the signal is set, and the frequency sweep functions are run here as well. The AgilentN5181A object uses SCPI over ethernet to command the current frequency, power, modulation scheme, etc.,.
- Autogenerated from the XML file created by Qt Designer
- MatPlotLib embedded plots to display the frequency sweeps and the measured field intensities vs the set-point.
- UI Asset resource files for bundling application across Operating Systems.