Adalm1000_Logger/Controll.py
Vincent Hanewinkel aa1596cc43 try fix
2025-08-14 22:08:27 +02:00

60 lines
1.7 KiB
Python

import sys
import pysmu
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import pyqtSignal, QObject
from GUI import MainWindow
from DeviceController import DeviceController
from functools import partial
class ControllerSignals(QObject):
started = pyqtSignal(str) # serial
stopped = pyqtSignal(str)
error = pyqtSignal(str, str) # serial, msg
signals = ControllerSignals()
def main():
# 1) Geräte einsammeln (pysmu nur hier benutzen)
sess = pysmu.Session()
sess.add_all()
controllers = {dev.serial: DeviceController(sess, dev) for dev in sess.devices}
serials = list(controllers.keys())
print("Gefundene Geräte:", serials)
# Optional: Modi setzen
for serial in serials:
c = controllers[serial]
c.set_mode("A", pysmu.Mode.SIMV) # CH A z. B.
c.set_mode("B", pysmu.Mode.HI_Z) # CH B z. B.
# 2) GUI erstellen
app = QApplication(sys.argv)
win = MainWindow()
# Kleine Helfer, damit die ListItem-Buttons nur Controller.start/stop aufrufen
def on_start(ctrl, widget):
ctrl.start()
widget.set_running(True)
def on_stop(ctrl, widget):
ctrl.stop()
widget.set_running(False)
# 3) Liste befüllen (auf der INSTANZ, nicht auf der Klasse!)
for i, serial in enumerate(serials):
ctrl = controllers[serial]
w = win.add_list_item(serial, i)
# WICHTIG: die Lambda fängt 'checked' ab (erster Parameter), wir ignorieren ihn.
w.btn_start.clicked.connect(lambda checked=False, c=ctrl, ww=w: on_start(c, ww))
w.btn_stop.clicked.connect (lambda checked=False, c=ctrl, ww=w: on_stop(c, ww))
# 4) Start
win.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()