Codigo Morse en FWH ( SOLUCIONADO ) :)

Codigo Morse en FWH ( SOLUCIONADO ) :)

Postby sysctrl2 » Thu Dec 13, 2012 3:49 am

Hola Equipo, alguien puede traducir
este codigo en FWH ?
algun guru ?

saludos.
Code: Select all  Expand view
/*
** Text to Morse Code Converter
**
** Copyright (C) 2005 Ramón E. Torres Salomón
*/


#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, ".-");  break;
  case 'B': strcpy(code, "-..."); break;
  case 'C': strcpy(code, "-.-."); break;
  case 'D': strcpy(code, "-..");  break;
  case 'E': strcpy(code, ".");  break;
  case 'F': strcpy(code, "..-."); break;
  case 'G': strcpy(code, "--.");  break;
  case 'H': strcpy(code, "...."); break;
  case 'I': strcpy(code, "..");  break;
  case 'J': strcpy(code, "-.-."); break;
  case 'K': strcpy(code, "-.-");  break;
  case 'L': strcpy(code, ".-.."); break;
  case 'M': strcpy(code, "--");  break;
  case 'N': strcpy(code, "-.");  break;
  case 'O': strcpy(code, "---");  break;
  case 'P': strcpy(code, ".--."); break;
  case 'Q': strcpy(code, "--.-"); break;
  case 'R': strcpy(code, ".-.");  break;
  case 'S': strcpy(code, "...");  break;
  case 'T': strcpy(code, "-");  break;
  case 'U': strcpy(code, "..-");  break;
  case 'V': strcpy(code, "...-"); break;
  case 'W': strcpy(code, ".--");  break;
  case 'X': strcpy(code, "-..-"); break;
  case 'Y': strcpy(code, "-.--"); break;
  case 'Z': strcpy(code, "--.."); break;

  // Digit Morse
  case '0': strcpy(code, "-----"); break;
  case '1': strcpy(code, ".----"); break;
  case '2': strcpy(code, "..---"); break;
  case '3': strcpy(code, "...--"); break;
  case '4': strcpy(code, "....-"); break;
  case '5': strcpy(code, "....."); break;
  case '6': strcpy(code, "-...."); break;
  case '7': strcpy(code, "--..."); 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
}
Last edited by sysctrl2 on Tue Dec 18, 2012 3:13 am, edited 1 time in total.
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1018
Joined: Mon Feb 05, 2007 7:15 pm

Re: Codigo Morse en FWH

Postby Biel EA6DD » Fri Dec 14, 2012 12:35 pm

No es exactamente igual a la que cuelgas, pero hace lo mismo.
Str2Morse("Hola mundo")
Por curiosidad, donde vas a usar la función.
Code: Select all  Expand view

/*
BielSys 2012 EA6DD
*/

#include "FiveWin.ch"
#define MORSE_BEEP_FREQ        800 // 0.8KHz
// Timers
#define WPM                         20  //Palabras por minuto
#define MORSE_DOT_TIME              (1200 / WPM)        //Tiempo en milisegundos
#define MORSE_DASH_TIME             MORSE_DOT_TIME * 3
#define MORSE_CHARACTER_SEPARATION  MORSE_DOT_TIME * 3
#define MORSE_WORD_SEPARATION       MORSE_DOT_TIME * 7
//--------------------------------------------------------
FUNCTION Str2Morse(cStr)
   LOCAL cDig,cDashDot,hAlfa:=AlfabetoMorse()
   cStr:=AllTrim(cStr)
   hb_hCaseMatch( hAlfa, .F. )
   FOR EACH cDig IN cStr
      IF cDig!=Space(1)
         IF hb_hHasKey(hAlfa,cDig)
            FOR EACH cDashDot IN hAlfa[cDig]
               IF  cDashDot == "-"
                  Beep(MORSE_BEEP_FREQ,MORSE_DASH_TIME )
               ELSE
                  Beep(MORSE_BEEP_FREQ,MORSE_DOT_TIME)
               ENDIF
               Sleep(MORSE_DOT_TIME)
            NEXT
            Sleep(MORSE_CHARACTER_SEPARATION)
         ENDIF
      ELSE
         Sleep(MORSE_WORD_SEPARATION)
      ENDIF
   NEXT
RETURN NIL
//-------------------------------
STATIC FUNCTION AlfabetoMorse()
   LOCAL hAlfa:=hb_hash()
   hAlfa[' ']:= " "
   hAlfa['A']:= ".-"
   hAlfa['B']:= "-..."
   hAlfa['C']:= "-.-."
   hAlfa['D']:= "-.."
   hAlfa['E']:= "."
   hAlfa['F']:= "..-."
   hAlfa['G']:= "--."
   hAlfa['H']:= "...."
   hAlfa['I']:= ".."
   hAlfa['J']:= "-.-."
   hAlfa['K']:= "-.-"
   hAlfa['L']:= ".-.."
   hAlfa['M']:= "--"
   hAlfa['N']:= "-."
   hAlfa['O']:= "---"
   hAlfa['P']:= ".--."
   hAlfa['Q']:= "--.-"
   hAlfa['R']:= ".-."
   hAlfa['S']:= "..."
   hAlfa['T']:= "-"
   hAlfa['U']:= "..-"
   hAlfa['V']:= "...-"
   hAlfa['W']:= ".--"
   hAlfa['X']:= "-..-"
   hAlfa['Y']:= "-.--"
   hAlfa['Z']:= "--.."
   // Digit Morse
   hAlfa['0']:= "-----"
   hAlfa['1']:= ".----"
   hAlfa['2']:= "..---"
   hAlfa['3']:= "...--"
   hAlfa['4']:= "....-"
   hAlfa['5']:= "....."
   hAlfa['6']:= "-...."
   hAlfa['7']:= "--..."
   hAlfa['8']:= "---.."
   hAlfa['9']:= "----."
   // Others
   hAlfa['.']:= ".-.-.-"
   hAlfa[',']:= "--..--"
   hAlfa['?']:= "..--.."
RETURN hAlfa
#pragma BEGINDUMP

#include "windows.h"
#include "hbapi.h"

HB_FUNC( SLEEP )
{
    Sleep( hb_parnl( 1 ) );
}
HB_FUNC( BEEP )
{
   Beep(hb_parnl( 1 ), hb_parnl(2) );
}
#pragma ENDDUMP
 
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Re: Codigo Morse en FWH

Postby sysctrl2 » Fri Dec 14, 2012 9:31 pm

Hola Gabriel, gracias por responder,

voy a probar,

Hay programas que traducen las letras a codigo morse pero ninguno traduce la letra ñ

el codigo morse lo usan los militares, la verdad desconozco para que jeje.

saludos.
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1018
Joined: Mon Feb 05, 2007 7:15 pm

Re: Codigo Morse en FWH

Postby sysctrl2 » Fri Dec 14, 2012 9:35 pm

por cierto Biel,
la funcion Str2Morse("Hola mundo")
es para harbour ?
estoy compilando con xhb y no existe .

saludos.

gracias..
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1018
Joined: Mon Feb 05, 2007 7:15 pm

Re: Codigo Morse en FWH

Postby sysctrl2 » Fri Dec 14, 2012 9:49 pm

Tambien al compilar la funcion con harbour,
no encuentra la funcion,
de seguro me falta alguna lib,
:shock:
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1018
Joined: Mon Feb 05, 2007 7:15 pm

Re: Codigo Morse en FWH

Postby Enrrique Vertiz » Sat Dec 15, 2012 2:29 pm

Cesar, me parece que la Funcion esta incluida en el codigo que coloca Biel en su mensaje ...
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23.1026X, Fwh 24.09, BCC74, MySQL 8.0.X, SQLLIB 1.9m
Enrrique Vertiz
 
Posts: 540
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru

Re: Codigo Morse en FWH

Postby Biel EA6DD » Sat Dec 15, 2012 4:23 pm

Como te comentan el código de la función es el que te incluyo en el mensaje. Esta probado con Harbour, puede que para compilar en xHarbour haya que hacer algún cambio en las funciones relacionadas con el uso de hash.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Re: Codigo Morse en FWH

Postby sysctrl2 » Sat Dec 15, 2012 6:27 pm

Gracias Biel, la funcion funciona de maravilla,
y efectivamente solo esta para harbour
pero mas que suficiente para lo que lo necesito
Saludos.
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1018
Joined: Mon Feb 05, 2007 7:15 pm

Re: Codigo Morse en FWH

Postby Silvio.Falconi » Sun Dec 16, 2012 8:06 pm

run ok onòy with harbour ..how converte it for xharbour ?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 7052
Joined: Thu Oct 18, 2012 7:17 pm

Re: Codigo Morse en FWH

Postby Jairo Barbosa » Mon Dec 17, 2012 2:23 am

Biel buenas noches

Al compilar el código que cuelgas me da este error, por favor me ayudas? me interesa el ejemplo.
URL=http://imageshack.us/photo/my-images/41/morse.jpg/]Image[/URL]

Uploaded with ImageShack.us

Muy agradecido

Jairo Barbosa

FWH 1204 Harbour xDevstudio, xmate
User avatar
Jairo Barbosa
 
Posts: 194
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia

Re: Codigo Morse en FWH

Postby Biel EA6DD » Mon Dec 17, 2012 9:52 am

Asumo que todos somos programaodores, luego pasar de harbour a xharbour en este caso no tiene mayor problema que buscar las funciones sinonimas para el uso de hash. (hb_hash => hash, etc), o si me apuras siguiendo la misma lógica usar alguna alternativa al uso de la tabla hash.

Error BASE/2022 -> Error description: Error BASE/2022 Argument error: ALLTRIM
Luego el error esta en el parametro que se le pasa a Alltrim, posiblemente una cadena vacia o NIL(revisa la llamada a la función).
La funcíón Str2Morse no incorpora control de paramentros, pero es sencillo añadirselo para evitar este error.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Re: Codigo Morse en FWH

Postby Jairo Barbosa » Mon Dec 17, 2012 2:22 pm

Biel Saludo Cordial

Muchas gracias por su respuesta.
Te pido respetuosamente que modifiques tu suposición y reconsidere que en este foro también nos encontramos personas en vías de aprendizaje "Novatos" y gracias a personas como usted, que con su gran sapiencia en el tema alimentan el deseo de conocimientos de este maravilloso trabajo FiveWin.

Un Fuerte abrazo y aprovecho la oportunidad para desearle una Feliz Navidad y un año venidero lleno de éxitos, que cada paso que camines sean Bendecidos junto a los seres que tu mas amas
User avatar
Jairo Barbosa
 
Posts: 194
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia

Re: Codigo Morse en FWH

Postby carlos vargas » Mon Dec 17, 2012 7:26 pm

agregen al inicio

Code: Select all  Expand view

#include "hbcompat.ch"
 


para que sirva tanto para xharbour como para harbour.

salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1719
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Codigo Morse en FWH

Postby carlos vargas » Mon Dec 17, 2012 7:33 pm

como explicacion existen tanto en harbour como en xharbour funciones con tareas similares y nombres un poco diferentes
los hash, try..cacth, etc.
el hbcompat.ch existe en ambos compiladores y lo que hace es algo como:
Code: Select all  Expand view

#ifdef __XHARBOUR__
   ...
   /* Hash item functions */
   #xtranslate hb_Hash( [<x,...>] )            => Hash( <x> )
   #xtranslate hb_HHasKey( [<x,...>] )         => HHasKey( <x> )
   #xtranslate hb_HPos( [<x,...>] )            => HGetPos( <x> )
   #xtranslate hb_HGet( [<x,...>] )            => HGet( <x> )
   #xtranslate hb_HSet( [<x,...>] )            => HSet( <x> )
   #xtranslate hb_HDel( [<x,...>] )            => HDel( <x> )
   ...
#else
   ...
   /* Hash item functions */
   #xtranslate Hash( [<x,...>] )           => hb_Hash( <x> )
   #xtranslate HHasKey( [<x,...>] )        => hb_HHasKey( <x> )
   #xtranslate HGetPos( [<x,...>] )        => hb_HPos( <x> )
   #xtranslate HGet( [<x,...>] )           => hb_HGet( <x> )
   #xtranslate HSet( [<x,...>] )           => hb_HSet( <x> )
   #xtranslate HDel( [<x,...>] )           => hb_HDel( <x> )
   ...
#endif
 
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1719
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Codigo Morse en FWH

Postby Jairo Barbosa » Tue Dec 18, 2012 12:53 am

Carlos Muchas gracias.

Mira si se compila el siguiente código y lo ejecutas, escucharas en telegrafía el nombre contenido en cStr.le di mas tiempo al espacio para que se pueda entender mejor.
Disculpa que quiera compartir ese sencillo ejemplo contigo, pero en la nostalgia que abrigan los años que tengo de ser radio aficionado me llenan de alegría mas aun cuando se puede hacer un sof que pueda modular este viejo sistema de comunicaciones es sencillamente fascinante, ya no se usa, solo en las bandas de Radio aficionados y solo en concursos, mis indicativos de llamado son
HK3DQC

Code: Select all  Expand view

/*
BielSys 2012 EA6DD
*/

#include "FiveWin.ch"

#define MORSE_BEEP_FREQ        800               // 0.8KHz
// Timers
#define WPM                         20           //Palabras por minuto
#define MORSE_DOT_TIME              (1200 / WPM) //Tiempo en milisegundos
#define MORSE_DASH_TIME             MORSE_DOT_TIME * 3
#define MORSE_CHARACTER_SEPARATION  MORSE_DOT_TIME * 13
#define MORSE_WORD_SEPARATION       MORSE_DOT_TIME * 7
//--------------------------------------------------------
FUNCTION Str2Morse(cStr)
   LOCAL cDig,cDashDot,hAlfa:=AlfabetoMorse()
   cStr:=("F+I+V+E+W+I+N")
   hb_hCaseMatch( hAlfa, .F. )
   FOR EACH cDig IN cStr
      IF cDig!=Space(1)
         IF hb_hHasKey(hAlfa,cDig)
            FOR EACH cDashDot IN hAlfa[cDig]
               IF  cDashDot == "-"
                  Beep(MORSE_BEEP_FREQ,MORSE_DASH_TIME )
               ELSE
                  Beep(MORSE_BEEP_FREQ,MORSE_DOT_TIME)
               ENDIF
               Sleep(MORSE_DOT_TIME)
            NEXT
            Sleep(MORSE_CHARACTER_SEPARATION)
         ENDIF
      ELSE
         Sleep(MORSE_WORD_SEPARATION)
      ENDIF
   NEXT
RETURN NIL
//-------------------------------
STATIC FUNCTION AlfabetoMorse()
   LOCAL hAlfa:=hb_hash()
   hAlfa[' ']:= " "
   hAlfa['A']:= ".-"
   hAlfa['B']:= "-..."
   hAlfa['C']:= "-.-."
   hAlfa['D']:= "-.."
   hAlfa['E']:= "."
   hAlfa['F']:= "..-."
   hAlfa['G']:= "--."
   hAlfa['H']:= "...."
   hAlfa['I']:= ".."
   hAlfa['J']:= "-.-."
   hAlfa['K']:= "-.-"
   hAlfa['L']:= ".-.."
   hAlfa['M']:= "--"
   hAlfa['N']:= "-."
   hAlfa['O']:= "---"
   hAlfa['P']:= ".--."
   hAlfa['Q']:= "--.-"
   hAlfa['R']:= ".-."
   hAlfa['S']:= "..."
   hAlfa['T']:= "-"
   hAlfa['U']:= "..-"
   hAlfa['V']:= "...-"
   hAlfa['W']:= ".--"
   hAlfa['X']:= "-..-"
   hAlfa['Y']:= "-.--"
   hAlfa['Z']:= "--.."
   // Digit Morse
   hAlfa['0']:= "-----"
   hAlfa['1']:= ".----"
   hAlfa['2']:= "..---"
   hAlfa['3']:= "...--"
   hAlfa['4']:= "....-"
   hAlfa['5']:= "....."
   hAlfa['6']:= "-...."
   hAlfa['7']:= "--..."
   hAlfa['8']:= "---.."
   hAlfa['9']:= "----."
   // Others
   hAlfa['.']:= ".-.-.-"
   hAlfa[',']:= "--..--"
   hAlfa['?']:= "..--.."
RETURN hAlfa
#pragma BEGINDUMP

#include "windows.h"
#include "hbapi.h"

HB_FUNC( SLEEP )
{
    Sleep( hb_parnl( 1 ) );
}
HB_FUNC( BEEP )
{
   Beep(hb_parnl( 1 ), hb_parnl(2) );
}
#pragma ENDDUMP


Un abrazo Mis deseos que Dios este Bendiciendo tus pasos

Atentamente

Jairo Barbosa
User avatar
Jairo Barbosa
 
Posts: 194
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 29 guests