import sys import pysmu from PyQt5.QtWidgets import QApplication from GUI import MainWindow from DeviceController import DeviceController 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 make_on_start(ctrl): return lambda _idx: ctrl.start() def make_on_stop(ctrl): return lambda _idx: ctrl.stop() # 3) Liste befüllen (auf der INSTANZ, nicht auf der Klasse!) for i, serial in enumerate(serials): ctrl = controllers[serial] win.add_list_item( serial, i, make_on_start(ctrl), make_on_stop(ctrl), ) # 4) Start win.show() sys.exit(app.exec_()) if __name__ == "__main__": main() # # Beispiel: Gerät 1 starten, Gerät 2 später starten/stoppen # c1 = controllers[serials[0]] # c1.set_mode(0, MODE.HI_Z) # CH A Hi-Z # c1.set_mode(1, MODE.HI_Z) # CH B Hi-Z # c1.start() # time.sleep(2.0) # if len(serials) > 1: # c2 = controllers[serials[1]] # c2.set_mode(0, MODE.HI_Z) # c2.set_mode(1, MODE.HI_Z) # c2.start() # time.sleep(3.0) # c2.stop() # nur Gerät 2 stoppen # # sauber beenden (Strg+C-Handling etc. weglassen der Kürze halber) # for c in controllers.values(): # c.stop() # for c in controllers.values(): # c.shutdown()