-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyergometer.py
More file actions
executable file
·57 lines (44 loc) · 1.86 KB
/
pyergometer.py
File metadata and controls
executable file
·57 lines (44 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Control and logging program for Kettler ergometers"""
__appname__ = "pyergometer"
__author__ = "Joni Kähärä (kahara)"
__version__ = "0.0pre0"
__license__ = "GNU GPL 3.0 or later"
import logging
log = logging.getLogger(__name__)
import argparse
from session import Session
from kettler import Kettler
from simulator import Simulator
from ergometer import Ergometer
from telemetry import Telemetry
if __name__ == '__main__':
parser = argparse.ArgumentParser(description=__doc__, version="v%s" % __version__)
parser.add_argument('-s', '--session', action='store', dest='session', default=None, required=True, help='Use session file SESSION (jErgometer-like XML format)')
parser.add_argument('-d', '--device', action='store', dest='device', default=None, help='Use serial device DEVICE')
parser.add_argument('-l', '--log', action='store', dest='log', default=None, help='Record session stats to log file LOG')
parser.add_argument('-x', '--simulate', action='store_true', dest='simulate', default=None, help='Run session file against a simulation')
args = parser.parse_args()
if not args.session:
parser.print_help()
exit()
session = Session(session=args.session)
if args.simulate:
simulator = Simulator()
ergometer = Ergometer(device=simulator, session=session, log=args.log)
elif args.device:
kettler = Kettler(device=args.device)
ergometer = Ergometer(device=kettler, session=session, log=args.log)
else:
parser.print_help()
exit()
telemetry = Telemetry(ergometer=ergometer, session=session)
try:
telemetry.start()
except(KeyboardInterrupt, SystemExit):
telemetry.running = False
sys.exit()
ergometer.run()
telemetry.running = False
telemetry.join()