morse-light/cli.py

98 lines
3.4 KiB
Python
Raw Normal View History

############################################
# #
# script permettant dutiliser #
# facilement le traducteur texte/morse #
# #
############################################
##########
# IMPORT #
##########
import argparse
from signal import signal, SIGINT
import logging
try:
from morse import TraducteurMorse as morse
except:
exit(1)
######################
# INITIALISATION DES #
# VARIABLES #
######################
__author__ = "Rick"
__licence__ = "GLP3 or later"
parser = argparse.ArgumentParser(
description="Permet dentrer des phrases ou des mots qui seront traduient en morse grace à la classe traducteurMorse. Cette traduction sera ensuite convertie en flash lumineux."
)
parser.add_argument('-m', '--message', nargs=1, help="Permet de juste passer un message à traduire.")
parser.add_argument('--point', nargs=1, type=float, help="Définit la durée en seconde dun point.")
parser.add_argument('--gpio', nargs=1, type=int, help="Définit le port GPIO du relai ou de la LED.")
parser.add_argument('-v', '--verbose', action="store_true", help="Affiche de manière détaillée le processus.")
args = parser.parse_args()
if args.verbose:
logging.getLogger('morse-light').setLevel(logging.INFO)
logging.basicConfig(level=logging.INFO)
def recupSignal(sig, frame):
"""
Fonction appelée lorsque lutilisateur fait Ctrl+C
Permet de sortir du programme
"""
print("\nAu revoir !")
exit(0)
def checkTemps(temps):
"""
Vérifie si le temps entré nest pas trop long et est positif
Parameters
----------
temps : int
Le temps dun point en seconde
"""
if not isinstance(temps, float):
logging.error("Le temps doit être de type float.")
elif temps <= 0:
logging.error("Le temps passé en paramètre est négatif ou égale à zéro")
exit(1)
elif temps < 0.1 or temps > 2:
logging.warning("Le temps passé en paramètre est trop court ou trop long.")
garderTemps = input("Souhaitez-vous vraiment ce temps ? O/n")
if garderTemps.lower() != "o":
print("Annulation...")
exit(1)
signal(SIGINT, recupSignal)
try:
if args.point and args.gpio:
checkTemps(args.point[0])
traducteur = morse(args.gpio[0], args.point[0])
elif args.point:
checkTemps(args.point[0])
traducteur = morse(point=args.point[0])
elif args.gpio:
traducteur = morse(args.gpio[0])
else:
traducteur = morse()
if args.message:
traducteur.traductionEtEnvoie(args.message[0])
else:
print("Entrez ':q' pour quitter le programme.")
entreUtilisateur = input("Entrez une phrase ou un mot à traduire et à transmettre en morse : ")
while entreUtilisateur != ':q':
print("\n")
traducteur.traductionEtEnvoie(entreUtilisateur)
print("\n")
print("Entrez ':q' pour quitter le programme.")
entreUtilisateur = input("Entrez une phrase ou un mot à traduire et à transmettre en morse : ")
print("\nAu revoir !")
except Exception as err:
logging.error("Une erreur de type %s a été rencontrée. Utilisez l'option -v pour pouvoir voir le message d'erreur.", type(err).__name__)
logging.info(err)