An open API service indexing awesome lists of open source software.

https://github.com/Alpaka1017/PHD-Ultra-Series-Remote-Control-GUI-PyQt6-

PHD MA1 70-3xxx Series Syringe Pump
https://github.com/Alpaka1017/PHD-Ultra-Series-Remote-Control-GUI-PyQt6-

gui-application microfluidics multithreading pyqt6 python37 syringe-pump ui-design

Last synced: about 1 year ago
JSON representation

PHD MA1 70-3xxx Series Syringe Pump

Awesome Lists containing this project

README

          

# 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](https://i.328888.xyz/2023/04/29/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](https://i.328888.xyz/2023/04/29/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](https://i.328888.xyz/2023/04/17/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](https://i.328888.xyz/2023/04/24/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](https://i.328888.xyz/2023/04/30/iKSY6Q.png)

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

✦ Added path hints when saving custom methods

![iPVshx.png](https://i.328888.xyz/2023/05/04/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](https://github.com/5yutan5/PyQtDarkTheme.git)**
* Registration of resource data
* etc.

iq6ppE.png