## The *write-morse-code.ps1* PowerShell Script This PowerShell script writes text in Morse code. ## Parameters ```powershell write-morse-code.ps1 [[-text] ] [[-speed] ] [] -text Specifies the text to write Required? false Position? 1 Default value Accept pipeline input? false Accept wildcard characters? false -speed Specifies the speed of one time unit (100 ms per default) Required? false Position? 2 Default value 100 Accept pipeline input? false Accept wildcard characters? false [] This script supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable, and OutVariable. ``` ## Example ```powershell PS> ./write-morse-code "Hello World" ``` ## Notes Author: Markus Fleschutz | License: CC0 ## Related Links https://github.com/fleschutz/PowerShell ## Source Code ```powershell <# .SYNOPSIS Writes text in Morse code .DESCRIPTION This PowerShell script writes text in Morse code. .PARAMETER text Specifies the text to write .PARAMETER speed Specifies the speed of one time unit (100 ms per default) .EXAMPLE PS> ./write-morse-code "Hello World" .LINK https://github.com/fleschutz/PowerShell .NOTES Author: Markus Fleschutz | License: CC0 #> param([string]$text = "", [int]$speed = 100) # one time unit in milliseconds function gap { param([int]$Length) for ([int]$i = 1; $i -lt $Length; $i++) { write-host " " -nonewline } start-sleep -milliseconds ($Length * $speed) } function dot { write-host "." -nonewline start-sleep -milliseconds $speed # signal } function dash { write-host "_" -nonewline start-sleep -milliseconds (3 * $speed) # signal } function Char2MorseCode { param([string]$Char) switch($Char) { 'A' { dot; gap 1; dash; gap 3 } 'B' { dash; gap 1; dot; gap 1; dot; gap 1; dot; gap 3 } 'C' { dash; gap 1; dot; gap 1; dash; gap 1; dot; gap 3 } 'D' { dash; gap 1; dot; gap 1; dot; gap 3 } 'E' { dot; gap 3 } 'F' { dot; gap 1; dot; gap 1; dash; gap 1; dot; gap 3 } 'G' { dash; gap 1; dash; gap 1; dot; gap 3 } 'H' { dot; gap 1; dot; gap 1; dot; gap 1; dot; gap 3 } 'I' { dot; gap 1; dot; gap 3 } 'J' { dot; gap 1; dash; gap 1; dash; gap 1; dash; gap 3 } 'K' { dash; gap 1; dot; gap 1; dash; gap 3 } 'L' { dot; gap 1; dash; gap 1; dot; gap 1; dot; gap 3 } 'M' { dash; gap 1; dash; gap 3 } 'N' { dash; gap 1; dot; gap 3 } 'O' { dash; gap 1; dash; gap 1; dash; gap 3 } 'P' { dot; gap 1; dash; gap 1; dash; gap 1; dot; gap 3 } 'Q' { dash; gap 1; dash; gap 1; dot; gap 1; dash; gap 3 } 'R' { dot; gap 1; dash; gap 1; dot; gap 3 } 'S' { dot; gap 1; dot; gap 1; dot; gap 3 } 'T' { dash; gap 3 } 'U' { dot; gap 1; dot; gap 1; dash; gap 3 } 'V' { dot; gap 1; dot; gap 1; dot; gap 1; dash; gap 3 } 'W' { dot; gap 1; dash; gap 1; dash; gap 3 } 'X' { dash; gap 1; dot; gap 1; dot; gap 1; dash; gap 3 } 'Y' { dash; gap 1; dot; gap 1; dash; gap 1; dash; gap 3 } 'Z' { dash; gap 1; dash; gap 1; dot; gap 1; dot; gap 3 } '1' { dot; gap 1; dash; gap 1; dash; gap 1; dash; gap 1; dash; gap 3 } '2' { dot; gap 1; dot; gap 1; dash; gap 1; dash; gap 1; dash; gap 3 } '3' { dot; gap 1; dot; gap 1; dot; gap 1; dash; gap 1; dash; gap 3 } '4' { dot; gap 1; dot; gap 1; dot; gap 1; dot; gap 1; dash; gap 3 } '5' { dot; gap 1; dot; gap 1; dot; gap 1; dot; gap 1; dot; gap 3 } '6' { dash; gap 1; dot; gap 1; dot; gap 1; dot; gap 1; dot; gap 3 } '7' { dash; gap 1; dash; gap 1; dot; gap 1; dot; gap 1; dot; gap 3 } '8' { dash; gap 1; dash; gap 1; dash; gap 1; dot; gap 1; dot; gap 3 } '9' { dash; gap 1; dash; gap 1; dash; gap 1; dash; gap 1; dot; gap 3 } '0' { dash; gap 1; dash; gap 1; dash; gap 1; dash; gap 1; dash; gap 3 } default { gap 7 } # medium gap (between words) } } try { if ($text -eq "" ) { [string]$text = read-host "Enter text to write" } [char[]]$ArrayOfChars = $text.ToUpper() foreach($Char in $ArrayOfChars) { Char2MorseCode $Char } write-host "" write-host "" exit 0 # success } catch { "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" exit 1 } ``` *Generated by convert-ps2md.ps1 using the comment-based help of write-morse-code.ps1*