NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3374 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 5 از 5

موضوع: جداسازی اطلاعات دریافتی از پورت سریال

  1. #1
    کاربر فعال
    تاریخ عضویت
    Jun 2012
    نوشته ها
    181
    تشکر
    110
    تشکر شده 177 بار در 111 پست

    پیش فرض جداسازی اطلاعات دریافتی از پورت سریال

    سلام دوستان من این برنامهرو نوشتم که یه عدد 4 رقمیرو از پورت سریال دریافت کنم بعد یکی یکی اعدادشو جدا کنم اما فقط بار اول جواب میده دفعه های بعدی با اصلا کار نمیکنه یا قاطی جواب میده ..
    اینم کدام ..
    کد:
    $regfile = "m32def.dat"
    $crystal = 1000000
    $baud = 1200
    Config Porta = Output
    Config Portb = Output
    Enable Interrupts
    Enable Urxc
    
    On Urxc Rea
    Dte Alias Porta
    Block Alias Portb
    
    
    Dim A As String * 5
    Dim Ch_1 As String * 1
    Dim Ch_2 As String * 1
    Dim Ch_3 As String * 1
    Dim Ch_4 As String * 1
    Main:
    Ch_1 = ""
    Ch_2 = ""
    Ch_3 = ""
    Ch_4 = ""
    A = ""
    
    
    Do
    
    Loop
    Rea:
    Input , A
    
    Ch_1 = Mid(a , 1 , 1)
    Ch_2 = Mid(a , 2 , 1)
    Ch_3 = Mid(a , 3 , 1)
    Ch_4 = Mid(a , 4 , 1)
    
    
    
    Print "ch1=" ; Ch_1
    Print "ch2=" ; Ch_2
    Print "ch3=" ; Ch_3
    Print "ch4=" ; Ch_4
    
    Goto Main
    Return
    پیشاپیش ممنون و متشکر
    ویرایش توسط sigma-mx : 01-02-2015 در ساعت 14:52 دلیل: لطفا برای برنامه ها ار تگ کد استفاده کنید :)

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر فعال pirozy آواتار ها
    تاریخ عضویت
    May 2010
    نوشته ها
    337
    تشکر
    147
    تشکر شده 192 بار در 84 پست

    پیش فرض

    اولا کدهات رو داخل تگ قرار بده تا بفهمیم چی نوشتی

  4. #3
    کاربر فعال
    تاریخ عضویت
    Jun 2012
    نوشته ها
    181
    تشکر
    110
    تشکر شده 177 بار در 111 پست

    پیش فرض

    دوستمون زحمت کشیدن تو تگ قرار دادن کسی میدونه مشکل برنامه چیه؟؟؟؟؟؟؟؟

  5. #4
    کاربر علاقه مند Shapour_Ardebil آواتار ها
    تاریخ عضویت
    Jun 2007
    نام
    ٍShapour
    نوشته ها
    98
    تشکر
    49
    تشکر شده 104 بار در 49 پست

    پیش فرض

    با سلام

    ببینید بهترین کاری که من تا حالا توانستم در پالایش داده ها ی در یافتی از uart انجام بدهم ( البته من با c برنامه مینویسم و شما میتوانید در بیسکام هم همین کار را انجام بدهید) این بود که از کاراکتر هایی در موقع بسته بندی داده برای ارسال داده استفاده میکنم مثلا
    کد:
    #define Start_Save_Key  0x26        // &
    #define Mantageh_key    0x21        // !
    #define Khosheh_key     0x23        // #
    #define Main_Min_Key    0x25        // %
    #define Farei_Min_Key   0x24        // $
    #define Command_Key     0x3E        // >
    #define End_Recive_Key  0x40        // @
    سپس در موقع دریافت داده آنها را نسبت به کاراکتر های دریافتی در متغیرهای جدا جدا ذخیره میکنم

    کد:
    // USART Receiver interrupt service routine
    interrupt [USART_RXC] void usart_rx_isr(void)
    {
        char data;
        data   =   UDR; 
        //------------------------------
        if      ((data == Start_Save_Key) && (UART_Result == 0))                  // &   
        {
            rx_index = 0;
            UART_Result = 1;
        }                                                                        // ! 
        else if ((data == Mantageh_key)  && (UART_Result == 1))
        {   
            rx_index = 0;
            UART_Result = 2;
        }                                                                       // #
        else if ((data == Khosheh_key)   && (UART_Result == 2))
        {   
            rx_index = 0;
            UART_Result = 3;
        }                                                                       // %
        else if ((data == Main_Min_Key)  && (UART_Result == 3))
        {   
            rx_index = 0;
            UART_Result = 4;
        }                                                                       // $
        else if ((data == Farei_Min_Key) && (UART_Result == 4))
        {
            rx_index = 0;
            UART_Result = 5;
        } 
        else if ((data == Command_Key)    && (UART_Result == 5))                // >
        {
            rx_index = 0;
            UART_Result = 6;
        }     
        else if ((data == End_Recive_Key)    && (UART_Result == 6))                 // @ 
        {
            UART_Result = 7;
            rx_index = 0;
        }     
        else 
        {
            switch (UART_Result) 
            {
                case 1:
                    Password[rx_index++] = data;
                    break;
                case 2:
                    Mantageh[rx_index++] = data;
                    break;
                case 3:
                    Khosheh[rx_index++] = data;
                    break;
                case 4:
                    Number[rx_index++] = data;
                    break;
                case 5:
                    Farei[rx_index++] = data;
                    break;
                case 6:
                    Command = data;
                    break;
            };
        }  
    }
    البته همین کار را میتوانستم پس از دریافت داده نیز انجام بدهم ولی چون من معمولا از بودریت 9600 و فرکانس میکرو را با کریستال 16 مگ استفاده میکنم تا حالا مشکلی برام پیش نیامده است
    ویرایش توسط Shapour_Ardebil : 02-02-2015 در ساعت 11:25

  6. تشکرها از این نوشته :


  7. #5
    کاربر فعال
    تاریخ عضویت
    Mar 2010
    نوشته ها
    236
    تشکر
    101
    تشکر شده 246 بار در 163 پست

    پیش فرض

    من خیلی بسکام کار نکردم ولی فکر کنم داخل حلقه هر بار مقدار a رو صفر کنید درست میشه
    یعنی
    A = "" بزار بعد از do

  8. تشکرها از این نوشته :


موضوعات مشابه

  1. خطا در راه اندازی تاچ مقاومتی
    توسط mv195218 در انجمن Cortex-a8-a9 arm9-11
    پاسخ: 1
    آخرين نوشته: 09-12-2014, 12:57
  2. پاسخ: 4
    آخرين نوشته: 27-10-2013, 15:04
  3. پاسخ: 3
    آخرين نوشته: 19-10-2013, 14:59
  4. ره اندازی smt160 با پورت موازی
    توسط M.ABDOLLAHI در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 27-04-2009, 21:34

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •