النتائج 1 إلى 5 من 5

الموضوع: برمجة شيفرة مورس

  1. #1
    التسجيل
    15-02-2007
    المشاركات
    298

    برمجة شيفرة مورس

    هذا البرنامج يقوم بقراءة ما تكتبه على الشاشة ثم يرسله إلى المنفذ COM1 فهو مفيد لمن يريد التحكم بضوء عن طريق الحاسب فبهذه الطريقة سيرسل الضوء اشارات ضوئية متقطعة أي أنت لاتحتاج لحفظ شيفرة مورس بل الحاسب يقوم بذلك.
    طريقة وصل الضوء موضحة في منتدى الالكترونيات لمن يحب الاظلاع
    كود PHP:
    # include <windows.h>
    # include <stdio.h>
    # include <time.h>
    struct
    {
        
    char l;
        
    char *c;
    }
    code[] =
    {
        
    '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'"--..",
        
    '0'"-----",
        
    '1'".----",
        
    '2'"..---",
        
    '3'"...--",
        
    '4'"....-",
        
    '5'".....",
        
    '6'"-....",
        
    '7'"--...",
        
    '8'"---..",
        
    '9'"----.",
        
    '/'"-..-.",
        
    '+'".-.-.",
        
    '='"-...-",
        
    '.'".-.-.-",
        
    ','"--..--",
        
    '?'"..--..",
        
    '('"-.--.",
        
    ')'"-.--.-",
        
    '-'"-....-",
        
    '"'".-..-.",
        
    '_'"..--.-",
        
    '\''".----.",
        
    ':'"---...",
        
    ';'"-.-.-.",
        
    '$'"...-..-",
        
    '\1'"=",
        
    00,
    };

    char *port "com1:";
    HANDLE hFile INVALID_HANDLE_VALUE;
    bool
    opencomm
    char *which )
    {
        
    int da GENERIC_READ GENERIC_WRITE;
        
    int sm FILE_SHARE_DELETE FILE_SHARE_READ FILE_SHARE_WRITE;
        
    int cd OPEN_EXISTING;
        
    int flags FILE_ATTRIBUTE_NORMAL FILE_FLAG_NO_BUFFERING;
        
    hFile CreateFilewhichdasm0cdflags);
        if( 
    hFile == INVALID_HANDLE_VALUE )
        {
            
    printf"Can't open '%s'\n"which );
            return 
    false;
        }
        
    DCB dcb;
        if( ! 
    GetCommStatehFile, &dcb ) )
        {
            
    printf"Can't get comm state for '%s'\n"which );
            return 
    false;
        }
        
    dcb.fOutxCtsFlow FALSE;
        
    dcb.fOutxDsrFlow FALSE;
        
    dcb.fDtrControl DTR_CONTROL_ENABLE;
        
    dcb.fDsrSensitivity FALSE;
        
    dcb.fRtsControl RTS_CONTROL_DISABLE;
        if( ! 
    SetCommStatehFile, &dcb ) )
        {
            
    printf"Can't set comm state for '%s'\n"which );
            return 
    false;
        }
        return 
    true;
    }
    void
    on
    void )
    {
        
    EscapeCommFunctionhFileSETDTR );
        
    EscapeCommFunctionhFileSETRTS );
    }
    void
    off
    void )
    {
        
    EscapeCommFunctionhFileCLRDTR );
        
    EscapeCommFunctionhFileCLRRTS );
    }

    int dot_length 100;
    int dash_length 300;
    int token_sep 100;
    int char_sep 300;
    int space_length 700;
    enum e_mode CWAM };
    e_mode mode AM;
    bool low_tone false;
    void
    dot
    void )
    {
        if( 
    mode == CW )
        {
            
    on();
            
    Sleepdot_length );
            
    off();
        }
        else if( 
    mode == AM )
        {
            for( 
    int i 0dot_length 2i++ )
            {
                
    on();
                
    Sleep);
                if( 
    low_tone )
                    
    Sleep);
                
    off();
                
    Sleep);
                if( 
    low_tone )
                    
    Sleep);
            }
        }
        
    Sleeptoken_sep );
    }
    void
    dash
    void )
    {
        if( 
    mode == CW )
        {
            
    on();
            
    Sleepdash_length );
            
    off();
        }
        else if( 
    mode == AM )
        {
            for( 
    int i 0dash_length 2i++ )
            {
                
    on();
                
    Sleep);
                if( 
    low_tone )
                    
    Sleep);
                
    off();
                
    Sleep);
                if( 
    low_tone )
                    
    Sleep);
            }
        }
        
    Sleeptoken_sep );
    }
    void
    long_tone
    void )
    {
        
    printf"5 second tone\n" );
        
    on();
        
    Sleep5000 );
        
    off();
    }
    char *
    lookupchar c )
    {
        for( 
    int i 0code[i].ci++ )
            if( 
    code[i].== )
                return 
    code[i].c;
        return 
    "";
    }
    void
    send_char
    char c )
    {
        if( 
    == ' ' )
        {
            
    Sleepspace_length );
            return;
        }
        
    toupper);
        
    char *str lookup);
        while( *
    str )
        {
            if( *
    str == '.' )
                
    dot();
            else if( *
    str == '-' )
                
    dash();
            else if( *
    str == '=' )
                
    long_tone();
            
    str++;
        }
        
    Sleepchar_sep );
        
    off();
    }
    void
    send
    char *str )
    {
        while( *
    str )
            
    send_char( *str++ );
    }

    int the_speed 5;
    int character_speed 15.0;
    void
    set_speed
    char *str )
    {
        
    the_speed atoistr );
            if( 
    character_speed the_speed )  
            
    character_speed the_speed;    // all letters sent at 15 wpm minimum
        
    dot_length 60 1000 character_speed 50;     // 60 seconds, 50 units
        
    dash_length dot_length;
        
    token_sep dot_length;
        
    int milliseconds_per_word 60 1000 the_speed;
        
    int milliseconds_in_36_units 36 60 1000 character_speed 50
        
    char_sep = (milliseconds_per_word milliseconds_in_36_units) / 7;
        
    space_length = (milliseconds_per_word milliseconds_in_36_units) / 3.5;
        if( 
    low_tone && mode == AM )
        {
            
    dot_length /= 2;
            
    dash_length /= 2;
        }
    }
    bool speed_test false;
    bool tone false;
    int repeat 1;
    char *message 0;
    char *file 0;
    int
    main
    int acchar **av )
    {
        
    ac--;
        
    av++;
        
    char *speed "5";
        while( 
    ac )
        {
            if( 
    av[0][0] == '-' )
            {
                if( 
    av[0][1] == 'p' )               // port
                
    {
                    
    port av[1];
                    
    ac--;
                    
    av++;
                }
                else if( 
    av[0][1] == 'r' )          // repeat
                
    {
                    
    repeat atoiav[1] );
                    
    ac--;
                    
    av++;
                }
                else if( 
    av[0][1] == 'f' )          // file
                
    {
                    
    file av[1];
                    
    ac--;
                    
    av++;
                }
                else if( 
    av[0][1] == 'm' )          // message
                
    {
                    
    message av[1];
                    
    ac--;
                    
    av++;
                }
                else if( 
    av[0][1] == 's' )          // speed
                
    {
                    
    speed av[1];
                    
    ac--;
                    
    av++;
                }
                else if( 
    av[0][1] == 'l' )          // low
                
    {
                    
    low_tone true;
                }
                else if( 
    av[0][1] == 't' )          // test
                
    {
                    
    speed_test true;
                }
                else if( 
    av[0][1] == 'o' )          // on
                
    {
                    
    tone true;
                }
                else if( 
    av[0][1] == 'c' )          // continuous wave
                
    {
                    
    mode CW;
                }
                else if( 
    av[0][1] == 'a' )          // amplitude modulation
                
    {
                    
    mode AM;
                }
                else
                {
                    
    printf"Usage: morse [-p port] [-s speed] [-r repeat_count]"
                        " [-f file] [-m message] [-c]\n\n" 
    );
                    
    printf"Example: morse -p com2: -s 5\n" );
                    
    printf"    gives 5 words per minute to com2\n" );
                    
    printf"\n" );
                    
    printf"Complete list of all options:\n" );
                    
    printf" -p port        use 'port' for the serial port\n" );
                    
    printf" -r number      repeat 'number' times\n" );
                    
    printf" -f file        read text from a file\n" );
                    
    printf" -m message     send message from command line\n" );
                    
    printf" -t             send the word 'paris ' for a minute\n" );
                    
    printf" -o             keep the transmitter on\n" );
                    
    printf" -c             Use CW instead of AM\n" );
                    
    printf" -l             Use 500 hz tone instead of 1,000 hz\n" );
                    return 
    0;
                }
            }
            
    av++;
            
    ac--;
        }
        
    set_speedspeed );
        
    opencommport );
        
    off();
        if( 
    tone )
        {
            
    on();
            
    printf"Transmiter is on\n" );
            for(;;)
                
    Sleep1000 );
        }
        if( 
    speed_test )
        {
            
    time_t t time(0);
            for( 
    int i 0the_speedi++ )
                
    send"paris " );
            
    printf"%d word%s in %d seconds\n"the_speed,
                    
    the_speed == "" "s"time(0) - );
            return 
    0;
        }
        
    printf"Speed set to %d words per minute.\n"the_speed );
        
    printf"Mode is %s.\n"mode == AM "AM" "CW" );
        if( 
    file )
        {
            
    printf"File is '%s'.\n"file );
            for( 
    int i 0repeati++ )
            {
                
    char buf[1024];
                
    FILE *fd fopenfile"r" );
                if( 
    fd == )
                {
                    
    printf"Can't open '%s' for reading\n"file );
                    return 
    0;
                }
                for( ;; )
                {
                    
    int cnt freadbuf1sizeof buffd );
                    if( 
    cnt )
                    {
                        
    printf"Can't read '%s'\n"file );
                        return 
    0;
                    }
                    if( 
    cnt == )
                        break;
                    
    buf[cnt] = 0;
                    
    sendbuf );
                }
                
    fclosefd );
            }
            return 
    0;
        }
        if( 
    message )
        {
            for( 
    int i 0repeati++ )
                
    sendmessage );
            return 
    0;
        }
        
    printf"Type your messages:\n" );
        
    printf"> " );
        
    fflushstdout );
        
    char out[1024];
        while( 
    getsout ) )
        {
            for( 
    int i 0repeati++ )
                
    sendout );
            
    printf"> " );
            
    fflushstdout );
        }
        return 
    0;

    العملي دون النظري عمل أعمى والنظري دون العملي عمل ليس له فائدة

  2. #2
    الصورة الرمزية drbmsh
    drbmsh غير متصل عضو مميز في منتدى البرمجة
    التسجيل
    06-02-2005
    الدولة
    EGYPT
    المشاركات
    314

    رد: برمجة شيفرة مورس

    ألف شكر واتمنى المزيد من المواضيع عن عملية التحكم عن طريق الحاسب

  3. #3
    التسجيل
    15-02-2007
    المشاركات
    298

    رد: برمجة شيفرة مورس

    تريدها LPT أي منفذ الطابعة أو منافذ اخرى
    العملي دون النظري عمل أعمى والنظري دون العملي عمل ليس له فائدة

  4. #4
    التسجيل
    29-05-2004
    المشاركات
    688

    رد: برمجة شيفرة مورس

    السلام عليكم
    و الله يا اخوي علي الجنيدي من فترة و أنا بتفرج على بعض مواضيعك و بصراحة رأيتك فهمان و هذا دليل أكبر على فهمك البرنامج رائع
    و خصوصا مبدأه
    Have u Ever loved someone so much u give an arm for
    Master Hacker
    رئيس منظمة Hacker Inside
    الا رسول الله صلى الله عليه و سلم قاطع البضائع الدنماركية و انصر نبيك

  5. #5
    التسجيل
    14-06-2007
    المشاركات
    1

    رد: برمجة شيفرة مورس

    واااااااصل ولا تتعب ابدا

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •