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

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

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

    پیش فرض

    char data[4][7];
    gets(data);
    البته شما کد رو نگاه کنید متوجه میشید

    - - - Updated - - -

    بافری تعریف نکردم ؟چطور باید تعریف کنم؟

    - - - Updated - - -

    بافری تعریف نکردم ؟چطور باید تعریف کنم؟

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

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

    پیش فرض

    من که متوجه نشدم. شما اگه میشه عدد بگو.
    من فقط میخوام بدونم که شما هر بار که وارد اینتراپت میشی چند بایت رو میخونی؟

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

    پیش فرض

    من بافری تعریف نکردم برای دیتای دریافتی و اینکه در انتراپت همون ارایه دیتا رو از gets دریافت میکنم
    data[4][7]

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

    پیش فرض

    پس با این حساب فکر کنم هر بار یک بایت بیشتر نمیخونی.

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

    پیش فرض

    چه باید کرد؟من با strcmp هم امتحان کردم جواب نداد

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

    پیش فرض

    مشکل توی مقایسه نیست.
    شما باید هر بایتی رو که دریافت میکنی سر جای خودش توی آرایه بنویسی و وقتی آرایه کامل شد اون رو مقایسه کنی.
    البته من دقیقا نمی دونم gets چه جوری کار میکنه ولی احتمالا باید یه متغیر یه بایتی رو توش قرار بدی و اون رو توی جای مناست تو آرایه کپی کنی.
    مثلا
    gets(m);
    data[1][2]=m;
    که به جای 1 و 2 باید هر بار یه عدد قرار بدی.

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

    پیش فرض

    gets رشته رو از سریال دریافت میکنه.چجوری میشه واسه ارایه من این کارو کردونمیفهمم چطور جمع و جور کنم

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

    پیش فرض

    سلام
    ببخشید که دیر جواب میدم
    ببین توی مثلا AVR وقتی که بافر تعیین نمیکنی به طور پیش فرض طول بافر یک بایته و به ازای هر یک بایتی که دریافت میکنی یک بار تابع اینتراپت فراخوانی میشه.
    حالا شما باید هر بار این بایت رو توی آرایه قرار بدی و شاید بهتر باشه از getchar() استفاده کنی.
    مثلا توی تابع اینتراپت این کد رو بنویسی:
    data[i][j]=getchar();
    یا مثلا تو AVR بنویسی:
    data[i][j]=UDR;
    که i , j از 0 و 0 شروع میشه تا 7و 4 و وقتی آرایه کامل شد میتونی اون رو مقایسه کنی.
    البته باید دقت داشته باشی که "B" دو بایته. حالا باید یا با کاراکتر های اضافی اون رو تکمیل کنی و یا یه جوری با تغییر درست i , j هر بایت رو سر جای خودش توی آرایه قرار بدی.

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

    پیش فرض

    دوست عزیز به نتایج خوبی رسیدم الان همه چیز ok هست این کد:
    unsigned char data[16];
    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[i])
    break;
    if(i==16)
    output_high(cmd4);
    }//end of int
    اینم چیزی که تو سریال وارد میکنم
    {etx}b{x80}{xc1}
    کد بالا درست کار میکنه اما مشکل ااینجاست که من میخوام ارایه ام این باشه:
    unsigned char c[22]={"{etx}b{\x80}{\xc1}"};
    الان مشکل سر ابک اسلش هست با این درست کار نمیکنه

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

    پیش فرض

    مشکل بک اسلش چیه؟
    اگه منظورت توی ارسال هست باید به جای '\' ،'\\' رو بفرستی.

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

    پیش فرض

    الان وقتی ارایه رو اینجوری تعریف میکنم کار نمیکنه
    {ETX}B{\X80}{\XC1}

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

    پیش فرض

    این رو امتحان کن

    کد:
    "{ETX}B{\\X80}{\\Xc1}"

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

    پیش فرض

    مهندس من یه اشتباه میکردم ارایه باید این باشه

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

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

    پیش فرض

    خب الان مشکل چیه؟

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

    پیش فرض

    الان این کد درست کار میکنه
    unsigned char data[16];
    unsigned char c[16]={"0x030x420x800xc1"};
    #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[i])
    break;
    if(i==16)
    output_high(CMD4);
    }//END OF INT
    اما وقتی تو سریال اینو وارد میکنم درست کار میکنه
    0x030x420x800xc1
    در صورتی که وقتی از سریال وارد میکنم یکی نیستن
    http://s4.picofile.com/file/8173064300/1.PNG

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

    پیش فرض

    شما رشته رو 16 تایی تعریف کردی در حالی که 17 تاییه و توی تابع هم 18 تا getchar داری!!!
    اولی اینا رو درست کن بعد ببین مشکل کجاست.

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

    پیش فرض

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

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

    پیش فرض

    اون مشکلاتی که گفتم که هست و باید اصلاح بشه.
    شما چه طوری دیتا رو دستی وارد میکنی؟
    فکر کنم مشکل اصلی حل شده و با یه کم تغییر توی دیتا و آزمون و خطا به جواب میرسی.

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

    پیش فرض

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

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

    پیش فرض

    کدی رو که توی ترمینال وارد میکنی رو بذار تا ببینم.

صفحه 3 از 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

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

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