اطلاعیه

Collapse
No announcement yet.

نمایش اطلاعات دریافتی(از پورت سریال) روی گراف XY

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

    نمایش اطلاعات دریافتی(از پورت سریال) روی گراف XY

    من یه سری عدد رو از پورت سریال میآ‌گیرم و میآ‌خوام روی گراف نشون بدم.
    در واقع یه شکل موج رو با ADC نمونه برداری کردم و با RS-232 به کامپیوتر انتقال دادم.حالا میآ‌خوام با Labview ببینمش.
    اگه میشه این فایل رو چک کنید و بگید اشکالش کجاست.
    http://tl081.persiangig.com/eca/XY.zip

    #2
    پاسخ : نمایش اطلاعات دریافتی(از پورت سریال) روی گراف XY

    خب تا اینجای کار تونستم یه چیزهایی روی پورت ببینم
    ولی باز هم مشکل داره.
    برای مثال با میکرو عدد 1100 رو پشت سر هم روی پورت میآ‌فرستم، رو گراف هم میآ‌بینمش ولی به طور متناوب هر چند ثانیه برای چند لحظه صفر میشه
    http://tl081.persiangig.com/eca/A/labview/1.rar

    دیدگاه


      #3
      پاسخ : نمایش اطلاعات دریافتی(از پورت سریال) روی گراف XY

      سلام
      برنامه اولتون بهتره که اون تنظیمات پیشرفته رو بردارید و مثل برنامه دومتون عمل کنید. نیازی به تنظیمات پیشرفته نیست و شما هم حتما اونور تو میکرو استفاده نکردید از این پروتکل پس شاید ایجاد مشکل بکنه. فقط پورت سریال رو کانفیگ کنید و Property دیگه ای رو Set نکنید.
      بعد از کانفیگ کردن میرسیم به حلقه While که اونجا هم توی قسمت نمایش روی Waveform Graph درست عمل نشده. حتما میخواید از Waveform Graph استفاده کنید ؟
      Waveform Chart تو این مورد بهتره. مخصوصا در مواردی که تند تند میخواید داده ها روی گرافتون به نمایش دربیان چارت استفاده میشه.
      شما اومدید 1000 بایت رو خوندید. این 1000 تو مثالش بوده. برنامه شما هم 1000 تا رو میفرسته ؟
      آخه اینطوری فکر نکنم درست باشه 1000 بایت رو بخونید بعد همه رو تبدیل به عدد بکنید بعد بخواید نشون بدید.
      بهتره از خصوصیت (Property) تعداد بایت ها در پورت استفاده کنید: Bytes at port و خروجی اونو به ورودی Byte Count دستور VISA READ وصل کنید.

      باز میگم همه اینا بستگی به اونور سمت میکرو داره که چطوری و در چه قالبی دارید اطلاعات رو میفرستید.


      برنامه دوم که همش اشکال داره چون اومدید تو حلقه While تند تند پورت رو کانفیگ میکنید و اونو میبندید. این دو کار باید به ترتیب قبل از حلقه و بعد از حلقه و تنها برای یکبار انجام بشن.
      Stop حلقه While رو هم باید بیارید بزارید تو خود حلقه. این دیگه چه جورشه.
      تایم اوت رو هم 10000 در نظر بگیرید شاید بهتر باشه

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

      http://rapidshare.com/files/453432525/Serial_Example.vi

      دیدگاه


        #4
        پاسخ : نمایش اطلاعات دریافتی(از پورت سریال) روی گراف XY

        کد:
        [left]برنامه ی میکرو به این صورته:
        $regfile = "m32def.dat"
        $crystal = 8000000
        $baud = 38400
        $hwstack = 64
        $swstack = 40
        $framesize = 60
        Config Adc = Single , Prescaler = Auto , Reference = Off
        Dim X As Word
        Dim Q As Word
        Dim Z As Byte
        Do
        For Z = 1 To 5
        Start Adc
        X = Getadc(1)
        Q = Q + X
        Waitus 600
        Next
        Q = Q / 6
        Print Q
        Waitms 50
        Loop
        End[/left]
        در واقع از یک شکل موج نمونه برداری میشه.
        با برنامهآ‌ی شما هم نتونستم جواب بگیرم.
        شدیدا مبتدی هستم.اگه امکانش هست یه راهنمایی برای نحوه ارسال و دریافت و نمایش اطلاعات بکنید.
        استفاده از گراف XY هم به خاطر بود که بتونم هم محور X و هم Y رو کنترل کنم.(واسه Time/div) البته این زیاد مهم نیست

        دیدگاه


          #5
          پاسخ : نمایش اطلاعات دریافتی(از پورت سریال) روی گراف XY

          برای چارت هم میتونید Scale های محور X و Y رو کنترل کنید. با استفاده از خصوصیت Range در X Scale و Y Scale در چارت
          اینکه از برنامه من جواب نگرفتید خب طبیعیه !!
          البته من الان هیچ امکاناتی ندارم که بخوام ببندم مدار رو. حداقل میکرو ندارم!
          برنامه که چیزی نداره. البته بسکام یادم نیست. ولی یه سری نکات رو که یادم مونده میگم. اولا تو پروتئوس برنامه درست جواب میده ؟ کاراکترها منطقی هستند یا هر دفعه یه چیزی میفرسته ؟
          فقط خواهشا دقت داشته باشید مواردی مثل Baud Rate هم تو میکرو هم کامپیوتر و کریستال میکرو و اینجور چیزا رو اشتباه نکرده باشید که سر کار نباشیم.
          دوباره تاکید میکنم ببینید تو پروتئوس کاراکترها به چه نحوی هستند. که عمرا الان درست باشند. نه ؟
          ببینید به ورودی ADC میکرو ولتاژ مثلا 1 ولت ثابت وصل کنید کاراکترهایی که برنامه تولید میکنه و شما توی ترمینال پروتئوس میبینید باید ثابت باشند و تغییر نکنند. مثلا برای ولتاژ 1 ولت باید کاراکتر $ رو بفرسته تو ترمینال و با ازدیاد ولتاژ کاراکتر هم فرق کنه اما نه اینکه با ثابت موندن ولتاژ کاراکتر فرق کنه. $ مثال بود فقط.
          اولا کریستال با فرکانس 8 مگ خارجی بزارید تو سخت افزارتون. Baud Rate رو تو میکرو 38400 گرفتید ولی تو لبویو 9600 گذاشتید. حواستون به این موارد باشه. تو میکرو هم 9600 تنظیم کنید. حتما 9600
          رفرنس ADC رو AVCC بزارید و تو پروتئوس و سخت افزار هم وصل کنید 5 ولت تمیز AVCC رو
          اگه جواب نگرفتید تو پروتئوس احتمال 120 درصد مشکل از دستور Print هستش. دستور Print دستور مناسبی نیست برای اینکارا. Printbin استفاده کنید حتما
          الان دیگه باید کاراکترها رو درست داشته باشید.
          برنامه قبلی که گذاشتم رو بیارید بعد از حلقه While یه VISA Close بزارید. ورودی VISA Close از خروجی VISA Read میاد. تو حلقه وایل هم یه تاخیر Wait(ms) برابر مثلا 30 میلی ثانیه بزارید. بعد 30 میلی رو بالا پایین کنید ببینید جواب میده اگه جواب نداد احیانا
          در این حد باید جواب بده. چیزی نداره آخه.

          دیدگاه


            #6
            پاسخ : نمایش اطلاعات دریافتی(از پورت سریال) روی گراف XY

            تو پروتئوس درست جواب میده. همون کارکتر رو هم تو لب ویو درست دریافت میآ‌کنم
            سخت افزاری هم نبستم. از پورت مجازی استفاده کردم.Virtual Serial Port Driver
            baudrate و ... هم درستند.
            به طور مثال عدد ثابت 100 رو میآ‌فرستم.روی گراف باید خط صاف داشته باشم ولی این طور نیست.به طور مداوم بین 0 و 100 نوسان دارم.

            دیدگاه


              #7
              پاسخ : نمایش اطلاعات دریافتی(از پورت سریال) روی گراف XY

              من یه نمونه برنامه پیدا کردم که عالی جواب میده ولی طرز کارشو نمیآ‌دونم:
              http://tl081.persiangig.com/eca/A/la..._V1.1_beta.rar

              دیدگاه


                #8
                پاسخ : نمایش اطلاعات دریافتی(از پورت سریال) روی گراف XY

                میشه فایل پروتئوس همراه با فایل HEX رو بزارید ؟
                Virtual Serial Port Driver رو از کجا دانلود کنم و چطوری استفاده کنم ؟

                این فایلی که قرار دادید هم همونه فقط اینجا گفته هر دفعه بیا 5 بایت رو بخون و این رو بخاطر برنامه میکرو نوشته که احتمالا اونجا هر دفعه 5 بایت رو میفرستاده و اول هر پاکت که میفرستاده یه کاراکتر خاص گذاشته که با دستور Match True/False String اونو تشخیص داده

                دیدگاه


                  #9
                  پاسخ : نمایش اطلاعات دریافتی(از پورت سریال) روی گراف XY

                  خدمت شما:
                  http://tl081.persiangig.com/eca/A/labview/ADC.rar

                  http://www.eltima.com/download/vspd.exe
                  فقط باودریت Labview رو 38400 بذارید.

                  روال کار میکرو به این صورته که 3 بار از سیگنال نمونه برداری میآ‌کنه و میانگین میآ‌گیره . برای تشخیص خطا کاراکتر Q رو اول میآ‌فرسته و بلافاصله هم عدد به دست اومده از ADC.
                  برای ثابت موندن تعداد بایت ها هم عدد رو با 1000 جمع میآ‌کنه(در این حالت کمترین و بیشترین مقدار 1000 و 2024 خواهد بود،)

                  دیدگاه


                    #10
                    پاسخ : نمایش اطلاعات دریافتی(از پورت سریال) روی گراف XY

                    خب من نتونستم با این اینترنت دانلود کنم !
                    مهم نیست. الان مشکلتون دقیقا چیه ؟
                    اون دستور Bytes at port خیلی کاربرد داره منتها اینجا احتمالا بخاطر اینکه پورت مجازی دارید استفاده میکنید جواب نمیده و باید همون مقدار Byte Count ورودی دستور VISA Read رو یه مقدار ثابت مثل 5 گذاشت
                    کلا سخت افزاری می بستید خیلی بهتر بود

                    دیدگاه

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