ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

صفحه 1 از 3 123 آخرین
نمایش نتایج: از 1 به 10 از 28
  1. #1
    2015/09/06
    67
    10

    دریافت رشته از وقفه ی یوزارت

    سلام
    من دنبال کدی هستم که : :wow:
    میکروی اول همواره از طریق یوزارت یک رشته ارسال میکنه
    میکروی دوم باید اون رو دریافت کنه
    ((و توسط یک تابع دیگه در خط دوم !! ال سی دی نشون بده))
    ولی چون طول رشته ی ارسالی همواره متغیره ، پس باید حتما از طریق وقفه خونده بشه
    آیا کسی هست که بتونه کمک کنه یا کد آماده داشته باشه (کدویژن) ؟ :read:
    .
    .
    حداکثر طول رشته ای که فرستنده میفرسته 16 تاست !
  2. #2
    2012/07/31
    شیراز
    269
    89

    پاسخ : دریافت رشته از وقفه ی یوزارت

    سلام شما اول بیا تو فرستندت این منطق رو بزار که رشته ای رو که ارسال میکنه انتهاش دو تا بایت مشخص بفرسته مثلا 14 و 15 یا هر عدد دیگه ای
    بعد در گیرندت یه متغیر از نوع آرایه به طول 18 تا بگیر با یه متغیر از نوع CHAR برای اشاره به آرایه مقادیر هر دو متغییر رو صفر کن در شروع برنامت تو زیر برنامه وقفت
    مقدار در یافتی در UDR رو بریز تو آرایه ای که اشاره گر بهش اشاره میکنه بعد این شرط و چک کن ببین آیا آرایه ای که اشاره گر منهای یک بهش اشاره میکنه برابر 14 هست و بعدش آیا آرایه ای که اشاره گر بهش اشاره میکنه برابر 15 هست اگر بود مقدار آرایه ای که اشاره گر منهای یک بهش اشاره میکنه رو صفر کن تا آرایت ماهیت رشته بگیره (انتهاش مشخص شه 15 و 14 نمایش داده نشه ) رشته دریافت شده و رو نمایشگر نشونش بده و اشاره گر و آرایه رو برا دریافت بعدی صفر کن اگه نبود یک واحد به اشاره گر اضافه کن این روند ادامه پیدا می کنه تا رشته باشرط که در فرستنده گذاشتی دریافت شه
    جهان پیر است و بی بنیاد ازاین فرهاد کش فریاد
    که کرد افسون و نیرنگش ملول از جان شیرینم
  3. #3
    2015/09/06
    67
    10

    پاسخ : دریافت رشته از وقفه ی یوزارت

    سلام
    ممنونم
    سمت ارسال من یک رشته دارم و ارسال میشه
    باید موقع رشته کردنش دو تا کد بهش اضافه کنم !
    سمت دریافت هم اگه اون دو تا کد رو حذف کنم
    درسته ؟
    ولی چطوری با وقفه ؟
  4. #4
    2012/07/31
    شیراز
    269
    89

    پاسخ : دریافت رشته از وقفه ی یوزارت

    سلام
    دوست عزیز شما میتونی وقفه دریافت USART میکرو تو فعال کنی و فقط یه کاراکتر ازش بگیری ؟
    جهان پیر است و بی بنیاد ازاین فرهاد کش فریاد
    که کرد افسون و نیرنگش ملول از جان شیرینم
  5. #5
    2012/10/25
    تهران
    797
    9

    پاسخ : دریافت رشته از وقفه ی یوزارت

    نیازی نیست آخر رشته 2 تا کاراکتر اضافه کنی. چون اگه تصادفا این دو کاراکتر تو رشته باشن مشکل پیش میاد. باید تو فرستنده اول رشته یک کاراکتر اضافه کنی که توش طول رشته را قرار بدی.
    این روش هم پردازش کمتری را می طلبه و هم ارسال اطلاعات سریعتر و مقدار رشته کوتاهتر میشه.
    در زیر این نقاب چیزی بیشتر از گوشت هست. در زیر این نقاب یک ایده هست و ایده ها ضدگلوله هستند.

    1-به اندازه ی باورهای هر کسی ؛ با او حرف بزن …. بیشتر که بگویی ، تو را احمق فرض خواهد کرد …!!!
    2-تنها دو گروه نمى توانند افکار خود را عوض کنند: دیوانگان تیمارستان و مردگان گورستان.
    3-آدم ها مثل عکس ها هستند: زیاد بزرگشون کنی ، کیفیتشون میاد پایین!
  6. #6
    2015/09/06
    67
    10

    پاسخ : دریافت رشته از وقفه ی یوزارت

    ممنون م از دوستانی که پاسخ دادن
    مشکل م حل شد تقریبا
    این هم کدش !
    #include <mega32.h>
    #include <lcd.h>
    #include <delay.h>
    #include <stdio.h>
    #asm
    .equ __lcd_port = 0x1b ;
    #endasm
    ///
    ///
    //// global vars
    ///
    ///
    unsigned char l1lcd[20] = "Test from A ...";
    unsigned char l2lcd[20] ;
    unsigned char buffer ;
    unsigned char pos = 0 ;
    ///
    ///
    //// usart intrrupt
    ///
    ///
    interrupt [USART_RXC] void usart_rx_isr(void)
    {
    buffer = UDR ;
    if(pos < 16)
    {
    l2lcd[pos] = buffer ;
    pos++ ;
    }
    }
    //interrupt [USART_TXC] void usart_tx_isr(void)
    //{
    // //UDR = l1lcd ;
    // puts(l1lcd) ;
    //}

    ///
    ///
    //// main
    ///
    ///
    void main(void)
    {

    UCSRA = 0x00 ; // 00
    UCSRB = 0x98 ; // 98
    UCSRC = 0x86 ; // 86
    UBRRH = 0x00 ; // 00
    UBRRL = 0x2f ; // 2f

    lcd_init(16);
    lcd_clear();
    delay_ms(1000) ;
    lcd_gotoxy(0,0) ;
    lcd_putsf("Salaaaaam !!A "
    delay_ms(3000);
    lcd_clear() ;
    delay_ms(1000) ;

    #asm("sei&quot

    while (1)
    {
    puts(l1lcd) ;
    lcd_gotoxy(0,0) ;
    lcd_puts(l1lcd) ;
    lcd_gotoxy(0,1) ;
    lcd_puts(l2lcd) ;
    }
    }
  7. #7
    2009/10/25
    تهران
    414
    24

    پاسخ : دریافت رشته از وقفه ی یوزارت

    چه کاریه؟
    خب اولش یک بایت بفرست که طول پیام رو مشخص کنه بعد پیام رو بفرست
  8. #8
    2011/08/19
    268
    2

    پاسخ : دریافت رشته از وقفه ی یوزارت

    سلام دوستان
    من یه مشکل خیلی مبتدی دارم
    لطفا راهنمایی کنید
    من رشته رو روی سریال ارسال میکنم
    مثلا : 15 یا A5
    بعد در گیرنده روی lcd نمایش میده
    ولی وقتی رشته رو داخل شرط میزاره فقط تا رشته های 0 تا 9 رو جواب میده.
    کد:
            if (code[2]=='15'){ 
    من دستور شرط رو درست نوشتم ؟؟؟؟
    مشکل از چیه
    من فقط میخوام برای رشته در کدویژن شرط بزارم همین
    اینم دستور دریافت اطلاعات از سریال :
    کد:
    code[2]=getchar();
  9. #9
    2008/05/26
    1,043
    527

    پاسخ : دریافت رشته از وقفه ی یوزارت

    سلام
    شما اگر میخوایی مقدار عددی کاراکتر تو آرایه رو مقایسه کنی برای عددهای بزرگتر از 9 باید از کد هگز اونا استفاده کنی (نمیشه بنویسی '15')
    اگر میخوایی دو تا رشته رو با هم مقایسه کنی ینی میخوایی ببنینی مثلا رشته a که مثلا کلمه hello هست با رشته b برابر هست یا نه باید از دستور strcmp استفاده کنی که توضیحاتش در لینک زیر هست :

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    موفق باشی
  10. #10
    2011/08/19
    268
    2

    پاسخ : دریافت رشته از وقفه ی یوزارت

    سلام دوستان
    از جناب M3R-E بابت راهنمایی خوبشون تشکر میکنم

    یه سوال داشتم مگه برای دریافت اطلاعات از سریال از دستور getchar استفاده نمیشه ؟؟؟؟
    کد:
      char code[80];                      int result;
        char example1[50];
        char example2[50];
        
        
        code[10]=getchar(); 
    
    
                                     
        strcpy(example1,"15");
        strcpy(example2,code);
    
    
        result = strcmp(example1, example2);
    
    
        if (result == 0){ 
            PORTB.1=1;
        };
    پس چرا جواب نمیده !!!!

    من میخوام یه اطلاعات رو از سریال به صورت رشته دریافت کنم و بعد با رشته مورد نطرم مقایسه کنم و اگه درست بود یه led روشن کنه.

    روی lcd با کد زیر عدد 15 که به سریال فرستادم رو نمایش میده
    کد:
    lcd_putchar(code[10]);
    ولی مقایسه نمیکنه !!!!

    به نظرتون مشکل از کجاست ؟؟؟
    من دارم با گوشی آندروید و بلوتوث این کد ها رو ارسال میکنم

    با تشکر فراوان
    ویرایش توسط alinavidy : 2016/08/02 در ساعت 08:28
صفحه 1 از 3 123 آخرین
نمایش نتایج: از 1 به 10 از 28

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

  1. دریافت یک رشته از UART
    توسط jaafary1 در انجمن میکروکنترلرهای AVR
    پاسخ: 6
    آخرين نوشته: 2017/07/16, 10:12
  2. دریافت کاراکتر از وقفه usart و ارسال ش با وقفه spi
    توسط davoud.arabee در انجمن برنامه نويسي و اينترفيس
    پاسخ: 5
    آخرين نوشته: 2016/04/01, 21:42
  3. دریافت رشته از وقفه یوزارت
    توسط davoud.arabee در انجمن برنامه نويسي و اينترفيس
    پاسخ: 7
    آخرين نوشته: 2016/03/03, 08:46
  4. مشکل در دریافت از یوزارت
    توسط caspian_man در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2014/02/08, 10:36
  5. مشکل در تبدیل کردن به رشته و فرستادن آن با یوزارت .
    توسط hesam_elc در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2012/05/14, 13:09

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

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

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