اطلاعیه

Collapse
No announcement yet.

آموزش کامل نحوه راه اندازی پروتکل سریال

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    آموزش کامل نحوه راه اندازی پروتکل سریال

    سلام به همگی
    من تجربه کاریم در مورد لبویو اینقدری نیست، اگر این آموزش مشکلی داشت، دوستان حرفه ای بگند تا تصحیح کنیم
    به 2 علت این تاپیک رو ایجاد کردم!
    1- یک بار برای همیشه این سریال رو با تمامی قواعد آموزش بدیم ( با کمک دوستان) تا هرکسی مشکلی داشت مستقیم بیاد اینجا
    2- کمتر شدن PM هایی که هر روز در مورد این سریال لبویو به بقیه ارسال میشه :biggrin:

    مقاله و مطلب برای اینکه سردربیارید پروتکل سریال چجور کار می کنه توی اینترنت زیاده! من به علت کمبود اطلاعات خودم :redface: و خلاصه شدن موضوع، درست میرم سر اصل مطلب. هرکس علاقه داشت سردربیاره سریال کلاً چجور کار می کنه، یه گوگل بزنه کلی مطلب پیدا می کنه!

    اول از همه و قبل اینکه کلا ادامه مطلب رو بخونید، باید visa رو نصب داشته باشید. اگر ندارید، از این لینک دانلود کنید http://www.ni.com/visa

    همه می دونید که سریال یه پورت ارسال و یک پورت دریافت داره (rx و tx )
    توی تمامی برنامه ها، کلاً برنامه سریال 2 قسمت میشه، یکی واسه دریافتش و یکی واسه ارسالش
    لبویو هم مثل بقیه یک سری توابع واسه دریافت داره و یک سری توابع برای ارسال، که دونه دونه توضیح میدیم
    توی قسمت بلوک دیاگرام، سریال کلــــــــی تابع داره که انشالله همشونو یاد میگیرید و به ما هم یاد میدید، ولی فعلا ما با چند جزء اصلی اون کار داریم
    به آدرس instrument i/o و بعد serial برید

    طبق عکس ، چند عدد تابع میبینید، که توابع اصلی هستند که ما قراره باهاشون کار کنید
    من یه توضیحی درباره توابع اصلی بدم
    configure port : واسه پیکربندی پورت سریال
    write : ارسال اطلاعات ( بصورت رشته)
    read : دریافت اطلاعات ( بصورت رشته)
    close : بستن برنامه
    byte at port : مشخص کردن تعداد کاراکتر دریافتی

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

    تابع configure کلی سیم از اینور اونورش زده بیرون که می تونید با یک نگاه سرسری به help و خوندن توضیحات از اونا سردربیارید، توی عکس فقط تنظیمات اصلی پورت سریال نوشته شدند.
    توی این برنامه ساده ما پورت سریال رو باز می کنیم و میبندیم
    الان یک تابع نوشتن بهش اضافه می کنیم

    الان هرچی توی پالت write بنویسید ارسال میشه
    حالا یک تابع خوندن میزاریم

    برای تابع خوندن باید شما مشخص کنید که بافرتون چند کاراکتره! تعداد کارکتر دریافتی رو مشخص می کنید و هرتعداد که بنوسید همونقدر دریافت می کنید و توی پالت read مینویسه
    اگر تعداد کاراکتر رو مشخص بکنید، همون اندازه میگیره و نشون میده ، ولی اگر کاراکتر ورودیتون متغیر باشه باید یک گره اطلاعاتی بزارید تا قبل از تابع خوندن تعداد کاراکتر مشخص بشه و همیشه اندازه همون نوشته دریافتیتون عدد بافر مشخص بشه و هر رشته ای رو کامل دریافت بکنید


    این کل اصول دریافت و ارسال اطلاعات بود و این برنامه آخر که یک رشته رو ارسال و یک رشته رو دریافت می کنه

    چند نکته خیلی مهم هست که اگر درست انجام ندید دچار مشکل میشید!
    اول از همه اینکه، طبق ترتیب دریافت و ارسال اطلاعاتتون باید ترتیب این توابع رو بچینید، مثلاً این برنامه آخری که من نوشتم، اول یک رشته ارسال میشه و جواب اون توسط دستگاه گیرنده ارسال و باز توسط لبویو گرفته و چاپ میشه
    بیشترین مشکل توی قسمت timeout وجود داره! این timeout یا همون سرریز یه چیز تو مایه های watch dog میکرو عمل می کنه و بعد از ارسال یا دریافت هر دستور یک تایمری شروع به کار می کنه و اگر تا پایان اون دستوری اجرا نشه یک خطا برای توقف برنامه میده. خیلی ها چون برای اولین بار با هیپرترمینال کار می کنند، زمان ارسال دستورشون پایین میشه و همش این خطا بهشون نشون داده میشه. شما برای شوع کار می تونید زمان timeout رو زیاد کنید تا دچار مشکل نشید.
    تا اینجای کار ما یک برنامه ساده ساده سریال نوشتیم، ولی برای اینکه بخواین با میکرو یا دستگاه های دیگه کار بکنید، باید یک سری کارهای دیگه انجام بدید! اینا مشکلاتی هستند که من شدید درگیرشون بودم و بعد فهمیدم که مشکل کارم چیه و اینجا میگم تا دیگه شما دچار مشکل نشید
    اول از همه اینکه بهتره توسط یک secuence به برنامتون ترتیب بدید تا این بده بستون اطلاعاتیتون یه سروسامانی بگیره و دریافت و ارسال اطلاعاتتون با ترتیب درست اجرا بشه

    ولی باز هم برنامه درست کار نمی کنه بعضی وقت ها!! گیر اصلی اینه که سرعت کامپیوتر معمولاً خیلی بیشتر از بقیه سیستم ها هستش و وقتی شما یک رشته رو ارسال می کنید، تا اون دستگاه رشته رو بگیره و به خودش بیاد که چی به چیه، توی لبویو میره توی قسمت بعدی و اینجوری همه چی قاطی میشه و بده بستون اطلاعات درست از آب در نمیاد. تنها راه چاره اینه که یک تأخیر بعد از ارسال رشته بزارید.

    همین تأخیر چند میلی ثانیه ای کلاً برنامه رو متحول می کنه !!! این تأخیر رو می تونید تست بکنید با سیستمتون و کمترین اندازه رو خودتون با سعی و خطا دربیارید. قسمت دریافت چون از طرف کامپیوتر هستش معمولاً احتیاجی به تأخیر نداره
    الان شما می تونید طی چند مرحله، طبق برنامه ای که نوشتید، به تعداد مورد نیاز از این توابع خوندن و نوشتن استفاده بکنید و دقت داشته باشید که اینا باید هماهنگ باشه و اگر جایی باید تابع نوشتن بزارید تابع خوندن بزارید برنامه قاطی می کنه و میره روی خطا
    یه نکته ظریفی هم هست که من بعد از مدت ها!!!!!!! تونستم بفهمم! یعنی پدرم در اومد تا بفهمم! بعضی وقت ها، رشته ای که دریافت می کنید، داخلش enter خورده و از چند سطر تشکیل شده! مثلاً جواب های ماژول sim900
    اگر دستور ATI رو به SIM900 بفرستید، جوابی که ارسال می کنه اینجوریه
    ATI
    SIM900 REV11

    OK
    یعنی اول همون دستوری که ارسال کردید رو میفرسته، سطر دوم SIM900 REV11 و سطر سوم خالی و سطر چهارم هم OK
    ولی چیزی که شما دریافت می کنید فقط ATI !!!!!!!
    مشکل چیه ؟
    اگر دقت کرده باشید شما فقط سطر اول رو دریافت کردید! یعنی بعد از خوردن ENTER دیگه اطلاعات از دست رفته !! سطر اول هر تعداد کاراکتری که می خواد باشه، ولی شما فقط تا جایی که ENTER خورده رو دارید.
    بعدها فهمیدم که هر تابع READ واسه خوندن یک سطره !!! یعنی اگر دستورتون 4 سطره، شما باید 4 عدد تابع READ رو پشت سر هم بزارید و بعد کل اونارو با توابع رشته به هم متصل کنید و توی خروجی نشون بدید. اینجوری تمامی سطرها رو می تونید دریافت کنید.

    من الان برفرض اطلاعات ورودیم توی 2 سطر نوشته شده، در نتیجه 2 بار پورت رو می خونم و در آخر اونارو به هم متصل می کنم و در خروجی نشون میدم
    این اصولی که گفتم تمامی اطلاعات اولیه و تجربیاتی هستند که خودم در این زمینه باهاشون مواجه بودم، قسمت VISA توابع خیلی زیادی داره و می تونید با کمک help از کارشون سردربیارید
    مثلاً بعضی مواقع لازم میشه کل اطلاعات موجود رو پاک کنیم! با یک تابع clear میشه این کار رو انجام داد !

    توی این برنامه الان هرچی توی بافر باشه بعد از این تابع پاک میشه!

    امیدوارم که این آموزش بتونه کمکتون بکنه و کارتون راه بیفته. اگر موردی داشت بگین، چون من هم مثل شما مبتدی هستم و بیشتر تفریحی با لبویو کار می کنم! اگر هم روشهای دیگه ای کشف کردین یا اینکه مشکلاتی مواجه شدین و حلش کردین اینجا بگین تا بتونه به بقیه هم کمک بکنه
    همیشه گفتم، باز هم میگم، لبویو هیچ محدودیتی نداره و اگر چیزی درست کار نمی کنه همیشه از طرف ما هستش. اگر برنامه درست نوشته بشه بدون هیچ مشکلی کار می کنه
    موفق باشید

    #2
    پاسخ : آموزش کامل نحوه راه اندازی پروتکل سریال

    سلام
    ممنون از اطلاعات نابتون
    در مورد ذخیره اطلاعات دریافتی از سریال در اکسل واکسس مثل دریافت دما که با ساعت دریافتش به عنوان ارشیو ذخیره بشه هم مطلبی دارید؟
    و اینکه همچین مطالبی در مورد پرتکل tcp/ip هم دارید؟ :bye
    mrg

    دیدگاه


      #3
      پاسخ : آموزش کامل نحوه راه اندازی پروتکل سریال

      دریافت و ذخیره توی فایل کلاً یه مبحث دیگست
      tcp ip هم اصول کار مثل همینه، یعنی تقریباً تمامی پروتکل ها اصول همینه، یه تابع کنفیگک دارند و آخرش هم باید ببندی
      فقط هرچه پیچیده تر، اون توابع داخلیش بیشتر میشه
      متأسفانه تا الان کار نکردم و امیدوارم بچه های که حرفه ای کار کردن باهاش بتونند یک آموزشی بزارندبراش

      دیدگاه


        #4
        پاسخ : آموزش کامل نحوه راه اندازی پروتکل سریال

        به نظر من بهترین کار برای خوندن از سریال استفاده از دستور =< هستش اینطوری هر وقت دیتایی بیاد اطلاعات خونده میشه فقط کافیست بعد از دستور bytes at port از دستور =< استفاده بشه
        بعدا دلیلی نداره که بعد از هر بار خوندن ونوشتن پورت رو ببندید .من این کارو اصلا گذاشتم هر وقت طرف برنامه رو بست اتفاق بیوفته تا حالا هم مشکلی پشیش نیومده

        دیدگاه


          #5
          پاسخ : آموزش کامل نحوه راه اندازی پروتکل سریال

          با سلام تشکر از آقای اکرمی عزیز .
          من یه برد توسعه ورودی و خروجی گرفتم طبق دستور العمل شما مدار رو کشیدم ولی نمی تونم به رله های برد دستور خاموش روشن رو بدم لطفا" راهنمائیم کنید ممنون می شم. :angry:

          دیدگاه


            #6
            پاسخ : آموزش کامل نحوه راه اندازی پروتکل سریال

            دستوراتتون واسه خاموش روشن شدن چیه ؟؟

            دیدگاه


              #7
              پاسخ : آموزش کامل نحوه راه اندازی پروتکل سریال

              طبق آخرین دستوراتی که شما به نمایش گذاشتید . راستش من دیشب تونستم با عدد دادن به هر کدوم از رله ها از 1 تا 6 دستور بدم ولی رله ها بر حسب تاخیری که دادین 20 ms روشن و خاموش می شوند . لطفا" میشه راهنمایی کنید که اگر من بخواهم برای هر رله توی labview یک کلید و یه نمایشگر led ببینم به چه صورتی می بایستی دستورات رو بدم . و اینکه رله دائم روشن باقی بماند تا دستوری بگیرد .

              دیدگاه


                #8
                پاسخ : آموزش کامل نحوه راه اندازی پروتکل سریال

                بهتر بگم برنامه ای می خوام که به تعداد رله ها شش کلید و شش LED جهت نمایش در لب ویو داشته باشم و هر وقت هر کدام از کلیدها رو قطع و وصل کردم رله مورد نظر قطع وصل شود . ممنون میشوم راهنمایی کنید . :smile:

                دیدگاه


                  #9
                  پاسخ : آموزش کامل نحوه راه اندازی پروتکل سریال

                  نوشته اصلی توسط فرشاد اکرمی

                  اول از همه و قبل اینکه کلا ادامه مطلب رو بخونید، باید visa رو نصب داشته باشید. اگر ندارید، از این لینک دانلود کنید http://www.ni.com/visa
                  سلام
                  من تو سایت که رفتم حجم visa رو 700 مگابایت زده .. این همونه یا من اشتباه گرفتم ؟؟ گفتم یک وقت بیخودی دانلودش نکنم !!
                  با تشکر
                  دست هایی که کمک میکنند از دست هایی که دعا میکنند مقدس ترند....کوروش کبیر

                  دیدگاه


                    #10
                    پاسخ : آموزش کامل نحوه راه اندازی پروتکل سریال

                    نوشته اصلی توسط amintlk
                    سلام
                    من تو سایت که رفتم حجم visa رو 700 مگابایت زده .. این همونه یا من اشتباه گرفتم ؟؟ گفتم یک وقت بیخودی دانلودش نکنم !!
                    با تشکر
                    درسته

                    دیدگاه


                      #11
                      پاسخ : آموزش کامل نحوه راه اندازی پروتکل سریال

                      دستت درد نکنه مهندس دمت گرم.
                      چطوره اموزش رو با یه پروژه پیش ببریم ؟
                      البته می دونم سرتون شلوغه در صورتی که وقت داشتین چیز بدی نیست.
                      چرا ناراحتی پاتریک!
                      + امروز ی بچه دیدم سرچهارراه گل میفروخت
                      - از دیدنش ناراحت شدی؟
                      + نه
                      پس چی ناراحتت کرده
                      + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                      ------------------------------------------------------------------------------------------------------
                      تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                      ------------------------------------------------------------------------------------------------------
                      محصولات

                      دیدگاه


                        #12
                        پاسخ : آموزش کامل نحوه راه اندازی پروتکل سریال

                        سلام.. بعد از مدتها تأخیر...

                        چند نکته در خصوص ارتباط سریال :
                        1 - پیکربندی پورت سریال و بستن اون تنها یکبار صورت بگیره...
                        2 - نیاز نیست وقتی یک رشته ارسال میشه و قراره که بلافاصله یه رشته دریافت بشه از توابع تأخیر استفاده بشه.. دلیلشم اینه که برنامه شما فقط شامل لحظه دریافت و ارسال نیست و قبل و بعدش در دستگاه خارجی و کامپیوتر اتفاقاتی میوفته که زمان بندی رو بهم میریزه.. بهترین کار استفاده از یک کاراکتر کنترلی از دستگاه خارجی هست.. به این صورت که بعد از ارسال رشته از لب ویو به دستگاه خارجی، برنامه خواندن رشته کنترلی فعال میشه که در یک حلقه بی نهایت قرار داره و شرط خروجش هم دریافت کاراکتر کنترلی هست که از دستگاه خارجی ارسال میشه و تا دریافت نشه حلقه ادامه داره. به محض دریافت کاراکتر کنترلی، برنامه اصلی خوندن رشته فعال میشه که البته همزمان رشته هم ارسال میشه..
                        3 - هر تابع read تنها برای یک سطز نیست. تابع read هر رشته ای ارسال بشه رو میخونه. مشکل از دستگاه خارجی هست همیشه.. یک رشته میتونه شامل enter , space , . .. باشه..

                        البته ما مخلص آقا فرشاد هم هستیم....

                        دیدگاه


                          #13
                          پاسخ : آموزش کامل نحوه راه اندازی پروتکل سریال

                          نوشته اصلی توسط حمید رضا حسین وردی
                          2 - نیاز نیست وقتی یک رشته ارسال میشه و قراره که بلافاصله یه رشته دریافت بشه از توابع تأخیر استفاده بشه.. دلیلشم اینه که برنامه شما فقط شامل لحظه دریافت و ارسال نیست و قبل و بعدش در دستگاه خارجی و کامپیوتر اتفاقاتی میوفته که زمان بندی رو بهم میریزه.. بهترین کار استفاده از یک کاراکتر کنترلی از دستگاه خارجی هست.. به این صورت که بعد از ارسال رشته از لب ویو به دستگاه خارجی، برنامه خواندن رشته کنترلی فعال میشه که در یک حلقه بی نهایت قرار داره و شرط خروجش هم دریافت کاراکتر کنترلی هست که از دستگاه خارجی ارسال میشه و تا دریافت نشه حلقه ادامه داره. به محض دریافت کاراکتر کنترلی، برنامه اصلی خوندن رشته فعال میشه که البته همزمان رشته هم ارسال میشه..
                          برای sim900 که دستگاه دست ما نیست و نمی تونیم توی دستوراتش تغییری بدیم مجبوریم از این تأخیر استفاده بکنیم !
                          اگه بناشه قاطی می کنه!
                          نوشته اصلی توسط حمید رضا حسین وردی
                          3 - هر تابع read تنها برای یک سطز نیست. تابع read هر رشته ای ارسال بشه رو میخونه. مشکل از دستگاه خارجی هست همیشه.. یک رشته میتونه شامل enter , space , . .. باشه..
                          امتحان کردی ؟؟
                          هرچی enter می خوره رو دیگه نشون نمیده ! من یعنی پیر شدم تا بفهمم قضیه چیه !

                          نوشته اصلی توسط حمید رضا حسین وردی
                          سلام.. بعد از مدتها تأخیر...
                          البته ما مخلص آقا فرشاد هم هستیم....
                          قربان شما
                          خیلی خیلی بعد از مدتها !!! کلاً نیستی

                          دیدگاه


                            #14
                            پاسخ : آموزش کامل نحوه راه اندازی پروتکل سریال

                            سلام
                            من یه برنامه ساده رایت نوشتم که از کامپیوتر روی ال سی دی میکرو میفرسته.مشکلم اینجاست به محض اینکه توی باکس رایت چیزی نوشته میشه به سرعت روی ال سی دی تکرار میشه .این درحالیه که توی ترمینال کدویژن این طور نیست یعنی یک حرف نوشته میشه بعد منتظر کلمه بعدی میمونه.
                            با تشکر از دوستانی که راهنمایی میکنن
                            چه يافت آنــکه تــو را گم کرد وچه گم کرد آنـکه تــو را يافت.

                            دیدگاه


                              #15
                              پاسخ : آموزش کامل نحوه راه اندازی پروتکل سریال

                              بیا بالا
                              فایل رو پ کردم-لب 2013-بود ریت 4800-بیت ریت 8-پریتی 0-فایل سی میکرو هم هستتش
                              با تشکر فراوان از دوستان محترم

                              http://uploadkon.ir/fl/d/OTU0
                              چه يافت آنــکه تــو را گم کرد وچه گم کرد آنـکه تــو را يافت.

                              دیدگاه

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