اطلاعیه

Collapse
No announcement yet.

مشکل دریافت رشته..!

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل دریافت رشته..!

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


    [code=asm]

    while(1)
    {
    while (B!=13)
    {
    B=UART0_GetChar ();
    str[i]=B;
    i++;
    }

    UART0_SendString(str);

    B=0;

    }


    [/code]


    دفه اول که تایپ میکنم و اینتر میزنم درست کار میکنه و همونو نمایش میده
    اما دفه دووم هرچی میتایپم اینتر میزنم کلا هیچی نمیاد
    اگه میشه راهنمایی بکنین :sad:
    مدت زمانی که صرف ایجاد تاپیک و منتظر پاسخ هستید را صرف سرچ کنید...

    #2
    پاسخ : مشکل دریافت رشته..!

    i رو کجا صفر کردی؟

    دیدگاه


      #3
      پاسخ : مشکل دریافت رشته..!

      با سلام
      چند تا نکته
      1-طول str چقدره؟
      2-برای کار با رشته حتما حتما اون رو null terminate کنین.
      3-همون طور که دوستمون گفتن i رو هم صفر کنین.
      کد زیر رو نگاه کنید.
      کد:
      while(1)
      {
        while( B != 13 ) 
        {
         B=UART0_GetChar (); 
         str[i] = B;
         i++;
         str[i] = 0;
        }
        UART0_SendString(str);                           
        B = 0;
        i = 0;
        str[i]=0;
      }
      The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

      دیدگاه


        #4
        پاسخ : مشکل دریافت رشته..!

        به جای حالت polling بهتر است از وقفه استفاده کنید که در زیروال وقفه دریافت انجام شود و برنامه میکرو در دستور دریافت کاراکتر گیر نکند
        فیلم آموزشی میکروکنترلر LPC1768
        فیلم آموزشی تکمیلی و پیشرفته میکروکنترلر LPC1768
        فیلم آموزش کاربردی زبان سی در میکروکنترلر ARM
        فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

        دیدگاه


          #5
          پاسخ : مشکل دریافت رشته..!

          نوشته اصلی توسط hessam2013
          با سلام
          چند تا نکته
          1-طول str چقدره؟
          2-برای کار با رشته حتما حتما اون رو null terminate کنین.
          3-همون طور که دوستمون گفتن i رو هم صفر کنین.
          کد زیر رو نگاه کنید.
          کد:
          while(1)
          {
            while( B != 13 ) 
            {
             B=UART0_GetChar (); 
             str[i] = B;
             i++;
             str[i] = 0;
            }
            UART0_SendString(str);                           
            B = 0;
            i = 0;
            str[i]=0;
          }
          اون انتها رو نال هم نکرد اشکال نداره چون رشته ای که از کامپورت اونجوری می خونه خودش نال داره چون که هایپر ترمینال فرستاده ولی برای اطمینان خاطر بد نیست نال بزاره

          دیدگاه


            #6
            پاسخ : مشکل دریافت رشته..!

            یه دنیااا ممنون از همه
            حل شد :applause:
            دارم با sim900 کار میکنم
            هر برنامه ای گرفتم از بچه ها یه جاییش توی کیل خطا میگرفت
            دیگه برآن شدیم که خودمون راش بندازیم
            کسی برنامه خاصی یا داره یا نکته ای چیزی در این مورد میدونه بزاره
            دعاش میکنیم...!
            مدت زمانی که صرف ایجاد تاپیک و منتظر پاسخ هستید را صرف سرچ کنید...

            دیدگاه


              #7
              پاسخ : مشکل دریافت رشته..!

              خب به سلامتی که حل شد
              برای sim900 چیزی ندارم ولی به صورت At کار میکنه
              زیاد سخت نیست

              دیدگاه


                #8
                پاسخ : مشکل دریافت رشته..!

                کد:
                اون انتها رو نال هم نکرد اشکال نداره چون رشته ای که از کامپورت اونجوری می خونه خودش نال داره چون که هایپر ترمینال فرستاده ولی برای اطمینان خاطر بد نیست نال بزاره
                در حالت کلی چون کاراکتر می خونیم میذازیم تو رشته اگه بخوایم با توابع رشته کار کنیم لازم میشه نال بذاریم. مخصوصا تو کار با sim900 من اولش مشکل داشتم.اول کار می کرد بعد قاطی می کرد. همش از این بود که رشته رو نال اخرش نمی ذاشتم. اگر تابع رشته می خواین صدا کنین حتما اینو تهش بذازین تا کد همیشه درست کار کنه نه چند در میون. اما اگه بایت بایت می خواین کاری کنین نه لازم نیست.
                موفق باشین
                The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

                دیدگاه


                  #9
                  پاسخ : مشکل دریافت رشته..!

                  اقاکسی یه برنامه ساده واسه sim900نداره
                  که با یه اس یه کاری انجام شه؟
                  کچلم کرد به خدااا
                  :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry:

                  حالت اکو ماژول رو که خاموش کردم
                  وقتی دستور AT+CMGR=1 رو میفرستم
                  اس ام اس ما توی خط دوم هستش
                  منم دومرتبه برنامه بالا رو اجرا کردم اما نننننننننننننشد که نشددددد
                  چیکارش کنم؟؟؟؟
                  :angry: :angry: :angry:
                  مدت زمانی که صرف ایجاد تاپیک و منتظر پاسخ هستید را صرف سرچ کنید...

                  دیدگاه


                    #10
                    پاسخ : مشکل دریافت رشته..!

                    متوجه نشدم، مشکل کجاست الان؟
                    The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

                    دیدگاه


                      #11
                      پاسخ : مشکل دریافت رشته..!

                      سوالت نا مفهومه
                      من با سرس sam کار کردم دستور میفرستی جواب میده

                      دیدگاه


                        #12
                        پاسخ : مشکل دریافت رشته..!

                        مثلا با همین برنامه
                        [code=asm]
                        while(1)
                        UART0_SendString("AT+CMGR=1\r\n"
                        while( B != 13 )
                        {
                        B=UART0_GetChar ();
                        str[i] = B;
                        i++;
                        str[i] = 0;
                        }

                        UART0_SendString(str);
                        UART0_SendString("\n"
                        B = 0;
                        i = 0;
                        str[i]=0;
                        }

                        [/code]

                        من دستور میدم اس اول رو نمایش بده خوب
                        توی sim900 بعد ازین دستور توی خط اول تاریخ و شماره ی ارسال کننده رو میده
                        توی خط دوم پیامک رو نشون میده
                        اما این برنامه ما بعد ازینکه میرسه به انتهای خط اول میپره بیرون
                        امیدوارم متوجه شده باشین
                        داداش gbg شما هم سورست رو بزار ببینم میتونم چیزی از توش بکشم بیرون یا نه
                        از توجهتون ممنون
                        امیدوارم متوجه شده باشین منظورمو
                        مدت زمانی که صرف ایجاد تاپیک و منتظر پاسخ هستید را صرف سرچ کنید...

                        دیدگاه


                          #13
                          پاسخ : مشکل دریافت رشته..!

                          ببین مشکلت رو فهمیدم چیه
                          توی رشته هایی که از طرف Sim900 میاد برات ممکنه تو پاسخ چندتا 13 بگیری
                          و این کد :
                          کد:
                          while( B != 13 )
                          باعث میشه ادامه رشته رو نخونی
                          یعنی اطلاعات رو ناقص می خونی

                          دیدگاه


                            #14
                            پاسخ : مشکل دریافت رشته..!

                            اررررررره دقیییقا همینه
                            حالا چیکارش کنم؟
                            مدت زمانی که صرف ایجاد تاپیک و منتظر پاسخ هستید را صرف سرچ کنید...

                            دیدگاه


                              #15
                              پاسخ : مشکل دریافت رشته..!

                              ببین دوست عزیز
                              مهندس هم گفتن، روش کار شما غلطه ، برای کار با sim900 باید از اینتراپت سریال استفاده کرد. شما باید یک بافر تعریف کنین و ترجیحا یک دونه متغیر که اشاره کنه به مکان اخر بافر و تو وقفه سریال این بافر رو پر کنین و هر وقت لازم بود خالیش کنین، اینجوری هر اتفاقی بیافته، دیتایی از دست نمیره.این کار شما الان ابدا اصولی نیست حتی اگه این مشکل رو هم حل کنین، کد باگ خیز هست و هی مشکلات پی در پی میاد و امکان توسعه محدود میشه و اگه بخواین پروژه سنگین بزنین حتما به مشکل بر می خورین. سعی کنین با همچین پایه ای که گفتم برین جلو هم راحت ترین و هم می تونید تو همه پروژه هاتون ازش بهره ببرین.
                              موفق باشین.
                              The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

                              دیدگاه

                              لطفا صبر کنید...
                              X