اطلاعیه

Collapse
No announcement yet.

مشکل با RS232

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

    مشکل با RS232

    سلام من با ماژول GPS کار می کنم که اطلاعات رو به صورت سریال می ده. این ماژول اطلاعات رو به صورت پی در پی و پشت سر هم میده.مشکل من هم توو همین قسمت هست.یعنی من برای اولین بار که می خوام اطلاعات رو بگیرم خیلی عالی می گیره و برام نمایش می ده . ولی برای دفعه های بعد میکرو هنگ میکنه.مثلاً getc() رو میندازم تو یه لوپ و 50 تا کاراکتر رو می گیرم بعد با puts نمایش می دم بعد از اینکار وقتی می خوام برای بار دوم این کار رو تکرار کنم نمی تونم یعنی میکرو یه جورایی هنگ می کنه و قسمت های دیگه رو هم اجرا نمی کنه!!!!! به نظرتون مشکل از کجاست؟برای اینکه من بتونم از این جور ماژول ها درست و حسابی دیتا بگیرم باید چکار کنم؟

    #2
    پاسخ : مشکل با RS232

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

    دیدگاه


      #3
      پاسخ : مشکل با RS232

      مثل اینکه درست متوجه نشدید.مشکل من اینه که این برنامه ای رو که نوشتم اگه با PC بهش کاراکتر بفرستم درست کار می کنه . اما وقتی به GPS وصل می کنم به دلیل اینکه با سرعت بالا داده می فرسته نمی تونم بگیرم یعنی می کرو نمی تونه بگیره و هنگ می کنه . :angry: :angry: اصلاً شما فکر کنید می خواید از یه ماژولی که داده ها رو با سرعت بالا به صورت سریال ارسال می کنه داده بگیرید حالا به هر نحوی چه طور براش کد می نویسید . من هر مدلی که بود نوشتم با PC کار می کنه اما با این ماژول نه .... چکار کنم؟

      دیدگاه


        #4
        پاسخ : مشکل با RS232

        من فکر نمیکنم مشکل شما در گرفتن اطلاعات باشه ... میکرو به راحتی میتونه با سرعت بسیار بالا با دیوایس های جانبی از طریق پورت سریال ارتباط برقرار کنه (( تا 115200 رو من به درستی تست کردم)) فکر میکنم شما باید روتینی بنویسید که هر بار که یک بایت از طریق پورت سریال دریافت میشود سیستم چک کند که آیا شروع پکت است ؟؟؟ پایان پکت است ؟؟؟ و در صورتی که شروع پکت بود مثلا ایندکس مربوط به آرایه دریافت را صفز کند و زمانی که متوجه شد این بایت بایت پایانی است اینتراپت سریال را غیر فعال کرده و پکت دریافتی را پردازش کند . امکانش هست شما با کامپیوتر از برنامتون نتیجه بگیرید ولی با میکرو نتونید بگیرید به عنوان مثال ممکن هست کامپیوتر بین دو اینتراپت سریال بتونه 100 دستور دیگه رو اجرا کنه ولی میکرو فقط بتونه 40 تا دستور رو اجرا کنه در این صورت برنامه در کامپیوتر اجرا میشه ولی در میکرو اجرا نمیشه ... اگر نرخ تبادل سریال (( باد ریت)) سیستم رو بهم بگید شاید بتونم بهت کمکتون کنم

        دیدگاه


          #5
          پاسخ : مشکل با RS232

          من از باوود ریت 9600 استفاده می کنم...

          دیدگاه


            #6
            پاسخ : مشکل با RS232

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

            شما تعیین کنید که دقیقا چند کاراکتر باید دریافت کنید. بعد با استفاده از وقفه ی پورت سریال و یک بافر نرم افزاری تعداد کاراکتر موردنظر رو از پورت بخونید
            ِِDie for Life, Not Live to Die
            Freedom Fighter
            " ناخود گاه، هريك از ما ، از ناميرائي خود يقين دارد " . فروید

            دیدگاه


              #7
              پاسخ : مشکل با RS232

              سلام دوست عزیز من 2 سال پیش دقیقا مشکل شما رو داشتم و هیچکس به من کمکی نکرد من می فهمم شما چی میکشی.
              راه حل اینکار اینه که شما اصلا روش دریافت و ارسال سریالت رو عوض کنی
              شما در یک لوپ منتظر دریافت از پورت سریال می مانید و تا موقعی که نیاید از تابع getc() خارج نمی شود و این تابع به درد اریافت نمی خورد شما بایستی بفهمی که کی اینتراپت سریال آمده و خودت بری مستقیم از پورت بخونی متاسفانه من نمی تونم سورس برنامه ای که نوشتم رو به شما بدم چون اون رو به جایی فروختم ولیکن یک کم تحقیق بکن
              با این روش مدیریت کامل دریافت و ارسال دست خود شماست و بسیار راحت همه چیز رو میشه درک کرد.

              دیدگاه


                #8
                پاسخ : مشکل با RS232

                بله داریوش خان درست اشاره کردن منظور منم همین بود

                شما بافر پورت سریال رو بعد از اجرا شدن وقفه بخونید
                ِِDie for Life, Not Live to Die
                Freedom Fighter
                " ناخود گاه، هريك از ما ، از ناميرائي خود يقين دارد " . فروید

                دیدگاه

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