IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

morse et beeps [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Par défaut morse et beeps
    Bonjour,

    je continue mon apprentissage powershell et je bute sur une boucle

    L'exercice consiste à traduire des phrases en morse.

    Dans un premier temps, j'utilise -replace pour remplacer les lettres par des points et des traits.
    Cela fonctionne bien.

    Dans un second temps, je dois émettre des bips correspondant aux point et traits, c'est là que ça se corse.

    J'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     foreach($lettre in $phrsae1)
    Cette "fonction" ne pose pas de problème pour le premier point mais ne fonctionne pas pour le second.

    Lorsque j'entre une "phrase" contenant une seule lettre, le son joué correspond bien à la traduction de la lettre en . et _.
    SI je mets deux lettres, il ne se passe rien.
    La boucle lettre par lettre ne se fait pas et même le son correspondant à la première n'est pas "joué".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $phrase1 = $phrase0.ToUpper()
    foreach ($letter in $phrase1){
    if ($letter -eq  "A"){[console]::beep(500,300)+[console]::beep(500,600)}`
    elseif ($letter -eq  "B"){[console]::beep(500,600)+[console]::beep(500,300)+[console]::beep(500,300)+[console]::beep(500,300)}`
    elseif ($letter -eq  "C"){[console]::beep(500,600)+[console]::beep(500,300)+[console]::beep(500,600)+[console]::beep(500,300)} `
    elseif ($letter -eq  "D"){[console]::beep(500,600)+[console]::beep(500,300)+[console]::beep(500,300)} `
    elseif ($letter -eq  "E"){[console]::beep(500,300) }`
    elseif ($letter -eq  "F"){[console]::beep(500,300)+[console]::beep(500,300)+[console]::beep(500,600)+[console]::beep(500,300)}`
    elseif ($letter -eq  "G"){[console]::beep(500,600)+[console]::beep(500,600)+[console]::beep(500,300)}`
    ........
    elseif ($letter -eq  "Z"){[console]::beep(500,600)+[console]::beep(500,600)+[console]::beep(500,300)+[console]::beep(500,300)}
    }

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Je te propose ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $morses = @{'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'='--..';'1'='.----';'2'='..---';'3'='...--';'4'='....-';'5'='.....';'6'='-....';'7'='--...';'8'='---..';'9'='----.';'0'='-----'}
    
    $mot = 'BONJOUR BENJAMIN COMMENT VA TU AUJOURD4HUI'
    foreach($letter in $mot.ToCharArray()) {
    	if ($morses.ContainsKey([string]$letter)) {
    		write-host -NoNewline "$letter : "
    		write-host $morses[[string]$letter]
    		foreach($m in $morses[[string]$letter].ToCharArray()) {
    			if($m -eq '.') { [console]::beep(500,300) }
    			if($m -eq '-') { [console]::beep(500,600) }
    		}
    	} else {
    		write-host "$letter : "
    	}
    	Start-Sleep -m 300
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Par défaut
    Bonjour,

    c'est super, ça fonctionne.

    Par contre, je voudrais bien savoir pourquoi ma boucle ne fonctionne pas.

  4. #4
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Regarde ce que j'ai fais pour le parcours des lettres de ma variable $mot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $mot = 'SOS TOTO'
    foreach($letter in $mot.ToCharArray()) {

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Par défaut
    re,

    Ok, j'ai compris.

    merci

  6. #6
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Pour le fun
    Adapté avec les standards du morse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $morses = @{'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'='--..';'1'='.----';'2'='..---';'3'='...--';'4'='....-';'5'='.....';'6'='-....';'7'='--...';'8'='---..';'9'='----.';'0'='-----'}
    $dureeTI = 200
    
    $mot = 'BONJOUR CA VA ?'
    foreach($letter in $mot.ToCharArray()) {
    	if ($morses.ContainsKey([string]$letter)) {
    		write-host -NoNewline "$letter : "
    		write-host $morses[[string]$letter]
    		foreach($m in $morses[[string]$letter].ToCharArray()) {
    			if($m -eq '.') { [console]::beep(500, $dureeTI) }
    			if($m -eq '-') { [console]::beep(500, 3 * $dureeTI) }
    			Start-Sleep -m $dureeTI
    		}
    	} else {
    		write-host "$letter : "
    		if ($letter = ' ') { Start-Sleep -m (7 * $dureeTI) }
    		else { Start-Sleep -m (3 * $dureeTI) }
    	}
    }
    A savoir la durée des TI et des TAAH, l'espacement entre chaque symbole, chaque lettre et chaque mots

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Emettre un BEEP (de la tour du pc)
    Par cyberlewis dans le forum C++
    Réponses: 10
    Dernier message: 11/09/2006, 12h28
  2. [CF][VB.NET/PPC] Comment provoquer un Beep ?
    Par borgfabr dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 29/04/2005, 15h56
  3. DSL --> Comment on fait le beep en DOS
    Par Halobox dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 16/04/2005, 09h20
  4. arbre binaire et morse
    Par gg14bis dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 24/01/2005, 16h08
  5. [VB6] Beep haut parleur interne
    Par bassoa dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 21/07/2004, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo