Alphabet radio et code morse

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Alphabet radio et code morse

Message par Progi1984 »

Et voilà, aprés lecture de cet article, j'ai voulu transformer ce code en PureBasic.

Code : Tout sélectionner

;@link http://j-reaux.developpez.com/tutoriel/asp/alphabet-radio-code-morse/index.php
EnableExplicit
;{ Alphabet AlphaRadio
  ;- Structures
  Structure S_AlphaRadio
    car_normal.s
    car_alpharadio.s
  EndStructure
  ;- Constantes
  #Dim_AlphaRadio_Size = 81
  #AlphaRadio_Separateur = " "
  ;-Tableaux
  Global Dim Dim_AlphaRadio.S_AlphaRadio(#Dim_AlphaRadio_Size+1)
  ;- Datasections
  DataSection
    Char_Normal:
    Data.s "0","1","2","3","4","5","6","7","8","9"
    Data.s "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"
    Data.s "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","Z","Y","Z"
    Data.s ",","."," ","?","'","!","/","(",")","&",":",";","=","+","-","_",Chr(34),"$","@","EUR"
    Char_AlphaRadio:
    Data.s"Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"
    Data.s"alpha","bravo","charlie","delta","echo","foxtrot","golf","hotel","india","juliet","kilo","lima","mike","november","oscar","papa","quebec","romeo","sierra","tango","uniform","victor","whisky","x-ray","yankee","zulu"
    Data.s"ALPHA","BRAVO","CHARLIE","DELTA","ECHO","FOXTROT","GOLF","HOTEL","INDIA","JULIET","KILO","LIMA","MIKE","NOVEMBER","OSCAR","PAPA","QUEBEC","ROMEO","SIERRA","TANGO","UNIFORM","VICTOR","WHISKY","X-RAY","YANKEE","ZULU"
    Data.s"Decimal","Stop","|","?","'","!","/","(",")","&",":",";","=","+","-","_",Chr(34),"$","@","EUR"
  EndDataSection
  ;-Fonctions
  Procedure.s RemoveAccent(sString.s)
    sString = ReplaceString(sString, "Á", "A")
    sString = ReplaceString(sString, "Â", "A")
    sString = ReplaceString(sString, "Ã", "A")
    sString = ReplaceString(sString, "Ä", "A")
    sString = ReplaceString(sString, "Å", "A")
    sString = ReplaceString(sString, "Ç", "C")
    sString = ReplaceString(sString, "È", "E")
    sString = ReplaceString(sString, "É", "E")
    sString = ReplaceString(sString, "Ê", "E")
    sString = ReplaceString(sString, "Ë", "E")
    sString = ReplaceString(sString, "Ì", "I")
    sString = ReplaceString(sString, "Í", "I")
    sString = ReplaceString(sString, "Î", "I")
    sString = ReplaceString(sString, "Ï", "I")
    sString = ReplaceString(sString, "Ò", "O")
    sString = ReplaceString(sString, "Ó", "O")
    sString = ReplaceString(sString, "Ô", "O")
    sString = ReplaceString(sString, "Õ", "O")
    sString = ReplaceString(sString, "Ö", "O")
    sString = ReplaceString(sString, "Ù", "U")
    sString = ReplaceString(sString, "Ú", "U")
    sString = ReplaceString(sString, "Û", "U")
    sString = ReplaceString(sString, "Ü", "U")
    sString = ReplaceString(sString, "Ý", "Y")
    sString = ReplaceString(sString, "à", "a")
    sString = ReplaceString(sString, "á", "a")
    sString = ReplaceString(sString, "â", "a")
    sString = ReplaceString(sString, "ã", "a")
    sString = ReplaceString(sString, "ä", "a")
    sString = ReplaceString(sString, "å", "a")
    sString = ReplaceString(sString, "ç", "c")
    sString = ReplaceString(sString, "è", "e")
    sString = ReplaceString(sString, "é", "e")
    sString = ReplaceString(sString, "ê", "e")
    sString = ReplaceString(sString, "ë", "e")
    sString = ReplaceString(sString, "ì", "i")
    sString = ReplaceString(sString, "í", "i")
    sString = ReplaceString(sString, "î", "i")
    sString = ReplaceString(sString, "ï", "i")
    sString = ReplaceString(sString, "ð", "o")
    sString = ReplaceString(sString, "ò", "o")
    sString = ReplaceString(sString, "ó", "o")
    sString = ReplaceString(sString, "ô", "o")
    sString = ReplaceString(sString, "õ", "o")
    sString = ReplaceString(sString, "ö", "o")
    sString = ReplaceString(sString, "ù", "u")
    sString = ReplaceString(sString, "ú", "u")
    sString = ReplaceString(sString, "û", "u")
    sString = ReplaceString(sString, "ü", "u")
    sString = ReplaceString(sString, "ý", "y")
    sString = ReplaceString(sString, "ÿ", "y")
    ProcedureReturn sString
  EndProcedure
  ProcedureDLL Init_AlphaRadio()
    Protected Inc.l
    Restore Char_Normal
    For Inc = 0 To #Dim_AlphaRadio_Size
        Read.s Dim_AlphaRadio(Inc)\car_normal
    Next
    Restore Char_AlphaRadio
    For Inc = 0 To #Dim_AlphaRadio_Size
      Read.s Dim_AlphaRadio(Inc)\car_alpharadio
    Next
  EndProcedure
  ProcedureDLL.s Encode_AlphaRadio(sString.s)
    Protected sStringEncoded.s, sChar.s
    Protected lInc.l, lIncA.l
    sString = RemoveAccent(sString)
    sStringEncoded = ""
    For lInc = 0 To Len(sString) -1
      sChar = Mid(sString, lInc + 1, 1)
      For lIncA = 0 To #Dim_AlphaRadio_Size
        If Dim_AlphaRadio(lIncA)\car_normal = sChar
          sStringEncoded + Dim_AlphaRadio(lIncA)\car_alpharadio + #AlphaRadio_Separateur
          Break
        EndIf
      Next
    Next
    ProcedureReturn sStringEncoded
  EndProcedure
  ProcedureDLL.s Decode_AlphaRadio(sString.s)
    Protected lInc.l
    Protected sStringDecoded.s
    sStringDecoded = sString
    For lInc = 0 To #Dim_AlphaRadio_Size
      sStringDecoded = ReplaceString(sStringDecoded, Dim_AlphaRadio(lInc)\car_alpharadio+" ", Dim_AlphaRadio(lInc)\car_normal)
    Next
    ProcedureReturn sStringDecoded
  EndProcedure
;}

Define.s sInitial, sEncoded.s, sDecoded.s

Init_AlphaRadio()
sInitial = "C'est l'idée à 2EUR !"
sEncoded.s = Encode_AlphaRadio(sInitial)
sDecoded = Decode_AlphaRadio(sEncoded)

Debug sInitial
Debug sEncoded
Debug sDecoded

Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Et voilà le morse :

Code : Tout sélectionner

;@link http://j-reaux.developpez.com/tutoriel/asp/alphabet-radio-code-morse/index.php
EnableExplicit
;{ Alphabet Morse
  ;- Structures
  Structure S_Morse
    car_normal.s
    car_morse.s
  EndStructure
  ;- Constantes
  #Dim_Morse_Size = 55
  #Morse_Separateur = "|"
  ;-Tableaux
  Global Dim Dim_Morse.S_Morse(#Dim_Morse_Size+1)
  ;- Datasections
  DataSection
    Char_Normal:
    Data.s "0","1","2","3","4","5","6","7","8","9"
    Data.s "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"
    Data.s " ",".",",","?","'","!","/","(",")","&",":",";","=","+","-","_",Chr(34),"$","@","EUR"
    Char_Morse:
    Data.s "----",".----","..---","...--","....-","....","-....","--...","---..", "----."
    Data.s ".-","-...","-.-.","-..",".","..-..","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."
    Data.s "|",".-.-.-","--..--","..--..",".----.","-.-.-----.","-..-.","-.--.","-.--.-",".-...","---...","-.-.-.","-...-",".-.-.","-....-","..--.-",".-..-.","...-..-",".--.-.","...-.-.---"
  EndDataSection
  ;-Fonctions
  Procedure.s RemoveAccent(sString.s)
    sString = ReplaceString(sString, "Á", "A")
    sString = ReplaceString(sString, "Â", "A")
    sString = ReplaceString(sString, "Ã", "A")
    sString = ReplaceString(sString, "Ä", "A")
    sString = ReplaceString(sString, "Å", "A")
    sString = ReplaceString(sString, "Ç", "C")
    sString = ReplaceString(sString, "È", "E")
    sString = ReplaceString(sString, "É", "E")
    sString = ReplaceString(sString, "Ê", "E")
    sString = ReplaceString(sString, "Ë", "E")
    sString = ReplaceString(sString, "Ì", "I")
    sString = ReplaceString(sString, "Í", "I")
    sString = ReplaceString(sString, "Î", "I")
    sString = ReplaceString(sString, "Ï", "I")
    sString = ReplaceString(sString, "Ò", "O")
    sString = ReplaceString(sString, "Ó", "O")
    sString = ReplaceString(sString, "Ô", "O")
    sString = ReplaceString(sString, "Õ", "O")
    sString = ReplaceString(sString, "Ö", "O")
    sString = ReplaceString(sString, "Ù", "U")
    sString = ReplaceString(sString, "Ú", "U")
    sString = ReplaceString(sString, "Û", "U")
    sString = ReplaceString(sString, "Ü", "U")
    sString = ReplaceString(sString, "Ý", "Y")
    sString = ReplaceString(sString, "à", "a")
    sString = ReplaceString(sString, "á", "a")
    sString = ReplaceString(sString, "â", "a")
    sString = ReplaceString(sString, "ã", "a")
    sString = ReplaceString(sString, "ä", "a")
    sString = ReplaceString(sString, "å", "a")
    sString = ReplaceString(sString, "ç", "c")
    sString = ReplaceString(sString, "è", "e")
    sString = ReplaceString(sString, "é", "e")
    sString = ReplaceString(sString, "ê", "e")
    sString = ReplaceString(sString, "ë", "e")
    sString = ReplaceString(sString, "ì", "i")
    sString = ReplaceString(sString, "í", "i")
    sString = ReplaceString(sString, "î", "i")
    sString = ReplaceString(sString, "ï", "i")
    sString = ReplaceString(sString, "ð", "o")
    sString = ReplaceString(sString, "ò", "o")
    sString = ReplaceString(sString, "ó", "o")
    sString = ReplaceString(sString, "ô", "o")
    sString = ReplaceString(sString, "õ", "o")
    sString = ReplaceString(sString, "ö", "o")
    sString = ReplaceString(sString, "ù", "u")
    sString = ReplaceString(sString, "ú", "u")
    sString = ReplaceString(sString, "û", "u")
    sString = ReplaceString(sString, "ü", "u")
    sString = ReplaceString(sString, "ý", "y")
    sString = ReplaceString(sString, "ÿ", "y")
    ProcedureReturn sString
  EndProcedure
  ProcedureDLL Init_Morse()
    Protected Inc.l
    Restore Char_Normal
    For Inc = 0 To #Dim_Morse_Size
        Read.s Dim_Morse(Inc)\car_normal
    Next
    Restore Char_Morse
    For Inc = 0 To #Dim_Morse_Size
      Read.s Dim_Morse(Inc)\car_Morse
    Next
  EndProcedure
  ProcedureDLL.s Encode_Morse(sString.s)
    Protected sStringEncoded.s, sChar.s
    Protected lInc.l, lIncA.l
    sString = RemoveAccent(sString)
    sStringEncoded = ""
    For lInc = 0 To Len(sString) -1
      sChar = Mid(sString, lInc + 1, 1)
      For lIncA = 0 To #Dim_Morse_Size
        If Dim_Morse(lIncA)\car_normal = UCase(sChar)
          sStringEncoded + Dim_Morse(lIncA)\car_Morse + #Morse_Separateur
          Break
        EndIf
      Next
    Next
    ProcedureReturn sStringEncoded
  EndProcedure
  ProcedureDLL.s Decode_Morse(sString.s)
    Protected lInc.l, lIncA.l
    Protected sStringDecoded.s, sChar.s
    sString = ReplaceString(sString, #Morse_Separateur+#Morse_Separateur+#Morse_Separateur, #Morse_Separateur+" "+#Morse_Separateur)
    For lInc = 1 To CountString(sString, #Morse_Separateur)
      sChar = StringField(sString, lInc, #Morse_Separateur)
      If sChar <> " "
        For lIncA = 0 To #Dim_Morse_Size
          If Dim_Morse(lIncA)\car_Morse = sChar
            sStringDecoded + Dim_Morse(lIncA)\car_normal
            Break
          EndIf
        Next
      Else
        sStringDecoded + sChar
      EndIf
    Next
    ProcedureReturn sStringDecoded
  EndProcedure
;}

Define.s sInitial, sEncoded.s, sDecoded.s

Init_Morse()
sInitial = "C'est l'idée à 2EUR !"
sEncoded.s = Encode_Morse(sInitial)
sDecoded = Decode_Morse(sEncoded)

Debug sInitial
Debug sEncoded
Debug sDecoded

Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

ben dit donc, tu chaume pas :)
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

J'avais une tonne de liens dans mon bloc notes google. Suis en train de faire le nettoyage et j'avais quelques codes à traduire !!!!! Donc @bientot :)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Tiens,

j'étais radiographiste à l'armée en allemagne (1982), j'en ai bouffé du morse mais j'aimais bien et je "prenais assez rapidement" (3 mois de formation au morse).
Le morse est d'abord et avant tout sonore.

Les musicos sont avantagés car c'est d'abord des sons qui sont différents. Lorsque j'en entend aujourd'hui, j'arrive encore à me rappeler certaines lettres.

J'ai fait beaucoup de radioamateur (la caserne disposait d'un local équipé pour la graphie et la phonie pour ceux qui voulaient en faire) mais uniquement en morse, j'aimais beaucoup contacter d'autres radioamateurs dans le monde, on recevait des cartes des radios contactés, c'était sympa.
Répondre