NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3346 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 4 از 5 نخستنخست 12345 آخرینآخرین
نمایش نتایج: از 61 به 80 از 81

موضوع: مقایسه ارایه دریافتی از usart

  1. #61
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2015
    نوشته ها
    84
    تشکر
    11
    تشکر شده 3 بار در 2 پست

    پیش فرض

    من خودم اینو copy میکردم که درست کار میکرد
    0x030x420x800xc1
    اما وقتی از ترمینال 0x030x420x800xc1 وارد میکنم اینو تو ترمنال مینویسه
    \x03B\x80\xc1
    - - - Updated - - -

    من خودم اینو copy میکردم که درست کار میکرد
    0x030x420x800xc1
    اما وقتی از ترمینال 0x030x420x800xc1 وارد میکنم اینو تو ترمنال مینویسه
    \x03B\x80\xc1

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

  3. #62
    کاربر فعال
    تاریخ عضویت
    Feb 2012
    نام
    مصطفی
    نوشته ها
    273
    تشکر
    195
    تشکر شده 128 بار در 93 پست

    پیش فرض

    شما باید ورودی رو به صورت رشته وارد کنی نه عدد.
    "0x42" عینا نوشته میشه ولی 0x42 معادل اسکی B هست.

  4. #63
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2015
    نوشته ها
    84
    تشکر
    11
    تشکر شده 3 بار در 2 پست

    پیش فرض

    یعنی چی؟اصلش اینه که وقتی
    \x03B\x80\xc1
    وارد میکنم تو ترمینال درست کار کنه.حالا ارایه برنامه ر چجوری تغییر بدم؟

    - - - Updated - - -

    یعنی چی؟اصلش اینه که وقتی
    \x03B\x80\xc1
    وارد میکنم تو ترمینال درست کار کنه.حالا ارایه برنامه ر چجوری تغییر بدم؟

    - - - Updated - - -

    یعنی چی؟اصلش اینه که وقتی
    \x03B\x80\xc1
    وارد میکنم تو ترمینال درست کار کنه.حالا ارایه برنامه ر چجوری تغییر بدم؟

  5. #64
    کاربر فعال
    تاریخ عضویت
    Feb 2012
    نام
    مصطفی
    نوشته ها
    273
    تشکر
    195
    تشکر شده 128 بار در 93 پست

    پیش فرض

    نفهمیدم چی شد؟ الان دوباره به جای 0 ، \ اومد.
    چیزی که الان گذاشتی به صورت عددی باید باشه یا یه رشته؟

  6. #65
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2015
    نوشته ها
    84
    تشکر
    11
    تشکر شده 3 بار در 2 پست

    پیش فرض

    ممنونم از راهنماییتون اما فکر میکنم یا مشغلتون زیاد یا دقت نمیکنیدوچون من همه چیزو نوشتم

  7. #66
    کاربر فعال
    تاریخ عضویت
    Feb 2012
    نام
    مصطفی
    نوشته ها
    273
    تشکر
    195
    تشکر شده 128 بار در 93 پست

    پیش فرض

    بله من مشغلم زیاد هست ولی شما یه جا گفتی
    مهندس من یه اشتباه میکردم ارایه باید این باشه

    {0X03,0X42,0X80,0XC1}

    ولی دوباره نوشتی:
    عنی چی؟اصلش اینه که وقتی
    \x03B\x80\xc1


    یه جا متن آرایه رو بین " " گذاشتی و یه جا نذاشتی.
    من الان نمیدونم شما قراره عدد ارسال کنی یا کد اسکی.
    "0x42" با 0x42 فرق میکنه. اولی یه رشته 4 بایتیه ولی دومی کد اسکی حرف B هست که یک بایت هم بیشتر نیست.

  8. #67
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2015
    نوشته ها
    84
    تشکر
    11
    تشکر شده 3 بار در 2 پست

    پیش فرض

    دوست عزیز ارایه من تو کد برنامه باید
    کد:
    {0x03,0x42,0x80,0xc1}

  9. #68
    کاربر فعال
    تاریخ عضویت
    Feb 2012
    نام
    مصطفی
    نوشته ها
    273
    تشکر
    195
    تشکر شده 128 بار در 93 پست

    پیش فرض

    پس شما فقط 4 بایت داری و نباید برنامت این شکلی باشه:
    unsigned char data[16];[I]unsigned char c[22]={"{etx}b{x80}{xc1}"};
    #int_rda
    void rda_isr(void)
    {
    data[0]=getchar(com1);
    data[1]=getchar(com1);
    data[2]=getchar(com1);
    data[3]=getchar(com1);
    data[4]=getchar(com1);
    data[5]=getchar(com1);
    data[6]=getchar(com1);
    data[7]=getchar(com1);
    data[8]=getchar(com1);
    data[9]=getchar(com1);
    data[10]=getchar(com1);
    data[11]=getchar(com1);
    data[12]=getchar(com1);
    data[13]=getchar(com1);
    data[14]=getchar(com1);
    data[15]=getchar(com1);
    //data[16]=getchar(com1);
    //data[17]=getchar(com1);
    for(i=0;i<16;i++)
    if(c[i]!=data)
    break;
    if(i==16)
    output_high(cmd4);
    }//end of int


    بلکه باید فقط 4 بایت رو از سریال بخونی.
    توی سریال هم باید فقط 4 تا عدد یا معادل اسکی اونها رو وارد کنی. فقط 4 بایت
    کد:
    {0x03/*eot*/,0x42/*'B'*/,0x80,0xC1}

  10. #69
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2015
    نوشته ها
    84
    تشکر
    11
    تشکر شده 3 بار در 2 پست

    پیش فرض

    سلام
    دوست عزیز برای یک ledجواب گرفتم حالا میخوام این ک رو به تابعتبدیل کنم میشه راهنمایی کنید؟
    کد:
    int  i;
    int  j;
    unsigned char c[4]={0x03,0x42,0x80,0xc1};
    char data;
    char data1;
    char data2;
    char data3;
    #int_RDA
    void RDA_isr(void)
    {
    data=getchar(com1);
    if(data==c[0])
    data1=getchar(com1);
    if(data1==c[1])
    data2=getchar(com1);
    if(data2==c[2])
    data3=getchar(com1);
    if(data3==c[3])
    output_high(CMD4);
    }//END OF INT
    ویرایش توسط SAMIRR : 25-02-2015 در ساعت 15:19

  11. #70
    کاربر فعال
    تاریخ عضویت
    Dec 2007
    نوشته ها
    113
    تشکر
    92
    تشکر شده 78 بار در 59 پست

    پیش فرض

    کد:
    int  i;
    int  j;
    unsigned char c[4]={0x03,0x42,0x80,0xc1};
    char data[];
    #int_RDA
    void RDA_isr(void)
    {
    int  i;
    
    for(i=0;i<4;i++){
        data[i]=getchar(com1);
    }
    i=0;
    while(i<4){
        if(data[i]!=c[i])
            break;
      i++;
            
    }
    output_high(CMD4);
    }//END OF INT

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


  13. #71
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2015
    نوشته ها
    84
    تشکر
    11
    تشکر شده 3 بار در 2 پست

    پیش فرض

    سلام ممنون دوست عزیز حالا اگه یه ارایه دیگه به اسم dاضافه بشه که با اون cmd5روشن بشه چه باید کرد؟
    unsigned char d[4]={0x03,0x41,0x80,0xc2}
    و اینکه اینا باید به تابع تبدیل بشن چون خودش یه اینتراپت دیگه میشه طبق فرمایش دوسمون

  14. #72
    کاربر فعال
    تاریخ عضویت
    Dec 2007
    نوشته ها
    113
    تشکر
    92
    تشکر شده 78 بار در 59 پست

    پیش فرض

    سلام
    منهم حدس زدم دارین تو تابع وقفه کارمی کنید( با Pic کار نکردم تا حالا )
    کلیت کا ر اینجوری میشه:
    کد:
    //global variables
    volatile int  i=0;
    volatile char data[];
    
    
    void RDA_isr(void)
    {
        data[i]=getchar(com1);
        i++;
    }
    
    
    char compare(char *str1,char *str2, int nbyte)
    {
        int t=0;
        while(nbyte){
            if(str1[t]!=str2[t])
                return 0;
            nbyte--;
            t++;
            }
        return 1;        
    }
    int main(void){
        int  j;
        //احتمال می دمم  مفسر به مقایسه دو رشته غیر هم جنس گیر بده بنابراین رشته های ثابت رو بصورت 
        // char
        //تعریف کنید بهتره
        unsigned char c[4]={0x03,0x42,0x80,0xc1};
        unsigned char d[5]={0x03,0x42,0x80,0xc1,0xf1};
        while(1){
            if(compare(data,c,4)){
                output_high(CMD4);
                data[]={"\0"};
                }
            if(compare(data,d,5)){
                output_high(CMD5);
                data[]={"\0"};
                }
        }
    }
    ویرایش توسط dostajn : 26-02-2015 در ساعت 07:56

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


  16. #73
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2015
    نوشته ها
    84
    تشکر
    11
    تشکر شده 3 بار در 2 پست

    پیش فرض

    دوست عزیز این کدی که گذاشتید مقایسه انجام نمیده.یعنی هر عددی که وارد کنم led روشن میشه
    منظورم نمونه کد اول و دومی هم کلا هیچ تاثیری نداره ارایه دریافتی هیچ مقاه ای انجام نمیشه
    ویرایش توسط SAMIRR : 26-02-2015 در ساعت 10:03

  17. #74
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2015
    نوشته ها
    84
    تشکر
    11
    تشکر شده 3 بار در 2 پست

    پیش فرض

    سلام دوست عزیز با کد زیر کامل ج گرفتم اما به تابع تبدیل کردنش یکم راهنمایی میخواد
    int i;
    int j;
    unsigned char c[4]={0x03,0x42,0x80,0xc1};
    unsigned char d[4]={0x03,0x41,0x80,0xc2};
    unsigned char data[4];




    #int_RDA
    void RDA_isr(void)
    {
    data[0]=getchar(com1);
    data[1]=getchar(com1);
    data[2]=getchar(com1);
    data[3]=getchar(com1);
    for(i=0;i<4;i++)
    if(c[i]!=data[i])
    break;
    if(i==4)
    output_high(CMD4);
    for(i=0;i<4;i++)
    if(d[i]!=data[i])
    break;
    if(i==4)
    output_high(CMD5);
    }//END OF INT

  18. #75
    کاربر فعال
    تاریخ عضویت
    Dec 2007
    نوشته ها
    113
    تشکر
    92
    تشکر شده 78 بار در 59 پست

    پیش فرض

    نقل قول نوشته اصلی توسط SAMIRR نمایش پست ها
    دوست عزیز این کدی که گذاشتید مقایسه انجام نمیده.یعنی هر عددی که وارد کنم led روشن میشه
    منظورم نمونه کد اول و دومی هم کلا هیچ تاثیری نداره ارایه دریافتی هیچ مقاه ای انجام نمیشه
    سلام
    از کجا فهمیدی که مقایسه انجام نمی ده!
    فکر کنم باید i هم بعد از مقایسه صفر شود.
    ببینید این شکلی جواب می دهد:

    کد:
    //global variables
    volatile int  i=0;
    volatile char data[];
    
    
    
    
    void RDA_isr(void)
    {
        data[i]=getchar(com1);
        i++;
    
    
    }
    
    
    
    
    char compare(char *str1,char *str2, int nbyte)
    {
        int t=0;
        while(nbyte){
            if(str1[t]!=str2[t])
                return 0;
            nbyte--;
            t++;
            }
        return 1;        
    }
    int main(void){
        int  j;
        //احتمال می دمم  مفسر به مقایسه دو رشته غیر هم جنس گیر بده بنابراین رشته های ثابت رو بصورت 
        // char
        //تعریف کنید بهتره
        unsigned char c[4]={0x03,0x42,0x80,0xc1};
        unsigned char d[5]={0x03,0x42,0x80,0xc1,0xf1};
        while(1){
            if(compare(data,c,4)&&i==4){
                output_high(CMD4);
                data[]={"\0"};
    			i=0;
                }
            if(compare(data,d,5)&&i==5){
                output_high(CMD5);
                data[]={"\0"};
    			i=0;
                }
        }
    }

  19. #76
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2015
    نوشته ها
    84
    تشکر
    11
    تشکر شده 3 بار در 2 پست

    پیش فرض Rda

    از اونجکه هر عددی میزنم led روشن میشه در کد اول و در کد دوم با دیتای درست و غلط هم چیزی روشن نمیشه

    - - - Updated - - -


    از اونجکه هر عددی میزنم LED روشن میشه در کد اول و در کد دوم با دیتای درست و غلط هم چیزی روشن نمیشه

  20. #77
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2015
    نوشته ها
    84
    تشکر
    11
    تشکر شده 3 بار در 2 پست

    پیش فرض

    نه نشد

  21. #78
    کاربر فعال
    تاریخ عضویت
    Dec 2007
    نوشته ها
    113
    تشکر
    92
    تشکر شده 78 بار در 59 پست

    پیش فرض

    نقل قول نوشته اصلی توسط SAMIRR نمایش پست ها
    نه نشد
    کد:
    char compare(char *str1,char *str2, int nbyte)
    {
        int t=0;
        while(nbyte){
            if(str1[t]!=str2[t])
                return 0;
            nbyte--;
            t++;
            }
        return 1;        
    }
    int main(void){
        //int  j;
        //احتمال می دمم  مفسر به مقایسه دو رشته غیر هم جنس گیر بده بنابراین رشته های ثابت رو بصورت 
        // char
        //تعریف کنید بهتره
         char c[4]={0x03,0x42,0x80,0xc1};
         char d[5]={0x03,0x42,0x80,0xc1,0xf1};
        while(1){
        	i=4;
            if(compare(data,c,4)&&i==4){
                output_high();
                data[4] = "";
    			i=0;
                }
            if(compare(data,d,5)&&i==5){
                output_high();
                data[5] = "";
    			i=0;
                }
                return 0;
        }
    }
    سلام
    بنده این کد ها رو که زدم بابت نمونه بود
    مگه کامپایلر به شما هشدار نمی ده!!!!
    کد مشکل داشت
    این یکی رو امتحان کنید.
    لطفا اگه هشداری چیزی می ده هم اینجا بذارین هم بهش توجه کنید.

  22. #79
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2015
    نوشته ها
    84
    تشکر
    11
    تشکر شده 3 بار در 2 پست

    پیش فرض

    تو کد های قبلی error نداشت الان این ERROR هارو میده
    EERORS:A numeric expression must appear
    EERORS:Return value not allowed in void function
    - - - Updated - - -

    تو کد های قبلی error نداشت الان این ERROR هارو میده
    EERORS:A numeric expression must appear
    EERORS:Return value not allowed in void function
    - - - Updated - - -


    ERROR هارم رفع کردم بازم هیچ عکس العملی نداره

  23. #80
    کاربر فعال
    تاریخ عضویت
    Dec 2007
    نوشته ها
    113
    تشکر
    92
    تشکر شده 78 بار در 59 پست

    پیش فرض

    به کدوم خط ها گیر میده؟
    تو مثال دو تا تابع هست که برگشتی داره و هیچ کدوم خالی نیست اما خطای دوم میگه تابع بدون برگشت تعریف شده اما خروجی داره؟
    می تونیدفایل اصلی خودتوون رو دوباره بفرستین

صفحه 4 از 5 نخستنخست 12345 آخرینآخرین

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

  1. تشکیل گروه تحقیقاتی - عملیاتی رباتیک
    توسط alamdar در انجمن سیستم های ریاتیک و CNC
    پاسخ: 3
    آخرين نوشته: 23-03-2016, 19:13
  2. پاسخ: 0
    آخرين نوشته: 23-09-2013, 20:32
  3. مقایسه و رتبه بندی آنتی ویروسها
    توسط arsalan681 در انجمن ترفندهای کامپیوتری/معرفی نرم افزار های مفید
    پاسخ: 1
    آخرين نوشته: 16-01-2010, 15:17
  4. نکاتی در مورد IC سینتی سایزر AD9833
    توسط codev در انجمن مباحث متفرقه در زمینه میکروو الکترونیک
    پاسخ: 10
    آخرين نوشته: 19-11-2009, 11:15
  5. سوالاتی در زمینه بیسکام
    توسط esmaeil57 در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 11-05-2009, 13:55

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

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