From e9b22fffa83131268c68857d291273c53e6ef21e Mon Sep 17 00:00:00 2001 From: Architrb1795 Date: Sat, 7 Feb 2026 15:27:52 +0530 Subject: [PATCH 1/2] Replace deprecated serial_handler imports with pslab.connection --- docs/internal.rst | 2 +- pslab/cli.py | 2 +- pslab/external/gas_sensor.py | 2 +- pslab/external/hcsr04.py | 2 +- pslab/external/tcd1304.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/internal.rst b/docs/internal.rst index 13d59590..df8dc2ad 100644 --- a/docs/internal.rst +++ b/docs/internal.rst @@ -7,7 +7,7 @@ here. Serial handler --------------- -.. automodule:: pslab.serial_handler +.. automodule:: pslab.connection :members: :undoc-members: :show-inheritance: diff --git a/pslab/cli.py b/pslab/cli.py index 5ba833bd..42e7a131 100644 --- a/pslab/cli.py +++ b/pslab/cli.py @@ -32,7 +32,7 @@ from pslab.instrument.logic_analyzer import LogicAnalyzer from pslab.instrument.oscilloscope import Oscilloscope from pslab.instrument.waveform_generator import WaveformGenerator, PWMGenerator -from pslab.serial_handler import SerialHandler +from pslab.connection import SerialHandler def logic_analyzer( diff --git a/pslab/external/gas_sensor.py b/pslab/external/gas_sensor.py index 9e3f6867..7cff65bd 100644 --- a/pslab/external/gas_sensor.py +++ b/pslab/external/gas_sensor.py @@ -3,7 +3,7 @@ from typing import Callable, Union from pslab import Multimeter -from pslab.serial_handler import SerialHandler +from pslab.connection import SerialHandler class MQ135: diff --git a/pslab/external/hcsr04.py b/pslab/external/hcsr04.py index 602173df..ee4b23d3 100644 --- a/pslab/external/hcsr04.py +++ b/pslab/external/hcsr04.py @@ -4,7 +4,7 @@ from pslab.instrument.logic_analyzer import LogicAnalyzer from pslab.instrument.waveform_generator import PWMGenerator -from pslab.serial_handler import SerialHandler +from pslab.connection import SerialHandler class HCSR04: diff --git a/pslab/external/tcd1304.py b/pslab/external/tcd1304.py index aaec8346..411191e6 100644 --- a/pslab/external/tcd1304.py +++ b/pslab/external/tcd1304.py @@ -35,7 +35,7 @@ from pslab import PWMGenerator from pslab.instrument.waveform_generator import _get_wavelength from pslab.protocol import MAX_SAMPLES -from pslab.serial_handler import SerialHandler +from pslab.connection import SerialHandler class TCD1304: From ed688dc23183b35212ee7eeb3d1e76c8c98c9239 Mon Sep 17 00:00:00 2001 From: Architrb1795 Date: Mon, 9 Feb 2026 17:34:07 +0530 Subject: [PATCH 2/2] Fix CLI connection lifecycle when migrating to pslab.connection --- pslab/cli.py | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/pslab/cli.py b/pslab/cli.py index 42e7a131..f9b8eee9 100644 --- a/pslab/cli.py +++ b/pslab/cli.py @@ -32,7 +32,7 @@ from pslab.instrument.logic_analyzer import LogicAnalyzer from pslab.instrument.oscilloscope import Oscilloscope from pslab.instrument.waveform_generator import WaveformGenerator, PWMGenerator -from pslab.connection import SerialHandler +from pslab.connection import SerialHandler, autoconnect def logic_analyzer( @@ -222,6 +222,20 @@ def pwm(handler: SerialHandler, args: argparse.Namespace): ) +def _get_connected_handler(args: argparse.Namespace) -> SerialHandler: + """Get a connected SerialHandler based on arguments.""" + try: + if args.port: + handler = SerialHandler(port=args.port) + handler.connect() + else: + handler = autoconnect() + return handler + except Exception as e: + print(f"Error: Could not connect to PSLab device. Details: {e}") + sys.exit(1) + + def main(args: argparse.Namespace): """Perform the given function on PSLab. @@ -234,18 +248,21 @@ def main(args: argparse.Namespace): install(args) return - handler = SerialHandler(port=args.port) - if args.function == "flash": flash(pslab.ScienceLab(args.port), args.hexfile) return - if args.function == "collect": - collect(handler, args) - elif args.function == "wave": - wave(handler, args) - elif args.function == "pwm": - pwm(handler, args) + handler = _get_connected_handler(args) + + try: + if args.function == "collect": + collect(handler, args) + elif args.function == "wave": + wave(handler, args) + elif args.function == "pwm": + pwm(handler, args) + finally: + handler.disconnect() def get_parser() -> Tuple[argparse.ArgumentParser, argparse._SubParsersAction]: