Work
This commit is contained in:
parent
f126373371
commit
3e2a357b77
@ -5,13 +5,10 @@ from adafruit_servokit import ServoKit
|
||||
|
||||
import getch
|
||||
import logging
|
||||
import multiprocessing
|
||||
import os
|
||||
import pprint
|
||||
import sys
|
||||
import time
|
||||
import threading
|
||||
import tty
|
||||
import yaml
|
||||
|
||||
|
||||
@ -26,6 +23,8 @@ class MikesServoMapper:
|
||||
|
||||
__ESCAPE_KEY = chr(27)
|
||||
|
||||
__DEFAULT_OUTPUT_FILE_NAME = "servo-mappings.yml"
|
||||
|
||||
def __init__(self, config_file: str, names):
|
||||
|
||||
# noinspection PyTypeChecker
|
||||
@ -116,6 +115,7 @@ class MikesServoMapper:
|
||||
self.__logger.info("1. Create mappings")
|
||||
self.__logger.info("2. Test current mappings")
|
||||
self.__logger.info("3. Write mappings to file")
|
||||
self.__logger.info("4. Load previously saved mappings")
|
||||
self.__logger.info("Q. Quit")
|
||||
user_choice = input("====> ")
|
||||
|
||||
@ -129,6 +129,8 @@ class MikesServoMapper:
|
||||
self.test_mappings()
|
||||
elif user_choice == "3":
|
||||
self.write_mappings()
|
||||
elif user_choice == "4":
|
||||
self.load_mappings()
|
||||
else:
|
||||
self.__logger.warning("Invalid choice: %s" % user_choice)
|
||||
|
||||
@ -248,12 +250,56 @@ class MikesServoMapper:
|
||||
# Center
|
||||
servo.angle = 90
|
||||
|
||||
def write_mappings(self):
|
||||
def make_mappings_output_file_path(self):
|
||||
|
||||
output_file_path = os.path.join(
|
||||
"output",
|
||||
"servo-mappings.yml"
|
||||
self.__DEFAULT_OUTPUT_FILE_NAME
|
||||
)
|
||||
|
||||
return output_file_path
|
||||
|
||||
def write_mappings(self):
|
||||
|
||||
output_file_path = self.make_mappings_output_file_path()
|
||||
|
||||
data = {
|
||||
"servo-mappings": self.__mappings
|
||||
}
|
||||
|
||||
with open(output_file_path, 'w') as f:
|
||||
yaml.dump(self.__mappings, f, default_flow_style=False)
|
||||
yaml.dump(data, f, default_flow_style=False)
|
||||
|
||||
def load_mappings(self, file_path=None):
|
||||
|
||||
if file_path is None:
|
||||
file_path = self.make_mappings_output_file_path()
|
||||
|
||||
self.__logger.info("Attempting to load mappings from: %s" % (file_path,))
|
||||
|
||||
with open(file_path) as f:
|
||||
loaded_data = yaml.safe_load(f)
|
||||
|
||||
if "servo-mappings" not in loaded_data.keys():
|
||||
self.__logger.warning("Could not find key 'servo-mappings' in loaded data")
|
||||
return
|
||||
|
||||
mappings = loaded_data["servo-mappings"]
|
||||
if not isinstance(mappings, dict):
|
||||
self.__logger.warning("Mappings aren't in dict format; Won't load")
|
||||
return
|
||||
|
||||
for name in mappings.keys():
|
||||
|
||||
self.__logger.info("Examining mapping: %s" % (name,))
|
||||
|
||||
channel = mappings[name]
|
||||
|
||||
if not isinstance(channel, int):
|
||||
self.__logger.warning("Mapping isn't an integer; Ignoring: %s" % channel)
|
||||
continue
|
||||
|
||||
self.__logger.info("Loading mapping: %s ==> %s" % (name, channel))
|
||||
self.set_name_mapping(name=name, channel=channel)
|
||||
|
||||
self.__logger.info("Done loading mappings")
|
||||
|
7
output/.gitignore
vendored
Normal file
7
output/.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
#
|
||||
*.yml
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user