Page 1 sur 1

Alphabet radio et code morse

Publié : sam. 11/avr./2009 17:02
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


Publié : sam. 11/avr./2009 17:29
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


Publié : sam. 11/avr./2009 17:44
par Backup
ben dit donc, tu chaume pas :)

Publié : sam. 11/avr./2009 18:06
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 :)

Publié : sam. 11/avr./2009 18:56
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.