Advertisement
AssazziN

Morse Receive on GPIO

Mar 19th, 2013
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 3.01 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. $delay=0.1; #second
  4. $timeout=60;  #loop for exit if didnt get any morse code
  5. $text='';
  6. $gpio=23;
  7.  
  8. print "\n [+]====================================[+]";
  9. print "\n  |     Receive Morse Code From GPIO     | ";
  10. print "\n  |                                      | ";
  11. print "\n  |     GPIO Pin -> $gpio                   "; if ($gpio<9) { print " "; } print "| ";
  12. print "\n  |     Created By : AssazziN            | ";
  13. print "\n  |     Version : 1  [03/18/2013]        | ";
  14. print "\n  |                                      | ";
  15. #print "\n | http://comfeedom.blogspot.com | ";
  16. print "\n [+]====================================[+] ";
  17.  
  18. print "\n\n";
  19. print " Geting >> ";
  20.  
  21. do {
  22.     open READ,"cat /sys/class/gpio/gpio$gpio/value |";
  23.     $value=<READ>;
  24.     close READ;
  25.     select undef,undef,undef,$delay;
  26.     $end=0;
  27. } until ($value == 1);
  28.  
  29. while (1) {
  30.     open READ,"cat /sys/class/gpio/gpio$gpio/value |";
  31.     $value=<READ>;
  32.     close READ;
  33.     if ($value == 1) {
  34.         print '1';
  35.         select undef,undef,undef,$delay;
  36.         $text.='1';
  37.         $end=0;
  38.     }
  39.     else {
  40.         print ',';
  41.         select undef,undef,undef,$delay;
  42.         $text.=',';
  43.         ++$end;
  44.     }
  45.     if ($end > $timeout) {
  46.         print "\n Morse >> ",analys($text);
  47.         print "\n Text >> ",convert(analys($text));
  48.         print "\n";
  49.         exit;
  50.     }
  51. }
  52.  
  53.  
  54. sub analys {
  55.     my $text=$_[0];
  56. #   $text=~s/1{3,}/-/g;            #For send speed = 0.125
  57. #   $text=~s/1{1,2}/./g;           #For send speed = 0.125
  58. #   $text=~s/,{11,}/  \/  /g;      #For send speed = 0.125
  59. #   $text=~s/,{4,10}/  /g;         #For send speed = 0.125
  60. #   $text=~s/,{1,3}//g;            #For send speed = 0.125
  61.     $text=~s/1{4,}/-/g;            #For send speed = 0.25
  62.     $text=~s/1{1,3}/./g;           #For send speed = 0.25
  63.     $text=~s/,{11,}/  \/  /g;      #For send speed = 0.25
  64.     $text=~s/,{5,10}/  /g;         #For send speed = 0.25
  65.     $text=~s/,{1,4}//g;            #For send speed = 0.25
  66.     return " ".$text." ";
  67. }
  68.  
  69. sub convert {
  70.     my $text=$_[0];
  71.     $text=~s/ \.- /a/ig;
  72.     $text=~s/ \.--- /b/ig;
  73.     $text=~s/ -\.-\. /c/ig;
  74.     $text=~s/ -\.\. /d/ig;
  75.     $text=~s/ \. /e/ig;
  76.     $text=~s/ \.\.-\. /f/ig;
  77.     $text=~s/ --\. /g/ig;
  78.     $text=~s/ \.\.\.\. /h/ig;
  79.     $text=~s/ \.\. /i/ig;
  80.     $text=~s/ \.--- /j/ig;
  81.     $text=~s/ -\.- /k/ig;
  82.     $text=~s/ \.-\.\. /l/ig;
  83.     $text=~s/ -- /m/ig;
  84.     $text=~s/ -\. /n/ig;
  85.     $text=~s/ --- /o/ig;
  86.     $text=~s/ \.--\. /p/ig;
  87.     $text=~s/ --\.- /q/ig;
  88.     $text=~s/ \.-\. /r/ig;
  89.     $text=~s/ \.\.\. /s/ig;
  90.     $text=~s/ - /t/ig;
  91.     $text=~s/ \.\.- /u/ig;
  92.     $text=~s/ \.\.\.- /v/ig;
  93.     $text=~s/ \.-- /w/ig;
  94.     $text=~s/ -\.\.- /x/ig;
  95.     $text=~s/ -\.-- /y/ig;
  96.     $text=~s/ --\.\. /z/ig;
  97.     $text=~s/ \.---- /1/ig;
  98.     $text=~s/ \.\.--- /2/ig;
  99.     $text=~s/ \.\.\.-- /3/ig;
  100.     $text=~s/ \.\.\.\.- /4/ig;
  101.     $text=~s/ \.\.\.\.\. /5/ig;
  102.     $text=~s/ -\.\.\.\. /6/ig;
  103.     $text=~s/ --\.\.\. /7/ig;
  104.     $text=~s/ ---\.\. /8/ig;
  105.     $text=~s/ ----\. /9/ig;
  106.     $text=~s/ ----- /0/ig;
  107.     $text=~s/ \.-\.-\.- /./ig;
  108.     $text=~s/ --\.\.-- /,/ig;
  109.     $text=~s/ \.\.-\.\. /?/ig;
  110.     $text=~s/ //ig;
  111.     $text=~s/\// /ig;
  112.     return $text;
  113. }
  114. #http://comfreedom.blogspot.com/2013/03/raspberry-pi-morse.html
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement