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

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

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

    پیش فرض

    خب باید آرایه ای که ارسال می کنی رو اصلاح کنی دیگه!
    آرایه ای که شما تعریف کردی (4*7) میشه 28 بایت که 4 تا رشته 7 بایتی هست. ولی اگه شما به جای یکی از این 4 تا رشته مثلا بنویسی "b" این میشه دو بایت و احتمالا همین باعث میشه بایت های بعدی که دریافت میکنی که احتمالا مربوط به رشته بعدی هست تو جای خودشون قرار نگیرن.
    فکر میکنم اگه درایه هات رو کامل کنی مشکلت حل بشه. یعنی توی فایل ارسالی به جای کاراکتر های خالی یه کاراکتر خاص رو قرار بدی.

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

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

    پیش فرض

    یعنی من ارایه اصلی تو برنامه رو اینجوری تعریف کنم؟
    char a[4][7]={"{ETX}","B","{\X80}","{\XC1}"};
    اما تو سریال اینو بفرستم؟
    {ETXB}BBBBBB{\X80}{\XC1}
    اما باید هر دو یهجور باشن

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

    پیش فرض

    اینم تاثیری نداشت
    و حتی این
    {ETX}BBBBBB{\X80}{\XC1}

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

    پیش فرض

    نقل قول نوشته اصلی توسط SAMIRR نمایش پست ها
    یعنی من ارایه اصلی تو برنامه رو اینجوری تعریف کنم؟

    اما تو سریال اینو بفرستم؟

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

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

    پیش فرض

    char a[4][4]={"sami","sami","sami","sami"};
    char data[4][4];

    #int_RDA
    void RDA_isr(void)
    {
    gets(data);
    for( i=0;i<4;i++)
    for(j=0;j<4;j++)
    if(a[i][j] == data[i][j])
    break;
    if(i==4)
    output_high(CMD4);
    }//END OF INT

    اینم خروجی سریال
    فایل پیوست 8503

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

    پیش فرض

    فایلی که قرار دادید ظاهرا مشکل داره چون میگه فایل پیوست وجود ندارد.
    ببین الان آرایه ای که شما تعریف کردی در حقیقت 5*4 هست چون وقتی شما رشته تعریف میکنی کامپایلر آخر رشته شما یه کاراکتر null اضافه میکنه.
    ضمنا توی برنامه باید خط زیر رو تغییر بدی
    if(a[i][j]==data[i][j])
    که باید به جای == بذاری =!.

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

    پیش فرض

    اون تساوی رو درست کردم و اون ارایه [5][4]بازم همون نتیجهCapture
    ویرایش توسط SAMIRR : 23-02-2015 در ساعت 16:20

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

    پیش فرض

    شما گفتی بعد از دریافت 4 بایت وارد اینتراپب پورت سریال میشی. پس هر بار یکی از درایه های آرایه رو دریافت میکنی.
    حالا باید یا فقط همون درایه رو مقایسه کنی یعنی فقط یه حلقه که 4 بایت درایه متناظر رو مقایسه کنه یا هر بار که وارد اینتراپت میشی دیتای دریافتی رو توی درایه متناظرش بنویسی و وقتی آرایه کامل شد اون رو با آرایه اصلی مقایسه کنی.

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

    پیش فرض

    اصلا متوجه نشدم چی فرمودید لطفا یکم شفافتر
    این چیزایی که میبینید دیتای کلیدهااست زمانی که کلیدی زده نشده
    {NUL}@{\x80}{\xc0}
    {SOH}@{\x80}{\xc1}
    {STX}@{\x80}{\xc2}
    {NUL}@{\x80}{\xc0}
    {SOH}@{\x80}{\xc1}
    {STX}@{\x80}{\xc2}
    {NUL}@{\x80}{\xc0}
    {SOH}@{\x80}{\xc1}
    {STX}@{\x80}{\xc2}

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

    پیش فرض

    شما موقع دریافت چه جوری دیتا رو تفکیک میکنی؟
    الان هر خطی که گذاشتی با توجه به اینکه "0\r\n\" داشته باشه یا نه 18 یا 21 بایته.

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

    پیش فرض rda

    ببینید من یه کیپد دارم که تازمانی که کلیدی زده نشده باید طبق یه پروتکلی 3 بار این 4بایت رو بفرسته به pc
    {NUL}@{\x80}{\xc0}
    {SOH}@{\x80}{\xc1}
    {STX}@{\x80}{\xc2}
    و حلا من میخوام بادریافت ارایهای که تعریف کرده بودم از pc یه led روشن بشه

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

    پیش فرض

    ببخشید یه کم درگیر بودم
    شما توی برنامه، آخر هر بار ارسال "r\n\" گذاشتی که دوبایت اضافه تر از اون 4 بایتی که نوشتی ارسال میکنه. پس اگه بعد از دریافت 4 بایت وارد اینتراپت بشی بار دوم چیزی که داری در واقع اینه
    "r\n\{nul}@"
    پس یا باید بافر دریافت رو 6 بایتی تعریف کنی. یا "r\n\" رو از برنامه حذف کنی.
    در ضمن 4 بایتی که شما توی اینتراپت دریافت می کنی میشه یکی از درایه های آرایه اصلی که اگه میخوای توی اینتراپت مقایسه کنی باید فقط همون درایه رو مقایسه کنی. یا اینکه هر بار رشته دریافتی رو
    تو جای مناست خودش ذخیره کنی و وقتی هر سه خط رو دریافت کردی کل آرایه رو مقایسه کنی.

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

    پیش فرض

    نه من \r\nنگذاشتم

    - - - Updated - - -

    من تو سریال دیتایی که فرستادم دیتای کلید زده نشده رو میبینم و همین sami که 4بار مینویسم

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

    پیش فرض

    توی برنامه ای که برای من ارسال کردی آخر تابع send_via_UART_by_Protocol این دستور رو گذاشتی printf("\r\n");

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

    پیش فرض

    واای شما کلا اون سه خط رو بذار کنار اون مربوط به کیپد میشه من با این ارایه خودم کار دارم وقتی تو سریال وارد میکنم مقایسه ای انجام نمیشه و هیچ led روشن نمیشه

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

    پیش فرض

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

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

    پیش فرض

    چیزی که رو سریال میفرستم معلوم میکنه که کلیدی فشرده نشده و این به این قسمت برنامه ما هیچ ربطی نداره و دائم این کد نمایش داده میشه تو سریال
    {NUL}@{\x80}{\xc0}
    {SOH}@{\x80}{\xc1}
    {STX}@{\x80}{\xc2}
    و قرار یه ارایه [7][4] ازpc دریافت کنم که برابر با این ارایه ای باشه که من تعیین کردم تو کدم که اگه برابر بود یه led روشن بشه و اون ارایه اینه
    a[4][7]={"{ETX}","B","{\X80}","{\XC1}"}

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

    پیش فرض

    شما بافر دریافت دیتا رو چند بایتی تعریف کردی؟ یعنی هر بار که وارد اینتراپت سریال میشی چند بایت رو میخونی؟

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

    پیش فرض

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

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

    پیش فرض

    اینکه تعریف آرایست که 7*4 هستش.
    من گفتم بافر دریافت پورت سریال.

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

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

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