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
- Host: GitHub
- URL: https://github.com/Alpaka1017/PHD-Ultra-Series-Remote-Control-GUI-PyQt6-
- Owner: Alpaka1017
- License: mit
- Created: 2023-04-16T22:37:19.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-05-13T20:24:34.000Z (about 3 years ago)
- Last Synced: 2024-10-24T00:23:21.927Z (over 1 year ago)
- Topics: gui-application, microfluidics, multithreading, pyqt6, python37, syringe-pump, ui-design
- Language: Python
- Homepage: https://cloudstore.zih.tu-dresden.de/index.php/s/idRP7DKTMfQmx2L
- Size: 61.4 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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`

☑ Ü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*

☑ 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

☑ 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

☑ 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

✦ Add the 'logging' module for easy debugging and recording of program running status
✦ Added path hints when saving custom methods

→ 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
# 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.