60 lines
1.8 KiB
Python
60 lines
1.8 KiB
Python
"""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)
|