44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
from .error_sources import ErrorSource, WarningSource
|
|
|
|
from openflexure_microscope.config import user_configuration
|
|
|
|
|
|
def main():
|
|
error_sources = []
|
|
|
|
try:
|
|
from sangaboard import Sangaboard
|
|
except Exception as e: # pylint: disable=W0703
|
|
error_sources.append(ErrorSource(
|
|
"Sangaboard module could not be imported."
|
|
))
|
|
else:
|
|
configuration = user_configuration.load()
|
|
stage_type = configuration["stage"].get("type")
|
|
stage_port = configuration["stage"].get("port")
|
|
|
|
error_sources.append(WarningSource(
|
|
"Stage serial port is not specified in configuration. Application will scan ports for a Sangaboard."
|
|
))
|
|
|
|
|
|
# If any Sangaboard-based stage is configured for use
|
|
if stage_type in ("SangaBoard", "SangaStage", "SangaDeltaStage"):
|
|
# Try connecting on the specified port
|
|
try:
|
|
_ = Sangaboard(stage_port)
|
|
except FileNotFoundError as e: # pylint: disable=W0703
|
|
if stage_port:
|
|
error_sources.append(ErrorSource(
|
|
f"No {stage_type} device was found on the configured port {stage_port}."
|
|
))
|
|
else:
|
|
error_sources.append(ErrorSource(
|
|
f"No {stage_type} device was found during port scanning."
|
|
))
|
|
else:
|
|
error_sources.append(ErrorSource(
|
|
f"Invalid stage type {stage_type} specified in configuration file."
|
|
))
|
|
|
|
return error_sources
|