User Tools

Site Tools


morse_code_code

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
morse_code_code [2018/08/11 00:14] frchrismorse_code_code [2018/08/11 02:16] (current) frchris
Line 2: Line 2:
  
  
- +=====LED class=====  
 +I am using ''RaspiPin.GPIO_25'' since chose to wire my LED to physical pin 37, aka  ''BCM GPIO 26''\\ 
 <file java LED.java> <file java LED.java>
 import com.pi4j.io.gpio.*; import com.pi4j.io.gpio.*;
Line 75: Line 77:
 </file> </file>
  
-    -[[The LED class]] +=====LEDTester Class===== 
-    -[[The LEDTester class]] +<file java LEDTester.java> 
-    -[[THe StringToMorse class]]+/** 
 + * This class tests LED by flashing some morse code. 2014 verion by  
 + * @author Ian Utting 
 + * @author Fabio Heday 
 + *  
 + * Chris Thiel added the finalize() method to aviod GpioPinExistsException 
 + * @version 10 Aug 18 
 + */ 
 +public class LEDTester 
 +{ 
 +    public LED pin1; 
 +     
 +    //unit of time, in milliseconds 
 +    private final static int UNIT = 200; 
 +     
 +    public static void main(String [] args) { 
 +        LEDTester lt = new LEDTester(); 
 +         
 +        String s = "SOS SOS SOS"; 
 +//          
 +          if ( args.length > 0 && args[0!= null && !args[0].equals ("") ) 
 +            s = args[0]; 
 +         
 +        lt.flashMorse(s); 
 +        lt.finalize(); 
 +    
 +     
 +    /* 
 +     * create a new LED instance 
 +     */ 
 +    public LEDTester() { 
 +        this(new LED()); 
 +    } 
 +     
 +    /* 
 +     * Creates a LED instance based on a LED object 
 +     */ 
 +    public LEDTester(LED p) { 
 +        pin1 = p; 
 +    } 
 +     
 +    /* 
 +     * Flashes the LED 10 times 
 +     */ 
 +    public void flash10Times() { 
 +         
 +        for(int i = 0; i < 10; i++) { 
 +            pin1.flash(200); 
 +            try { Thread.sleep (200); } catch (InterruptedException e) {} 
 +        } 
 +    } 
 +     
 +     
 +    /* 
 +     * Sends the morse code using the LED. 
 +     */ 
 +    public void flashMorse(String msg) { 
 +                
 +        char [] morse = StringToMorse.translate(msg).toCharArray(); 
 +         
 +        // . = 1, - = 3, intra-char = 1, inter-char = 3, space = 7.", 
 +         
 +        for (char atom : morse) { 
 +                if (atom == '.') { 
 +                    pin1.flash(UNIT); 
 +                } else if (atom == '-') { 
 +                    pin1.flash(3*UNIT); 
 +                } else if (atom == '/') {   // inter-symbol gap 
 +                    sleep (1);   // plus one leading and one trailing == 3 
 +                } else { 
 +                    // must be a space 
 +                    sleep (5);   // plus one leading and one trailing == 7 
 +                } 
 +                sleep (1);   // common gap 
 +        } 
 +    } 
 +    /* 
 +     * Wait units times the defined unit of time 
 +     */ 
 +    private void sleep(int units) { 
 +        try {  
 +            Thread.sleep(units*UNIT);  
 +        } catch (InterruptedException e)  
 +        { 
 +        } 
 +    } 
 +    protected void finalize(){ 
 +        pin1.finalize(); 
 +    }         
 +
 +</file> 
 + 
 +=====String to Morse class===== 
 +This is unchanged from the original 
 +<file java StringToMorse.java> 
 +import java.util.*; 
 + 
 +import static java.lang.Character.*; 
 + 
 +/** 
 + * Translate a String into Morse code. 
 + *  
 + * Maps lower case letters to upper case. 
 + * Returned string contains the Morse equivalent of the parameter,  
 + * with codons sperated by slashes, and spaces represented by spaces.. 
 + *  
 + * @author Ian Utting 
 + * @version 1.0 
 + */ 
 + 
 +public class StringToMorse 
 +
 +    private static final Map<Character, String> code = new HashMap<>(); 
 +        static { 
 +            // Upper case letters 
 +            /* A */ code.put('A', ".-"); 
 +            /* B */ code.put('B', "-..."); 
 +            /* C */ code.put('C', "-.-."); 
 +            /* D */ code.put('D', "-.."); 
 +            /* E */ code.put('E', "."); 
 +            /* F */ code.put('F', "..-."); 
 +            /* G */ code.put('G', "--."); 
 +            /* H */ code.put('H', "...."); 
 +            /* I */ code.put('I', ".."); 
 +            /* J */ code.put('J', ".---"); 
 +            /* K */ code.put('K', "-.-"); 
 +            /* L */ code.put('L', ".-.."); 
 +            /* M */ code.put('M', "--"); 
 +            /* N */ code.put('N', "-."); 
 +            /* O */ code.put('O', "---"); 
 +            /* P */ code.put('P', ".--."); 
 +            /* Q */ code.put('Q', "--.-"); 
 +            /* R */ code.put('R', ".-."); 
 +            /* S */ code.put('S', "..."); 
 +            /* T */ code.put('T', "-"); 
 +            /* U */ code.put('U', "..-"); 
 +            /* V */ code.put('V', "...-"); 
 +            /* W */ code.put('W', ".--"); 
 +            /* X */ code.put('X', "-..-"); 
 +            /* Y */ code.put('Y', "-.--"); 
 +            /* Z */ code.put('Z', "--.."); 
 + 
 +            // Lower case letters map to the same values as upper case 
 +            /* A */ code.put('a', ".-"); 
 +            /* B */ code.put('b', "-..."); 
 +            /* C */ code.put('c', "-.-."); 
 +            /* D */ code.put('d', "-.."); 
 +            /* E */ code.put('e', "."); 
 +            /* F */ code.put('f', "..-."); 
 +            /* G */ code.put('g', "--."); 
 +            /* H */ code.put('h', "...."); 
 +            /* I */ code.put('i', ".."); 
 +            /* J */ code.put('j', ".---"); 
 +            /* K */ code.put('k', "-.-"); 
 +            /* L */ code.put('l', ".-.."); 
 +            /* M */ code.put('m', "--"); 
 +            /* N */ code.put('n', "-."); 
 +            /* O */ code.put('o', "---"); 
 +            /* P */ code.put('p', ".--."); 
 +            /* Q */ code.put('q', "--.-"); 
 +            /* R */ code.put('r', ".-."); 
 +            /* S */ code.put('s', "..."); 
 +            /* T */ code.put('t', "-"); 
 +            /* U */ code.put('u', "..-"); 
 +            /* V */ code.put('v', "...-"); 
 +            /* W */ code.put('w', ".--"); 
 +            /* X */ code.put('x', "-..-"); 
 +            /* Y */ code.put('y', "-.--"); 
 +            /* Z */ code.put('z', "--.."); 
 + 
 +            // Digits 
 +            /* 0 */ code.put('0', "-----"); 
 +            /* 1 */ code.put('1', ".----"); 
 +            /* 2 */ code.put('2', "..---"); 
 +            /* 3 */ code.put('3', "...--"); 
 +            /* 4 */ code.put('4', "....-"); 
 +            /* 5 */ code.put('5', "....."); 
 +            /* 6 */ code.put('6', "-...."); 
 +            /* 7 */ code.put('7', "--..."); 
 +            /* 8 */ code.put('8', "---.."); 
 +            /* 9 */ code.put('9', "----.");             
 + 
 +            // punctuation 
 +            /* . */ code.put('.', ".-.-.-"); 
 +            /* , */ code.put(',', "--..--"); 
 +            /* : */ code.put(':', "---..."); 
 +            /* ? */ code.put('?', "..--.."); 
 +            /* ' */ code.put('\'', ".----."); 
 +            /* - */ code.put('-', "-....-"); 
 +            /* / */ code.put('/', "-..-."); 
 +            /* ( */ code.put('(', "-.--.-"); 
 +            /* ) */ code.put(')', "-.--.-"); 
 +            /* " */ code.put('"', ".-..-."); 
 +            /* @ */ code.put('@', ".--.-."); 
 +            /* = */ code.put('=', "-...-"); 
 + 
 +            // Special code for a space character. 
 +                    code.put(' ', " "); 
 +        } 
 + 
 +    /** 
 +     * Translate a string into its Morse code equivalent 
 +     *  
 +     * Spaces in message are encoded as spaces in the returned string. Codons are separated by slashes 
 +     *  
 +     * @param message   The string to be translated 
 +     * @return The encoded string. 
 +     * @throws IllegalArgumentException  if there is a character in message which is not codeable in Morse 
 +     */     
 +    public static String translate(String message) { 
 +        String result = new String(); 
 + 
 +        for(char c : message.toCharArray()) { 
 +            if (code.containsKey(c)) result = result + code.get(c) + "/"; 
 +            else throw new IllegalArgumentException("Character " + c + "is not in Morse's code"); 
 +        } 
 +        // trim the trailing slash 
 +        result = result.substring(0, result.length() - 1); 
 +        return result; 
 +    } 
 +
 +</file> 
morse_code_code.1533960878.txt.gz · Last modified: 2018/08/11 00:14 by frchris

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki