Skip to content

Commit cb123fd

Browse files
Merge pull request #3 from Dennis-van-Gils/Implement_qdeviceio
Started using my own PyPi packages. * dvg-debug-functions (>= 1.1.1) * dvg-qdeviceio (>= 0.0.6) These bring many stability improvements and bug fixes.
2 parents 17f76a8 + 46e788a commit cb123fd

18 files changed

+168
-1344
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,4 +106,7 @@ venv.bak/
106106
/site
107107

108108
# mypy
109-
.mypy_cache/
109+
.mypy_cache/
110+
111+
.pio/
112+
.vscode/

Arduino_PyQt_demo_with_multithreading.py

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
__author__ = "Dennis van Gils"
77
__authoremail__ = "vangils.dennis@gmail.com"
88
__url__ = "https://github.com/Dennis-van-Gils/DvG_Arduino_PyQt_multithread_demo"
9-
__date__ = "14-09-2018"
10-
__version__ = "1.0.0"
9+
__date__ = "07-06-2020"
10+
__version__ = "2.0.0"
1111

1212
import os
1313
import sys
@@ -27,7 +27,7 @@
2727
from DvG_debug_functions import dprint, print_fancy_traceback as pft
2828

2929
import DvG_dev_Arduino__fun_serial as Arduino_functions
30-
import DvG_dev_Arduino__pyqt_lib as Arduino_pyqt_lib
30+
import DvG_QDeviceIO
3131

3232
# Constants
3333
UPDATE_INTERVAL_ARDUINO = 10 # 10 [ms]
@@ -234,15 +234,15 @@ def process_qpbt_record(self):
234234

235235
@QtCore.pyqtSlot()
236236
def process_qpbt_wave_sine(self):
237-
ard_pyqt.queued_write("sine")
237+
qdev_ard.send(ard.write, "sine")
238238

239239
@QtCore.pyqtSlot()
240240
def process_qpbt_wave_square(self):
241-
ard_pyqt.queued_write("square")
241+
qdev_ard.send(ard.write, "square")
242242

243243
@QtCore.pyqtSlot()
244244
def process_qpbt_wave_sawtooth(self):
245-
ard_pyqt.queued_write("sawtooth")
245+
qdev_ard.send(ard.write, "sawtooth")
246246

247247
@QtCore.pyqtSlot(str)
248248
def set_text_qpbt_record(self, text_str):
@@ -255,8 +255,8 @@ def set_text_qpbt_record(self, text_str):
255255
@QtCore.pyqtSlot()
256256
def update_GUI():
257257
window.qlbl_cur_date_time.setText("%s %s" % (str_cur_date, str_cur_time))
258-
window.qlbl_update_counter.setText("%i" % ard_pyqt.DAQ_update_counter)
259-
window.qlbl_DAQ_rate.setText("DAQ: %.1f Hz" % ard_pyqt.obtained_DAQ_rate_Hz)
258+
window.qlbl_update_counter.setText("%i" % qdev_ard.DAQ_update_counter)
259+
window.qlbl_DAQ_rate.setText("DAQ: %.1f Hz" % qdev_ard.obtained_DAQ_rate_Hz)
260260
window.qlin_reading_t.setText("%i" % state.time)
261261
window.qlin_reading_1.setText("%.4f" % state.reading_1)
262262

@@ -281,7 +281,7 @@ def update_chart():
281281

282282
def stop_running():
283283
app.processEvents()
284-
ard_pyqt.close_all_threads()
284+
qdev_ard.quit()
285285
file_logger.close_log()
286286

287287
print("Stopping timers: ", end='')
@@ -416,18 +416,28 @@ def my_Arduino_DAQ_update():
416416
# Set up communication threads for the Arduino
417417
# --------------------------------------------------------------------------
418418

419-
# Create workers and threads
420-
ard_pyqt = Arduino_pyqt_lib.Arduino_pyqt(ard,
421-
UPDATE_INTERVAL_ARDUINO,
422-
my_Arduino_DAQ_update)
423-
419+
# Create QDeviceIO
420+
qdev_ard = DvG_QDeviceIO.QDeviceIO()
421+
qdev_ard.attach_device(ard)
422+
423+
# Create workers
424+
qdev_ard.create_worker_DAQ(
425+
DAQ_function_to_run_each_update=my_Arduino_DAQ_update,
426+
DAQ_update_interval_ms=UPDATE_INTERVAL_ARDUINO,
427+
DAQ_timer_type=QtCore.Qt.PreciseTimer,
428+
DAQ_critical_not_alive_count=3,
429+
DEBUG=DEBUG)
430+
431+
qdev_ard.create_worker_send(
432+
DEBUG=DEBUG)
433+
424434
# Connect signals to slots
425-
ard_pyqt.signal_DAQ_updated.connect(update_GUI)
426-
ard_pyqt.signal_connection_lost.connect(notify_connection_lost)
435+
qdev_ard.signal_DAQ_updated.connect(update_GUI)
436+
qdev_ard.signal_connection_lost.connect(notify_connection_lost)
427437

428-
# Start threads
429-
ard_pyqt.start_thread_worker_DAQ(QtCore.QThread.TimeCriticalPriority)
430-
ard_pyqt.start_thread_worker_send()
438+
# Start workers
439+
qdev_ard.start(
440+
DAQ_priority=QtCore.QThread.TimeCriticalPriority)
431441

432442
# --------------------------------------------------------------------------
433443
# Create timers

Arduino_PyQt_demo_with_multithreading__LARGE_TEXT.py

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
__author__ = "Dennis van Gils"
77
__authoremail__ = "vangils.dennis@gmail.com"
88
__url__ = "https://github.com/Dennis-van-Gils/DvG_Arduino_PyQt_multithread_demo"
9-
__date__ = "14-09-2018"
10-
__version__ = "1.0.0"
9+
__date__ = "07-06-2020"
10+
__version__ = "2.0.0"
1111

1212
import os
1313
import sys
@@ -27,7 +27,7 @@
2727
from DvG_debug_functions import dprint, print_fancy_traceback as pft
2828

2929
import DvG_dev_Arduino__fun_serial as Arduino_functions
30-
import DvG_dev_Arduino__pyqt_lib as Arduino_pyqt_lib
30+
import DvG_QDeviceIO
3131

3232
# Constants
3333
UPDATE_INTERVAL_ARDUINO = 10 # 10 [ms]
@@ -265,15 +265,15 @@ def process_qpbt_record(self):
265265

266266
@QtCore.pyqtSlot()
267267
def process_qpbt_wave_sine(self):
268-
ard_pyqt.queued_write("sine")
268+
qdev_ard.send(ard.write, "sine")
269269

270270
@QtCore.pyqtSlot()
271271
def process_qpbt_wave_square(self):
272-
ard_pyqt.queued_write("square")
272+
qdev_ard.send(ard.write, "square")
273273

274274
@QtCore.pyqtSlot()
275275
def process_qpbt_wave_sawtooth(self):
276-
ard_pyqt.queued_write("sawtooth")
276+
qdev_ard.send(ard.write, "sawtooth")
277277

278278
@QtCore.pyqtSlot(str)
279279
def set_text_qpbt_record(self, text_str):
@@ -285,8 +285,8 @@ def set_text_qpbt_record(self, text_str):
285285
@QtCore.pyqtSlot()
286286
def update_GUI():
287287
window.qlbl_cur_date_time.setText("%s %s" % (str_cur_date, str_cur_time))
288-
window.qlbl_update_counter.setText("%i" % ard_pyqt.DAQ_update_counter)
289-
window.qlbl_DAQ_rate.setText("DAQ: %.1f Hz" % ard_pyqt.obtained_DAQ_rate_Hz)
288+
window.qlbl_update_counter.setText("%i" % qdev_ard.DAQ_update_counter)
289+
window.qlbl_DAQ_rate.setText("DAQ: %.1f Hz" % qdev_ard.obtained_DAQ_rate_Hz)
290290
window.qlin_reading_t.setText("%i" % state.time)
291291
window.qlin_reading_1.setText("%.4f" % state.reading_1)
292292

@@ -310,7 +310,7 @@ def update_chart():
310310

311311
def stop_running():
312312
app.processEvents()
313-
ard_pyqt.close_all_threads()
313+
qdev_ard.quit()
314314
file_logger.close_log()
315315

316316
print("Stopping timers: ", end='')
@@ -442,21 +442,31 @@ def my_Arduino_DAQ_update():
442442
file_logger.signal_set_recording_text.connect(window.set_text_qpbt_record)
443443

444444
# --------------------------------------------------------------------------
445-
# Set up communication threads for the Arduino(s)
445+
# Set up communication threads for the Arduino
446446
# --------------------------------------------------------------------------
447447

448-
# Create workers and threads
449-
ard_pyqt = Arduino_pyqt_lib.Arduino_pyqt(ard,
450-
UPDATE_INTERVAL_ARDUINO,
451-
my_Arduino_DAQ_update)
452-
448+
# Create QDeviceIO
449+
qdev_ard = DvG_QDeviceIO.QDeviceIO()
450+
qdev_ard.attach_device(ard)
451+
452+
# Create workers
453+
qdev_ard.create_worker_DAQ(
454+
DAQ_function_to_run_each_update=my_Arduino_DAQ_update,
455+
DAQ_update_interval_ms=UPDATE_INTERVAL_ARDUINO,
456+
DAQ_timer_type=QtCore.Qt.PreciseTimer,
457+
DAQ_critical_not_alive_count=3,
458+
DEBUG=DEBUG)
459+
460+
qdev_ard.create_worker_send(
461+
DEBUG=DEBUG)
462+
453463
# Connect signals to slots
454-
ard_pyqt.signal_DAQ_updated.connect(update_GUI)
455-
ard_pyqt.signal_connection_lost.connect(notify_connection_lost)
464+
qdev_ard.signal_DAQ_updated.connect(update_GUI)
465+
qdev_ard.signal_connection_lost.connect(notify_connection_lost)
456466

457-
# Start threads
458-
ard_pyqt.start_thread_worker_DAQ(QtCore.QThread.TimeCriticalPriority)
459-
ard_pyqt.start_thread_worker_send()
467+
# Start workers
468+
qdev_ard.start(
469+
DAQ_priority=QtCore.QThread.TimeCriticalPriority)
460470

461471
# --------------------------------------------------------------------------
462472
# Create timers

Arduino_PyQt_demo_with_multithreading__minimalistic.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
__author__ = "Dennis van Gils"
77
__authoremail__ = "vangils.dennis@gmail.com"
88
__url__ = "https://github.com/Dennis-van-Gils/DvG_Arduino_PyQt_multithread_demo"
9-
__date__ = "14-09-2018"
10-
__version__ = "1.0.0"
9+
__date__ = "07-06-2020"
10+
__version__ = "2.0.0"
1111

1212
import os
1313
import sys
@@ -25,7 +25,7 @@
2525
from DvG_debug_functions import dprint, print_fancy_traceback as pft
2626

2727
import DvG_dev_Arduino__fun_serial as Arduino_functions
28-
import DvG_dev_Arduino__pyqt_lib as Arduino_pyqt_lib
28+
import DvG_QDeviceIO
2929

3030
# Constants
3131
UPDATE_INTERVAL_ARDUINO = 10 # 10 [ms]
@@ -103,7 +103,7 @@ def __init__(self, parent=None, **kwargs):
103103
def about_to_quit():
104104
print("\nAbout to quit")
105105
app.processEvents()
106-
ard_pyqt.close_all_threads()
106+
qdev_ard.quit()
107107

108108
print("Stopping timers: ", end='')
109109
timer_chart.stop()
@@ -187,16 +187,24 @@ def my_Arduino_DAQ_update():
187187
window = MainWindow()
188188

189189
# --------------------------------------------------------------------------
190-
# Set up communication threads for the Arduino(s)
190+
# Set up communication threads for the Arduino
191191
# --------------------------------------------------------------------------
192192

193-
# Create workers and threads
194-
ard_pyqt = Arduino_pyqt_lib.Arduino_pyqt(ard,
195-
UPDATE_INTERVAL_ARDUINO,
196-
my_Arduino_DAQ_update)
197-
198-
# Start threads
199-
ard_pyqt.start_thread_worker_DAQ()
193+
# Create QDeviceIO
194+
qdev_ard = DvG_QDeviceIO.QDeviceIO()
195+
qdev_ard.attach_device(ard)
196+
197+
# Create workers
198+
qdev_ard.create_worker_DAQ(
199+
DAQ_function_to_run_each_update=my_Arduino_DAQ_update,
200+
DAQ_update_interval_ms=UPDATE_INTERVAL_ARDUINO,
201+
DAQ_timer_type=QtCore.Qt.PreciseTimer,
202+
DAQ_critical_not_alive_count=3,
203+
DEBUG=DEBUG)
204+
205+
# Start workers
206+
qdev_ard.start(
207+
DAQ_priority=QtCore.QThread.TimeCriticalPriority)
200208

201209
# --------------------------------------------------------------------------
202210
# Create timers

Arduino_wave_generator_source_files/.gitignore

Lines changed: 0 additions & 6 deletions
This file was deleted.

Arduino_wave_generator_source_files/.travis.yml

Lines changed: 0 additions & 67 deletions
This file was deleted.

Arduino_wave_generator_source_files/.vscode/extensions.json

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)