Conversor Morse C

You might also like

You are on page 1of 3

Conversor de Texto a Cdigo Morse (C++)

16776960 16711680 3348860

1FEFF00

/*
** Text to Morse Code Converter
**
** Copyright (C) 2005 Ramn E. Torres Salomn
*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#ifdef _MSC_VER
#include <windows.h>
#else
#include <dos.h>
#endif
#define MORSE_BEEP_FREQ

800 // 0.8KHz

// Timers
#define MORSE_DOT_TIME
70
#define MORSE_DASH_TIME
210
#define MORSE_CHARACTER_SEPARATION MORSE_DOT_TIME*3
#define MORSE_WORD_SEPARATION
MORSE_DOT_TIME*7
// Functions prototipes
void playsound(int note, int duration);
void morse(char c);
int main(void)
{
char buffer[256];
printf("Raymondjavaxx Text to Morse Code Converter\n");
printf("------------------------------------------\n");
printf("Type a text and press enter: ");
gets(buffer);
int x=0;
while(buffer[x])
{
if(buffer[x] == ' ')
{
printf("\n");
while(buffer[x] == ' ')
x++;
if(buffer[x] == NULL)
break;
#ifdef _MSC_VER
Sleep(MORSE_WORD_SEPARATION);
#else

delay(MORSE_WORD_SEPARATION);
#endif
}
morse(buffer[x]);
x++;
}
system("PAUSE");
return 0;
}
/*********
* func: morse
* desc: morse parsing function
********************************************/
void morse(char c)
{
char code[8] = {0};
switch(toupper(c))
{
// Letter Morse
case 'A': strcpy(code,
case 'B': strcpy(code,
case 'C': strcpy(code,
case 'D': strcpy(code,
case 'E': strcpy(code,
case 'F': strcpy(code,
case 'G': strcpy(code,
case 'H': strcpy(code,
case 'I': strcpy(code,
case 'J': strcpy(code,
case 'K': strcpy(code,
case 'L': strcpy(code,
case 'M': strcpy(code,
case 'N': strcpy(code,
case 'O': strcpy(code,
case 'P': strcpy(code,
case 'Q': strcpy(code,
case 'R': strcpy(code,
case 'S': strcpy(code,
case 'T': strcpy(code,
case 'U': strcpy(code,
case 'V': strcpy(code,
case 'W': strcpy(code,
case 'X': strcpy(code,
case 'Y': strcpy(code,
case 'Z': strcpy(code,

".-"); break;
"-..."); break;
"-.-."); break;
"-.."); break;
"."); break;
"..-."); break;
"--."); break;
"...."); break;
".."); break;
"-.-."); break;
"-.-"); break;
".-.."); break;
"--"); break;
"-."); break;
"---"); break;
".--."); break;
"--.-"); break;
".-."); break;
"..."); break;
"-"); break;
"..-"); break;
"...-"); break;
".--"); break;
"-..-"); break;
"-.--"); break;
"--.."); break;

// Digit Morse
case '0': strcpy(code,
case '1': strcpy(code,
case '2': strcpy(code,
case '3': strcpy(code,
case '4': strcpy(code,
case '5': strcpy(code,
case '6': strcpy(code,
case '7': strcpy(code,

"-----");
".----");
"..---");
"...--");
"....-");
".....");
"-....");
"--...");

break;
break;
break;
break;
break;
break;
break;
break;

case '8': strcpy(code, "---.."); break;


case '9': strcpy(code, "----."); break;
// Others
case '.': strcpy(code, ".-.-.-"); break;
case ',': strcpy(code, "--..--"); break;
case '?': strcpy(code, "..--.."); break;
default: printf("[invalid character '%c']\n", c); break;
}
for(int i=0; i<8; i++)
{
if(code[i] == '-')
{
printf("%c", code[i]);
playsound(MORSE_BEEP_FREQ, MORSE_DASH_TIME);
}
else if(code[i] == '.')
{
printf("%c", code[i]);
playsound(MORSE_BEEP_FREQ, MORSE_DOT_TIME);
}
}
}

printf("\n");

/*********
* func: playsound
* desc: play a note with pc internal speaker
********************************************/
void playsound(int note, int duration)
{
#ifdef _MSC_VER
Beep(note, duration);
Sleep(MORSE_CHARACTER_SEPARATION);
#else
sound(note);
delay(duration);
nosound();
delay(MORSE_CHARACTER_SEPARATION);
#endif
}
El cdigo est preparado para ser compilado en Turbo C++ o en Visual C++ 6.

You might also like