Referencia: Leon-Couch, 5–9 Señalización Pasabanda Modulada Binaria (OOK), Código Morse Wikipedia , Telégrafo Wikipedia, Recommendation ITU-R M.1677-1 (10/2009) International Morse code,
Dato Histórico – 1844 Samuel F. B. Morse muestra la línea de telégrafo en Baltimore, MD y Washington, DC
El código Morse fué muy usado en telegrafía, transmisiones por radio marítimas y aéreas.
Conocido también como alfabeto Morse, cambia los caracteres alfanuméricos a códigos morse combinando puntos '.'
y rayas '-'
. La separación entre códigos morse se realiza con un espacio ' '
, mientras que en la separación entre palabras se usan 3 espacios ' '
.
Ejemplo: un mensaje: ESPOL impulsando la sociedad del conocimiento . ... .--. --- .-.. .. -- .--. ..- .-.. ... .- -. -.. --- .-.. .- ... --- -.-. .. . -.. .- -.. -.. . .-.. -.-. --- -. --- -.-. .. -- .. . -. - ---
Un tema que permite revisar varios conceptos de telecomunicaciones es el telégrafo y el código Morse.
Los bloques de desarrollo usados en ésta sección se presentan el el siguiente diagrama
Codificador en Python
La traducción entre un caracter del alfabeto a un código morse se puede facilitar con una función dedicada a ésta tarea.
Para buscar un equivalente de un caracter en una tabla de conversión a código, por facilidad de usar como índice un caracter
se propone usar un diccionario de python.
Algoritmo en Python
# Código Morse - codificador # propuesta: edelros@espol.edu.ec def morsecodec(caracter): equivale={ 'A':'.-', 'B':'-...', 'C':'-.-.', 'CH':'----', 'D':'-..', 'E':'.', 'F':'..-.', 'G':'--.', 'H':'....', 'I':'..', 'J':'.---', 'K':'-.-', 'L':'.-..', 'M':'--', 'N':'-.', 'Ñ':'--.--', 'O':'---', 'P':'.--.', 'Q':'--.-', 'R':'.-.', 'S':'...', 'T':'-', 'U':'..-', 'V':'...-', 'W':'.--', 'X':'-..-', 'Y':'-.--', 'Z':'--..', '0':'-----', '1':'.----', '2':'..---', '3':'...--', '4':'....-', '5':'.....', '6':'-....', '7':'--...', '8':'---..', '9':'----.', '.':'.-.-.-', ',':'-.-.--', '?':'..--..', '"':'.-..-.', '!':'--..--', ' ':' '} caracter=caracter.upper() codigo=equivale[caracter] return(codigo)
El programa para cambiar un mensaje a su versión morse se simplifica usando la función anterior.
# INGRESO mensaje = input('un mensaje: ') # mensaje= 'ESPOL impulsando la sociedad del conocimiento' # PROCEDIMIENTO n = len(mensaje) traducido = '' for caracter in mensaje: traducido = traducido + morsecodec(caracter) + ' ' # SALIDA print(traducido)
La ejecución del programa y la función tiene el resultado mostrado en el ejemplo.
un mensaje: ESPOL impulsando la sociedad del conocimiento . ... .--. --- .-.. .. -- .--. ..- .-.. ... .- -. -.. --- .-.. .- ... --- -.-. .. . -.. .- -.. -.. . .-.. -.-. --- -. --- -.-. .. -- .. . -. - ---
Decodificador en Python
Para realizar el proceso inverso al codificador, se ingresa un código morse obtenido de un receptor a un decodificador.
Ejemplo:
mensaje en morse:
. ... .--. --- .-.. .. -- .--. ..- .-.. ... .- -. -.. --- .-.. .- ... --- -.-. .. . -.. .- -.. -.. . .-.. -.-. --- -. --- -.-. .. -- .. . -. - ---
ESPOL IMPULSANDO LA SOCIEDAD DEL CONOCIMIENTO
Decodificar Morse requiere usar una tabla de equivalentes descrita en el estándar internacional (ITU), en el orden contrario al codificador.
En un mensaje morse, las palabras son separadas por tres espacios ' '
; en una palabra, cada código se separa por un espacio ' '
.
Algoritmo en Python
La traducción de un codigo morse a un caracter del alfabeto, se puede realizar con una función.
De forma semejante al codificador, se usa la tabla de equivalentes como un diccionario.
# Código Morse - DECOdificador # propuesta: edelros@espol.edu.ec def morsedeco(codigo): equivale={ '.-':'A', '-...':'B', '-.-.':'C', '----':'CH', '-..':'D', '.':'E', '..-.':'F', '--.':'G', '....':'H', '..':'I', '.---':'J', '-.-':'K', '.-..':'L', '--':'M', '-.':'N', '--.--':'Ñ', '---':'O', '.--.':'P', '--.-':'Q', '.-.':'R', '...':'S', '-':'T', '..-':'U', '...-':'V', '.--':'W', '-..-':'X', '-.--':'Y', '--..':'Z', '-----':'0', '.----':'1', '..---':'2', '...--':'3', '....-':'4', '.....':'5', '-....':'6', '--...':'7', '---..':'8', '----.':'9', '.-.-.-':'.', '-.-.--':',', '..--..':'?', '.-..-.':'"', '--..--':'!', ' ':' ', ' ':' '} caracter=equivale[codigo] return(caracter)
El programa para cambiar un mensaje morse al alfabeto se simplifica usando la función anterior.
La ejecución del programa y la función tiene el resultado mostrado en el ejemplo.
# INGRESO traducido = input('mensaje en morse: ') # traducido='. ... .--. --- .-.. .. -- .--. ..- .-.. ... .- -. -.. --- .-.. .- ... --- -.-. .. . -.. .- -.. -.. . .-.. -.-. --- -. --- -.-. .. -- .. . -. - --- ' # PROCEDIMIENTO mensaje = '' palabras = traducido.split(' ') for unapalabra in palabras: letras = unapalabra.split(' ') for unaletra in letras: mensaje = mensaje+morsedeco(unaletra) mensaje = mensaje + ' ' # SALIDA print('mensaje decodificado: ') print(mensaje)
mensaje en morse:
. ... .--. --- .-.. .. -- .--. ..- .-.. ... .- -. -.. --- .-.. .- ... --- -.-. .. . -.. .- -.. -.. . .-.. -.-. --- -. --- -.-. .. -- .. . -. - ---
mensaje decodificado:
ESPOL IMPULSANDO LA SOCIEDAD DEL CONOCIMIENTO