اطلاعیه

Collapse
No announcement yet.

مشکل با دریافت دیتا از پورت سریال؟

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

    مشکل با دریافت دیتا از پورت سریال؟

    سلام
    من دارم اطلاعات دریافتی از AD7780 رو با پورت سریال میفرستم برای PC حالا با Lab View یه برنامه نوشتم که این اطلاعاتو روی نمودار بکشه تا اینجا مشکلی نیست خروجی ADC بدرستی میاد و مثلا 33374 یا 33373 تو نمودار نشون میده



    ولی نمودونم چرا یکدفعه دیتا 0 میشه و دوباره درست میشه اینم بگم مشکل از خروجی ADC نیست چون چکش کردم این اتفاق زمانی میوفته که من delay برنامه Lab View رو کمتر از 100 میلی ثانیه کنم حتی رو 100 میلی ثانیه هم گاهی وقتا این اتفاق میوفته


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

    ذكات علم ياد دادنه ....

    #2
    پاسخ : مشکل با دریافت دیتا از پورت سریال؟

    اینم برنامه
    http://s1.picofile.com/file/6656315890/AD7780.vi.html
    ذكات علم ياد دادنه ....

    دیدگاه


      #3
      پاسخ : مشکل با دریافت دیتا از پورت سریال؟

      سلام. من برنامه شما رو ندیدم. ولی احتمال زیاد مشکل در فرکانس نمونه برداری شما و میزان تأخیری که شما در برنامه لب ویو گذاشتید هست. وقتی فرکانس نمونه برداری و ارسال داده شما به لب ویو کمتر از اون میزان تأخیر باشه ، این اتفاق میفته. البته من الان جایی هستم که دسترسی به لب ویو ندارم که برنامه رو نگاه کنم. ولی احتمال زیاد همین باشه. یه کاری کنید نرخ baud رو افزایش بدید.

      دیدگاه


        #4
        پاسخ : مشکل با دریافت دیتا از پورت سریال؟

        شما مطمئنی که دیتا صفر میشه. چون تو نمودار از 33370 رسیده به 33315 که فکر میکنم طبیعی باشه اینقدر خطا. شما مختصات عمودی نمودارت رو بازه ش رو تغییر بده درست میشه مثلا از 0 تا 500000

        دیدگاه


          #5
          پاسخ : مشکل با دریافت دیتا از پورت سریال؟

          سلام. دوستمون فرمودن وقتی میزان تأخیر رو کم میکنن این اتفاق میفته. و اگه تو نمودار دقت کنین جاهایی که افت داربم تا پایین رفته. چون اگه تا جایی که شما میگید سیگنال افت میکرد (33315 ) باید تو زمینه خطوط سبز رنگ کوچیک دیده میشد. پس میبینید که اون خطها تا پایین افت میکننند. ولی چون maximum , minimum محور عمودی بین این تا عدد هست نمیتونیم ببینیم.

          دیدگاه


            #6
            پاسخ : مشکل با دریافت دیتا از پورت سریال؟

            برنامت اشکال فنی داره ! راحت ترین روش برای اصلاحش اینه که تمام روند ارتباط سریالت رو پشت سر هم قرار بدی! یعنی سیم کشیت اول بیاد توی CASE STRUCTURE مربوط به ارسال داده بعد بره به CASE STRUCTURE مربوط به خوندن از پورت! اگر بخوای لوپ یا کلا برنامه مربوط به خوندن از پورت سریالت با نوشتن روی اون 2 تا پروسه ی کاملا مستقل باشند ( که اینجا نباید اینجوری باشه!) در این صورت باید از EVENT STRUCTURE استفاده کنی و مثلا بودن بایت توی بافر پورتت رو به عنوان EVENT براش تعریف کنی . (این برای پروسه ی خوندنه)
            اگر تاخیر هم بعد از فرستادن دستور به میکرو (بین نوشتن تا خوندن) نگذاری ممکنه داده هات رو اشتباه دریافت کنی یا یه بار داده ای نخونی و مرحله یبعد داده ی قبلی رو بخونی یا کلا بهم بریزه داده هات . برای این مورد هم می تونی به جای ایجاد تاخیر یه لوپ تعریف کنی که تا رسیدن یه کاراکتر ( که می تونه کریج ریترن هم باشه) بیاد ببینه چندتا بایت توی بافرش هست و بخونه و پشت سر هم قرار بده تا کاراکتر پایان بیاد . اینجوری سرعت ارتباط بیشتر میشه تا تاخیر بگذاری.
            Gracias A La Vida
            [glow=red,2,300]ساخت فرز CNC[/glow]
            http://www.eca.ir/forum2/index.php?topic=56308.0
            http://up9.iranblog.com/images/4xd21f8vemt8g46011fx.jpg
            زمین سفت است و آب شلست و هوا نرم است و همه چیز عالیست در این حوالی...

            دیدگاه


              #7
              پاسخ : مشکل با دریافت دیتا از پورت سریال؟

              شما مطمئنی که دیتا صفر میشه
              بله صفره میشه چون بازه رو که از 0 دادم میومد رو صفر...

              برنامت اشکال فنی داره ! راحت ترین روش برای اصلاحش اینه که تمام روند ارتباط سریالت رو پشت سر هم قرار بدی! یعنی سیم کشیت اول بیاد توی CASE STRUCTURE مربوط به ارسال داده بعد بره به CASE STRUCTURE مربوط به خوندن از پورت
              فکر نکنم زیاد فرقی کنه چون قبلا هم فقط دیتا رو میخوندم و چیزی رو ارسال نمیکردم و بازم همین اتفاق میوفتاد

              حالا یه نکته جالب که بهش رسیدم اینکه موقعی که یه برنامه مثلا code vision رو باز میکنم کلا این تعداد صفر شدنا زیاد میشن یعنی فکر کنم PC میره سراغ باز کردن برنامه Code Vision و دیتای سریال رو یه لحظه بیخیال میشه

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

              ذكات علم ياد دادنه ....

              دیدگاه


                #8
                پاسخ : مشکل با دریافت دیتا از پورت سریال؟

                هر چند که فکر نمیکنم اشکال برنامت جوری باشه که برنامه بخاطر کم آوردن دیتای صفر میده (به نظرم هنوز باید بدنبال یه اشکال منطقی تو برنامت باشی)
                اما برای ذخیره کردن داده ها در لب ویو باید یه متغیر محلی تعریف کنی. یه نشاندهنده یا کنترل از نوعی که میخوای روی صفحه قرار بده و براش متغیر محلی local variable ایجاد کن و مقداری رو که میخوای ذخیره کنی توی اون بنویس و بخون

                دیدگاه


                  #9
                  پاسخ : مشکل با دریافت دیتا از پورت سریال؟

                  من برنامه رو ندیدم ولی بعضی وقت ها احتمال داره صفر شدن ها بخاطر ویندوز باشه چون Real Time نیست و اگه وقفه ای پیش بیاد که بخواد جواب بده دریافت داده رو از دست میده. (به هر حال لبویو هم از طریق ویندوز به پورت ها دسترسی داره)
                  که فکر نکنم مشکل شما دقیقا این باشه

                  دیدگاه


                    #10
                    پاسخ : مشکل با دریافت دیتا از پورت سریال؟

                    من با میکرو یک عدد ثابت رو می فرستم تو لب ویو و بعد می خونمش ، بحث زمان نمونه برداری زیاد جواب نمیده ، اما بهتر شد ، ولی به نظرم بهترین کار اینه که شما یک پروتکل تعریف کنید ،یعنی یک کاراکتر ثابت + دیتاهاتون
                    اگر کاراکتر ثابت رو خوندید و درست بود ، حالا ادامش رو که اطلاعات هست رو بخونید :read:

                    دیدگاه

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