Skip to content

Alpaka1017/PHD-Ultra-Series-Remote-Control-GUI-PyQt6-

Repository files navigation

Short Introduction

This project is specifically developed for PHD Ultra 70-3xx series syringe pumps based on python-PyQt6 graphical user interface.

☑ The program supports basic Quick Start Mode and Custom Method Mode

☑ Provides basic serial port operations

☑ Reads and dynamically draws returned data in real-time

Week 1

☑ With TKinter-Framework

iKn2qk.png

☑ Überprüfung der seriellen Portverbindung

☑ Betriebsart auswählen

☑ Auswählen Spritzentypen aus der Bibliothek

☑ Eingaben der Durchflussparameter und Überprüfung der Gültigkeit

☑ Definieren/exportieren/importieren einer neuen Betriebsmethode mit mehreren Schritten

Week 2

☑ Optimierung des Definitionsvorgangs der Schritte von User defined method

iKnb7p.png

☑ Standardisierung der Dateiformat von Import und Export der Benutzer definierten Methoden(.json

☑ Ermöglicht die Detektion der Verbindungszustände von seriellen Schnittstellen:

  • Echtzeiterkennung des Verbindungsstatus der seriellen Schnittstelle und Anzeige in der Statusleiste in verschiedenen Farben

iEqiUL.png

☑ Wechsel verschiedener seriellen Ports durch Auswahl aus Dropdown-Menü, keine Schließen aktuellen Ports erforderlich

  • Problem:Nach einem Ausschalten wird die Portswechsel aus Dropdown-Menü nicht möglich sein.

Week 3

Achieved

☑ Added the allowable flow range to adapt to different syringes, and quick set the min./max. value

iSxgXq.png

☑ Varifying the value entered by the user

☑ Threads for writing and reading serial ports were added

☑ The instance self.ser in the detection thread is shared among the three class instances to realize asynchronous operations to avoid data competition and improve the speed and stability of program response

☑ Write different commands again to it by identifying different suffixes when reading data from the serial port

To do

 ➔ Post-processing the returned data (graphical display of Flow rate over time), including irate/wrate, crate, ivolume/wvolume, itime/wtime

To complete the parsing of advanced commands (Custom Methods)

Week 4

☑ Fixed the bug that automatic connection cannot be realized through configuration parameters after connection failure and reconnection

☑ Optimized UI layout and size adjustment in response to scaling

☑ Improved theme switching feature and fixed several bugs

☑ Optimized font display

✦ Added the function to switch between different line-ending identifiers for received data

✦  Added support for various encoding/decoding options

✦ Added a feature to display the recommended force level by hovering on selected syringe to prevent from being damaged

iKSY6Q.png

✦ Add the 'logging' module for easy debugging and recording of program running status

✦ Added path hints when saving custom methods

iPVshx.png

→ Implement real-time dynamic plotting of data

Week 5

☑ Merged the serial port reading and writing threads, so that the response identifier can be used as a sign for command sending

☑ To prevent UI freezing, deprecate the time.sleep() method and use QtCore.QTimer() instead

✦ Added a feature of progress bar on status bar, which dynamically shows the current flow progress in percent

✦ Implemented the functionality to graphically display the current flow rate and transported volume according to different running modes

Powered by: matplotlib.backends.backend_qt5agg

✦ Added image interactivity and export features (thanks to matplotlib)

✦ Added image data export (*.txt)

Complete UI showcase

iQQkUX.png

Week 6

☑ Fixed all known bugs and implement the goals of the first stage

  • Port read and commands send according to different running status
  • En-/Decoding methods: utf-8, ascii
  • Diverse line ending identifiers: No line feed, CR, LF, CR&LF
  • Post-processing of returned data: dynamic display, progress bar
  • Tooltip for default force limit under consideration of safety
  • Theme switch -> as well as adapting and the styling of the plot area: Powered by PyQtDarkTheme
  • Registration of resource data
  • etc.

iq6ppE.png