Common main
This commit is contained in:
4
Makefile
4
Makefile
@ -1,6 +1,6 @@
|
||||
run-pelican:
|
||||
@ uv run python pelican.py --port /dev/ttyUSB0 --baud 115200
|
||||
@ uv run python main.py pelican --port /dev/ttyUSB0 --baud 115200
|
||||
|
||||
|
||||
run-glory:
|
||||
@ uv run python glory.py --port /dev/ttyUSB0 --baud 115200
|
||||
@ uv run python main.py glory --port /dev/ttyUSB0 --baud 115200
|
||||
|
||||
92
main.py
Normal file
92
main.py
Normal file
@ -0,0 +1,92 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Unified Device Simulator
|
||||
Entry point for running Pelican or Glory device simulators.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
|
||||
from glory import GlorySimulator
|
||||
|
||||
# Import simulators
|
||||
from pelican import PelicanSimulator
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Device Simulator - Run Pelican or Glory MACH6 simulator",
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
epilog="""
|
||||
Examples:
|
||||
# Run Pelican simulator
|
||||
python main.py pelican --port /dev/ttyUSB0
|
||||
|
||||
# Run Glory simulator
|
||||
python main.py glory --port /dev/ttyUSB1 --baudrate 9600
|
||||
|
||||
# Get help for specific simulator
|
||||
python main.py pelican --help
|
||||
python main.py glory --help
|
||||
""",
|
||||
)
|
||||
|
||||
# Add subparsers for each simulator type
|
||||
subparsers = parser.add_subparsers(
|
||||
dest="simulator", help="Simulator type to run", required=True
|
||||
)
|
||||
|
||||
# Pelican simulator subcommand
|
||||
pelican_parser = subparsers.add_parser(
|
||||
"pelican", help="Run Pelican coin counter simulator"
|
||||
)
|
||||
pelican_parser.add_argument(
|
||||
"--port",
|
||||
"-p",
|
||||
default="/dev/ttyUSB0",
|
||||
help="Serial port (default: /dev/ttyUSB0)",
|
||||
)
|
||||
pelican_parser.add_argument(
|
||||
"--baudrate", "-b", type=int, default=115200, help="Baud rate (default: 115200)"
|
||||
)
|
||||
|
||||
# Glory simulator subcommand
|
||||
glory_parser = subparsers.add_parser(
|
||||
"glory", help="Run Glory MACH6 coin counter simulator"
|
||||
)
|
||||
glory_parser.add_argument(
|
||||
"--port",
|
||||
"-p",
|
||||
default="/dev/ttyUSB0",
|
||||
help="Serial port (default: /dev/ttyUSB0)",
|
||||
)
|
||||
glory_parser.add_argument(
|
||||
"--baudrate", "-b", type=int, default=115200, help="Baud rate (default: 115200)"
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
# Run the appropriate simulator
|
||||
try:
|
||||
if args.simulator == "pelican":
|
||||
print(
|
||||
f"Starting Pelican simulator on {args.port} at {args.baudrate} baud..."
|
||||
)
|
||||
simulator = PelicanSimulator(args.port, args.baudrate)
|
||||
simulator.run()
|
||||
elif args.simulator == "glory":
|
||||
print(
|
||||
f"Starting Glory MACH6 simulator on {args.port} at {args.baudrate} baud..."
|
||||
)
|
||||
simulator = GlorySimulator(args.port, args.baudrate)
|
||||
simulator.run()
|
||||
except KeyboardInterrupt:
|
||||
print("\nSimulator stopped by user")
|
||||
sys.exit(0)
|
||||
except Exception as e:
|
||||
print(f"Error: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user