"""Minimal examples for embedding laser_control into another Python app.""" import sys from laser_control import ( LaserController, ValidationError, CommunicationError, ) def example_manual_mode(port: str = None): """Manual mode: set fixed temperatures and currents.""" with LaserController(port=port) as ctrl: try: ctrl.set_manual_mode( temp1=25.0, temp2=30.0, current1=40.0, current2=35.0, ) print("Manual parameters sent.") data = ctrl.get_measurements() if data: print(f" Temp1: {data.temp1:.2f} °C") print(f" Temp2: {data.temp2:.2f} °C") print(f" I1: {data.current1:.3f} mA") print(f" I2: {data.current2:.3f} mA") print(f" 3.3V: {data.voltage_3v3:.3f} V") print(f" 5V: {data.voltage_5v1:.3f} V") print(f" 7V: {data.voltage_7v0:.3f} V") except ValidationError as e: print(f"Parameter validation error: {e}") except CommunicationError as e: print(f"Communication error: {e}") def example_embed_in_app(): """ Minimal embedding pattern for use inside another application. The controller can be created once and kept alive for the lifetime of the host application. No GUI dependency whatsoever. """ ctrl = LaserController(port=None) # auto-detect port try: ctrl.connect() except CommunicationError as e: print(f"Cannot connect: {e}") return ctrl return ctrl # caller owns the controller; call ctrl.disconnect() when done if __name__ == '__main__': port = sys.argv[1] if len(sys.argv) > 1 else None print("=== Manual mode example ===") example_manual_mode(port)