Collection of I/O interfaces to communicate with microcontroller boards and laboratory devices, with optional PyQt/PySide multithread support and graphical user-interfaces.
Project description
DvG_Devices
Collection of I/O interfaces to communicate with microcontroller boards and laboratory devices, with optional PyQt/PySide multithread support and graphical user-interfaces.
Supports PyQt5, PyQt6, PySide2 and PySide6.
Documentation: https://python-dvg-devices.readthedocs.io
Github: https://github.com/Dennis-van-Gils/python-dvg-devices
Installation:
pip install dvg-devices
To be able to run the several provided graphical user-interfaces, one has to install an additional Qt-library. This can be either PyQt5, PyQt6, PySide2 or PySide6. Pick one. My personal recommendation is PyQt5 for Python <= 3.7, and PySide6 for Python >= 3.8:
pip install pyqt5 pip install pyqt6 pip install pyside2 pip install pyside6
If you wish to interface with an GPIB device you need to additionally install a Visa backend. See https://pyvisa.readthedocs.io/en/latest/introduction/getting.html
Supported devices
Arduino, or similar
Microcontroller board
Aim TTi QL series II
Power supply
Bronkhorst EL-FLOW
Mass flow controller
Julabo circulator
Recirculating bath
Keysight 3497xA
Digital multimeter
Keysight N8700
Power supply
Novanta IMS MDrive
Stepper motor controller
Parker Compax3
Servo controller
Picotech PT104
Temperature logger
PolyScience PD
Recirculating bath
ThermoFisher ThermoFlex
Chiller
Xylem Hydrovar HVL
Variable speed pump controller
Highlights
Class SerialDevice() offering higher-level general I/O methods for a serial device, such as auto_connect(), write() and query().
Class Arduino() which wraps around SerialDevice(). In combination with DvG_StreamCommand it allows for automatically connecting to your Arduino(-like) device and for easy serial I/O communication.
Separate PyQt/PySide interfaces are provided for each of these devices, offering out-of-the-box multithreaded data acquisition and communication. It relies on DvG_QDeviceIO.
Ready-to-run PyQt/PySide demos to directly control many of the supported devices with a graphical user-interface.
Changelog
1.5.0 (2024-06-27)
Support for Numpy 2.0
Restore support for Python 3.6. Was removed by mistake. Version 1.4.0 and this version do support Python 3.6 actually, but only in combination with PyQt5. PySide2 will not work because the wrapper library qtpy still expects app.exec_() instead of app.exec(). That got fixed in the qtpy version for Python >= 3.7.
1.4.0 (2024-05-23)
Major clean-up and streamlining:
Using qtpy library instead of my own Qt5/6 mechanism
Changed all string formatting to f-strings
Extended type hinting and checking
Made demos uniform and passing qdev arguments to MainWindow now
Individual source files now follow the PyPi package version
Resolved nearly all Pylint / Pylance warnings
Removed Python 3.6 support
New devices added:
Xylem Hydrovar HVL - Variable speed pump controller
Novanta IMS MDrive - Stepper motor controller
1.3.0 (2023-02-23)
Added method BaseDevice.SerialDevice.query_bytes()
Fixed type hints in BaseDevice.SerialDevice
1.2.0 (2022-09-14)
Added support for PyQt5, PyQt6, PySide2 and PySide6
1.1.0 (2022-02-01)
Added method BaseDevice.SerialDevice.readline()
1.0.0 (2021-07-02)
Stable release, identical to v0.2.6
0.2.6 (2021-03-02)
Minor: Adjusted width of GUI control in Julabo_circulator_qdev.py
0.2.5 (2021-03-02)
Loosened dependence to pyserial~= 3.4
0.2.4 (2021-03-02)
Added device: Julabo circulator
0.2.3 (2020-08-27)
Workaround for bug with unknown cause in Aim_TTi_PSU_protocol_RS232 where the power supply occasionally will skew the serial input and output stream, such that the reply matches the second-previous query statement. Fixed by forcefully flushing the serial input and output buffers whenever a wrong reply is received. Hopefully, this will fix the skew when the next query() operation gets executed.
0.2.2 (2020-08-27)
Fixed bug in BaseDevice.query_ascii(). The use of ast.literal_eval got removed because it chokes on nan. Everything is now interpreted as a float instead.
0.2.1 (2020-08-12)
Fix wrong import statement dvg-pyqt-controls
Fix wrong import statement dvg-pyqt-filelogger
0.2.0 (2020-08-11)
Added dependence dvg-pyqt-controls~=1.0
Added dependence dvg-pyqt-filelogger~=1.0
Added dependence dvg-pyqtgraph-threadsafe~=3.0
0.1.0 (2020-07-23)
Fixed bug in BaseDevice.py where inspect.getouterframes() would momentarily suspend the thread. Solved by ditching inspect. The new ID_validation_query mechanism now relies on a simple boolean flag that gets set to force query() to raise on timeout.
Update dependence dvg-qdeviceio==0.3.0
0.0.7 (2020-07-17)
Update dependence dvg-qdeviceio==0.2.2
0.0.6 (2020-07-16)
Finished implementing BaseDevice.SerialDevice()
Update dependence dvg-qdeviceio==0.2.1
0.0.5 (2020-07-07)
Update dependence dvg-qdeviceio==0.2.0 Enum DAQ_trigger is now called DAQ_TRIGGER
Code style: Black
0.0.4 (2020-07-04)
Update dependence dvg-qdeviceio==0.1.2
0.0.3 (2020-07-02)
Fixed broken packaging
0.0.2 (2020-07-02)
Major restructuring PyPI package
Implemented DvG_QDeviceIO
0.0.1 (2020-07-01)
First release on PyPI
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file dvg_devices-1.5.0.tar.gz
.
File metadata
- Download URL: dvg_devices-1.5.0.tar.gz
- Upload date:
- Size: 145.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9317051d198191a87d5b58ffc99d86237dcb696528aec59d4203b3c7e191045b |
|
MD5 | 0d1a2f09ffdc04b163a07fac9a079457 |
|
BLAKE2b-256 | 8845bdd0a2507db7148eb8ab177f2c51acabfa9cf1193670e4766f3f095f0a5b |
File details
Details for the file dvg_devices-1.5.0-py3-none-any.whl
.
File metadata
- Download URL: dvg_devices-1.5.0-py3-none-any.whl
- Upload date:
- Size: 163.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2cb0c58c192391461c74df284122cc8376e7ad3fcb1481a2e7ab7e4ce774b412 |
|
MD5 | 44e7a8e16819d4703cd913219da67b4c |
|
BLAKE2b-256 | aa97aef125bbd09161a9bd90ecf6b3fe9f180d1f4c3ccefd8d8ec021963abf48 |