اطلاعیه

Collapse
No announcement yet.

دریافت یک رشته از UART

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

    دریافت یک رشته از UART

    سلام دوستان وقت بخیر...

    من می خوام یک رشته رو از طریق UART دریافت کنم. نکته اینجاست که طول رشته ثابت نیست و هر بار عوض میشه.
    می خواستم از تابع gets(str, len) استفاده کنم ولی جواب نمیده. توی هلپ نوشته این تابع رشته ای به ماکزیمم طول len رو دریافت می کنه و در str قرار میده آخرش هم LF میذاره درسته؟ :eek: حالا اگه قبل اینکه ماکزیمم طول به len برسه کاراکتر LF توی رشته باشه دریافت تموم میشه، درسته؟

    من کارکرد این تابع رو درست فهمیدم؟ راه حل دیگه ای ست که یه رشته رو دریافت کرد، سرعت هم پایین نیاد؟

    با سپاس
    همیشه بزرگوار تر از آن باشید که برنجید
    و نجیب تر از آن باشید که برنجانید!

    #2
    پاسخ : دریافت یک رشته از UART

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

    دیدگاه


      #3
      پاسخ : دریافت یک رشته از UART

      نوشته اصلی توسط hessam2013
      با سلام
      دوست عزیز برای کار با usart و دریافت رشته باید از وقفه دریافت استفاده کرد، اینطوری هم دیگه نگران طول نیستیم و از اون مهم تر وقت cpu صرف منتظر واستادن برای اومدن کل جمله یا فلان کاراکتر خاص نمیشه و میتونه کار های دیگشو انجام بده.
      ممنون دوست عزیز از راهنمایی شما،

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

      با سپاس
      همیشه بزرگوار تر از آن باشید که برنجید
      و نجیب تر از آن باشید که برنجانید!

      دیدگاه


        #4
        پاسخ : دریافت یک رشته از UART

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

        دیدگاه


          #5
          پاسخ : دریافت یک رشته از UART

          نوشته اصلی توسط hessam2013
          بله، ببینید اصول کار با usart بر اساس وقفه هست، به نظرم اگه با وقفه تا حالا کار نکردین، نترسین و یک بار برای همیشه این کار رو انجام بدین، چرا؟
          1-خب در این جا شما میگین که کار اصلی میکرو همینه،درست، اما تعیین روال برنامه و کد زدن با استفاده از وقفه باعث میشه برنامه سازماندهی بهتری داشته باشه، و راحت تر بشه کار رو انجام داد و مشکلات احتمالی رو رفع کرد،
          2-فرض کنید دفعات بعدی می خواین یه پروژه سنگین بزنین، چیزی که پیچیده است، بدون وقفه عملا کد کار با سریال نمی تونه از یه حدی بزرگتر بشه، چون انقدر درهم برهم میشه که بعد یه مدت برنامه نویس نمی فهمه چیکار کرده.
          پس یه لطفی در حق خودتون بکنین، نمیدونم چرا اما دیدم تو همین فروم از کار با وقفه می ترسن، اصلا سخت نیست و اصلا نترسین، وقفه دریافت usart رو فعال کنین، و الگوریتم مورد نظرتون رو طبق اون پیاده کنین، و از ساختار و قدرتی که به برنامتون میده استفاده ببرین،
          خیلی ممنون از راهنمایی تون،
          با وقفه UART کار کردم، تو همین پروژه از دو UART استفاده می کنم و برای یکی از اونها وقفه فعاله. تنها مشکل من اینه که رشتهخ ای که دریافت می کنم طول متغیر داره هر دفعه. از الان میرم که برای این قسمت هم وقفه رو فعال کنم.. ولی احتمالا باید یه تدابیری بیندیشم که انتهای رشته رو تشخیص بدم... و یه جوری مشکل طول متغیر رو حل کنم.

          با سپاس
          همیشه بزرگوار تر از آن باشید که برنجید
          و نجیب تر از آن باشید که برنجانید!

          دیدگاه


            #6
            پاسخ : دریافت یک رشته از UART

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

            دیدگاه


              #7
              پاسخ : دریافت یک رشته از UART

              سلام یکی کار با وقفه USART را که کدویزارد درست می کنه توضیح بده اصلا نمی فهمم.

              دیدگاه

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