اطلاعیه

Collapse
No announcement yet.

خارج شدن از دستور ()getstr بعد از مدتی

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

    خارج شدن از دستور ()getstr بعد از مدتی

    با سلام
    برای خارج شدن از دستور ()getstr بعد از مدتی که دریافتی نداشتیم چه کار کنیم؟
    زمانی پیش می آید که برای گرفتن رشته ای در دستور getstr می مانیم و چون دریافتی نداریم می خواهیم که بعد مثلا مدت 1 دقیقه از این دستور خارج شود . ممنون می شم کسی کمک کنه لطفا تو کدویژن بگید و با میکروی مگا32.
    با تشکر
    دوست عزیز اگه مفید بود روی تشکر بزن

    #2
    پاسخ : خارج شدن از دستور ()getstr بعد از مدتی

    این دستور جزء کلمات کلیدی زبان C نیست .
    یه تابعه ، هر تابع یه جایی تعریف شده . شما یه فایل سرآیندی رو اضافه کردید که تونستید از این تابه استفاده کنید .
    برید تو اون فایل سرآیند. فکر کنم stdio باشه . الان حضور ذهن ندارم.
    ببینید getstr رو چه جوری تعریف کرده . یه while گذاشته که توش یه بیت چک میشه .


    حالا شما میخوای یه بار چکش کنی ؟ باید به جای while از if استفاده کنی.
    میخوای یک ثانیه مدام چک بشه ؟ تو حلقه for از if و تاخیر استفاده کن که مثلا 100 بار هر 10 میلی ثانیه بیاد چک کنه .

    امید وارم فهمیده باشی .فکر کنم کامل گفتم . بقیش با خودت .
    اِنَّ الَّذِینَ یُحِبُّونَ أَنْ تَشِیعَ الْفاحِشَهُ فِی الَّذِینَ آمَنُوا لَهُمْ عَذابٌ أَلِیمٌ فِی الدُّنْیا وَ الْآخِرَهِ وَ اللَّهُ یَعْلَمُ وَ أَنْتُمْ لا تَعْلَمُونَ.
    کسانى که دوست دارند زشتی ها در میان مردم با ایمان شیوع یابد عذاب دردناکى براى آنها در دنیا و آخرت است، و خداوند میداند و شما نمی‏دانید. (نور19)

    دیدگاه


      #3
      پاسخ : خارج شدن از دستور ()getstr بعد از مدتی

      سلام چرا از وقفه دریافت به جای getchar() استفاده نمیکنی
      چون get char تا وقتی کاراکتری دریافت نکنه از اون تابع بیرون نمیاد و به قول دوستمون باید بری تو هدرش و تابعشو عوض کنی ک درد سره
      و کلا تابعای دیفالتو عوض نکنی بهتره

      دیدگاه


        #4
        پاسخ : خارج شدن از دستور ()getstr بعد از مدتی

        نوشته اصلی توسط aliali6624
        سلام چرا از وقفه دریافت به جای getchar() استفاده نمیکنی
        چون get char تا وقتی کاراکتری دریافت نکنه از اون تابع بیرون نمیاد و به قول دوستمون باید بری تو هدرش و تابعشو عوض کنی ک درد سره
        و کلا تابعای دیفالتو عوض نکنی بهتره
        تابع های دیفالتو عوض نکن.
        ازش الگو بگیر خودت یه تابع بنویس .
        اِنَّ الَّذِینَ یُحِبُّونَ أَنْ تَشِیعَ الْفاحِشَهُ فِی الَّذِینَ آمَنُوا لَهُمْ عَذابٌ أَلِیمٌ فِی الدُّنْیا وَ الْآخِرَهِ وَ اللَّهُ یَعْلَمُ وَ أَنْتُمْ لا تَعْلَمُونَ.
        کسانى که دوست دارند زشتی ها در میان مردم با ایمان شیوع یابد عذاب دردناکى براى آنها در دنیا و آخرت است، و خداوند میداند و شما نمی‏دانید. (نور19)

        دیدگاه


          #5
          پاسخ : خارج شدن از دستور ()getstr بعد از مدتی

          سلام چرا از وقفه دریافت به جای getchar() استفاده نمیکنی
          چون get char تا وقتی کاراکتری دریافت نکنه از اون تابع بیرون نمیاد و به قول دوستمون باید بری تو هدرش و تابعشو عوض کنی ک درد سره
          و کلا تابعای دیفالتو عوض نکنی بهتره
          سلام

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

          با تشکر
          دوست عزیز اگه مفید بود روی تشکر بزن

          دیدگاه


            #6
            پاسخ : خارج شدن از دستور ()getstr بعد از مدتی

            نوشته اصلی توسط david24

            سلام

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

            با تشکر
            دریافت 2 مدل داره .
            1 - حالت اول : همونجا صبر میکنه تا یه کاراکتر بیاد ( دستور getchar )
            2 - حالت با وقفه : برنامه کار خودشو میکنه و هر وقت کاراکتر اومد وقفه صادر میشه . هیچ ربطی هم به وقفه خارجی نداره. وقفه uart هستش.

            اون حالتی که من گفتم که برید هدر رو دستکاری کنید برای وقتیه که مثلا یه کاراکتر میفرستید. نهایتا باید تا یک ثانیه بعد جوابش بیاد و در غیر اینصورت جواب نامعتبره . ( این یه مثاله و مثلا این الزام رو صورت مساله برای ما تعیین کرده ) اینجا به جای while میشه if گذاشت . یا میشه وقفه رو فعال کرد و بعد 1 ثانیه غیر فعال کرد .
            ولش کن ! کلا فکر کنم کار شما با وقفه راه بیافته .
            اِنَّ الَّذِینَ یُحِبُّونَ أَنْ تَشِیعَ الْفاحِشَهُ فِی الَّذِینَ آمَنُوا لَهُمْ عَذابٌ أَلِیمٌ فِی الدُّنْیا وَ الْآخِرَهِ وَ اللَّهُ یَعْلَمُ وَ أَنْتُمْ لا تَعْلَمُونَ.
            کسانى که دوست دارند زشتی ها در میان مردم با ایمان شیوع یابد عذاب دردناکى براى آنها در دنیا و آخرت است، و خداوند میداند و شما نمی‏دانید. (نور19)

            دیدگاه


              #7
              پاسخ : خارج شدن از دستور ()getstr بعد از مدتی

              با سلام دوباره

              ممنون که جواب می دید.

              مشکل اینجاست که تابع getstr از getchar استفاده میکند و آن هم فقط یکی - یکی کارکتر می گیرد و در زمانی که منتظر کارکتر هست نمی شود کاری اعمال کرد! پس فقط با عوض کردن while با if مسئله حل نمی شود.

              درمورد وقفه که گفتید میشه یک مثال ساده بزنید؟
              دوست عزیز اگه مفید بود روی تشکر بزن

              دیدگاه


                #8
                پاسخ : خارج شدن از دستور ()getstr بعد از مدتی

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

                www.intelart.ir


                ساخت کنترلر دما PID فازی با AVR [آموزشی]

                دیدگاه


                  #9
                  پاسخ : خارج شدن از دستور ()getstr بعد از مدتی

                  نوشته اصلی توسط Mahdi.Faani
                  اینطور که متوجه شدم قصد ایجاد ارتباط سریال رو دارید.به نظرم از یه کتابخونه که بافر داشته باشه استفاده کنید و تمام این مشکلات رو خاک کنید!
                  لازم نیست .
                  خود کدویزارد کدویژن برای حالت با اینتراپت ، توابع بافر رو به پروژه اضافه میکنه . جناب سپاسیار تو کتاب میکرو شون کامل توضیح دادن.
                  اِنَّ الَّذِینَ یُحِبُّونَ أَنْ تَشِیعَ الْفاحِشَهُ فِی الَّذِینَ آمَنُوا لَهُمْ عَذابٌ أَلِیمٌ فِی الدُّنْیا وَ الْآخِرَهِ وَ اللَّهُ یَعْلَمُ وَ أَنْتُمْ لا تَعْلَمُونَ.
                  کسانى که دوست دارند زشتی ها در میان مردم با ایمان شیوع یابد عذاب دردناکى براى آنها در دنیا و آخرت است، و خداوند میداند و شما نمی‏دانید. (نور19)

                  دیدگاه


                    #10
                    پاسخ : خارج شدن از دستور ()getstr بعد از مدتی

                    کدویزارد ...
                    :rolleyes:
                    تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                    www.intelart.ir


                    ساخت کنترلر دما PID فازی با AVR [آموزشی]

                    دیدگاه


                      #11
                      پاسخ : خارج شدن از دستور ()getstr بعد از مدتی

                      با تشکر

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

                      آیا می شود متغییر تعریف شده برای دستور getstr را با تایمر یا سرریز آن پر کرد و از getstr خارج شود؟
                      دوست عزیز اگه مفید بود روی تشکر بزن

                      دیدگاه


                        #12
                        پاسخ : خارج شدن از دستور ()getstr بعد از مدتی

                        با سلام

                        ظاهرا کسی نمیتونه کمک کنه!!!!!

                        اگر کسی را حلی بنظرش میاد عنوان کنه!

                        با تشکر
                        دوست عزیز اگه مفید بود روی تشکر بزن

                        دیدگاه


                          #13
                          پاسخ : خارج شدن از دستور ()getstr بعد از مدتی

                          شما میخای چ کار کنی؟
                          اینکه بعد از یه مدت اگه کاراکتر دریافت نکرد از getstr() خارج بشه؟
                          تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                          www.intelart.ir


                          ساخت کنترلر دما PID فازی با AVR [آموزشی]

                          دیدگاه


                            #14
                            پاسخ : خارج شدن از دستور ()getstr بعد از مدتی

                            از getstr بیاد بیرون و خط بعدی را اجرا کند.
                            دوست عزیز اگه مفید بود روی تشکر بزن

                            دیدگاه


                              #15
                              پاسخ : خارج شدن از دستور ()getstr بعد از مدتی

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

                              www.intelart.ir


                              ساخت کنترلر دما PID فازی با AVR [آموزشی]

                              دیدگاه

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