اطلاعیه

Collapse
No announcement yet.

فشردن یک کلید و ارسال یک حرف

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

    #16
    پاسخ : فشردن یک کلید و ارسال یک حرف

    سلام فرشاد جان. من برنامه شما رو دست نزدم فقط قسمت write رو اصلاح کردم. چون تو اول برنامه یه شرط گذاشتی که اگه یه کاراکتر از بیرون ارسال بشه برنامه وارد ساختار case بشه این اتفاق میفته. :nice:

    دیدگاه


      #17
      پاسخ : فشردن یک کلید و ارسال یک حرف

      پس ایراد از برنامه منه !
      من می خوام با پورت سریال ، پورتهای یک میکرو روکنترل کنم.
      یعنی 8 تا کلید داشته باشم که هر کدوم یک شد ، میکرو یک پورتش یک بشه، و 8 تا هم ledکه هر کدوم از پایه های پورت ورودی میکرو ( که قبلاً انتخاب شده) یک شد، اینجا اون led روشن بشه.
      می خوام این برنامه رو به شکل یک بلوک (تابع) دربیارم و توی برنامه های دیگه از اون استفاده بکنم.
      یه چیزی مثل همون کارتهای daq
      چجور می تونم این کار رو بکنم ؟ یعنی روش صحیح انجام کار با حداقل زمان پاسخ برنامه، چجوری باید باشه ؟
      ممنون

      دیدگاه


        #18
        پاسخ : فشردن یک کلید و ارسال یک حرف

        سلام. کاری نداره پسر خوب . یه ساختار ترتیبی از نوع flat تو برنامه قرار بده. که شامل 3 فریم باشه. تو فریم اول داده رو read کن . تو فریم وسط یه تابع تأخیر قرار بده با زمان تأخیر مشخص با توجه به برنامه میکرو. و در فریم آخر هم عملیات write رو انجام بده. و همه اینارو بزار تو یه حلقه while . برنامه رو که اجرا کنی ، پشت سر هم عملیات خواندن و نوشتن انجا میشه. تآخیر هم واسه اینه که همزمانی به وجود نیاد. که اونم انقدر سریع اتفاق مییفته که ما تأخیر رو حس نمیکنیم. برای قسمت write از همون برنامه من استفاده کن و برای قسمت read هم از تیکه برنامه خودت استفاده کن. بعد یه تابع بساز که شامل ورودی های مورد نظر شامل تعیین نرخ baud ، اسم پورت سریال ، دکمه های ورودی باشه. و خروجیش هم چراغ های نشان دهنده وضعیت پورت باشه. حتی میتونی برای میکرو های مختلف که تعداد پورت هاشون فرق میکنه توابع جدا درست کنی و تمامی پورت ها رو در اختیار بگیری. :nice:

        دیدگاه


          #19
          پاسخ : فشردن یک کلید و ارسال یک حرف

          نوشته اصلی توسط حمید رضا حسین وردی
          تو فریم وسط یه تابع تأخیر قرار بده با زمان تأخیر مشخص با توجه به برنامه میکرو.
          یه فریم خالی همب زارم که 1 میلی ثانیه وقت بگیره کافیه ؟
          چجور از رو میکرو باید حساب کنیم زمان این تأخی رو ؟

          دیدگاه


            #20
            پاسخ : فشردن یک کلید و ارسال یک حرف

            سلام فرشاد جان. صبح بخیر.
            معمولا برنامه میکرو به این صورت ترتیبی نوشته میشه. مثلا اول میخونی ، بعد مینویسی . تأخیر فقط واسه اینه که همزمانی رخ نده. معمولا بر حسب سرعت انتقال اطلاعات یا همان baud میتونی یه تأخیر بزاری. 100 میلی ثانیه کافیه.

            دیدگاه


              #21
              پاسخ : فشردن یک کلید و ارسال یک حرف

              البته بهترین راه اینه که یه حلقه while بذاری. توش دو تا حلقه case قرار بدی. یکی واسه write و یکی واسه read. به هرکدوم هم یه دکمه کنترلی سیم کشی کنی. اگه مثال خود لب ویو رو ببینی متوجه حرفم میشی. یه حالت ترتیبی بین خوندن و نوشتن به وجود میاد. labview\example\instr\smbserial\advanced write\read

              دیدگاه


                #22
                پاسخ : فشردن یک کلید و ارسال یک حرف

                الان من یک سری تغییرات دادم تو همون فایل قبلی
                نمی دونم چرا کار نمی کنه !
                اول از همه اون برنامه شما که نوشتید تا بوسیله 6 تا کلید ، با کلیک روی هر کدوم یک حرف ارسال بشه کار نمی کنه ! یعنی عوض حرف یک جمله ijklq ارسال می کنه !
                بعد از اون، من یه case درست کردم و از حالت read به write تغییر حالت میده، وقتی دستی این تغییر رو میدم ، هر 2 طرف کار می کنند. یعنی وقتی تو حالت read باشه از کیبورد هر دکمه ای فشار بدم اونجا led اون روشن میشه و ایضاً تو حالت write باز کار می کنه و حرف ارسال می کنه.
                ولی وقتی اتوماتیک می کنم، هیچ چیزی از کیبورد نمیشه ارسال کرد و فقط قسمت write کار می کنه و حرف ارسال می کنه به هیپر ترمینال
                برنامه رو هم گزاشتم! یه نگاهی بندازین بگین مشکل کار من از جاست https://rapidshare.com/files/871783575/serial__2.vi
                ممنون

                دیدگاه


                  #23
                  پاسخ : فشردن یک کلید و ارسال یک حرف

                  عزیزم برنامه درست کار میکنه باید برنامه میکرو رو تغییر بدی. برنامه هر لحظه که تو حالت write قرار میگیره ، به صورت خیلی سریع وضعیت کلید ها رو اسکن و به میکرو میفرسته. توام باید به همون سرعتی که لب ویو میفرسته عمل مقایسه رو انجام بدی و وضعیت پورت رو اصلاح کنی.

                  دیدگاه


                    #24
                    پاسخ : فشردن یک کلید و ارسال یک حرف

                    من رو میکرو تست نکردم ! با هیپر ترمینال کار کردم
                    یعنی با هیپرترمینال جواب درست نمیشه گرفت ؟
                    شما این آخرین برنامه که گذاشتم رو نگاه کردین ؟
                    میرم سخت افزار رو هم ببندم ، جواب رو میگم

                    دیدگاه


                      #25
                      پاسخ : فشردن یک کلید و ارسال یک حرف

                      برنامه مشکلی نداره. فقط تآخیرات زیادن. در حد 100 میلی ثانیه کافیه. بعدشم هایپر ترمینال کاراکترهارو پشت سرهم دریافت میکنه. تو میکرو کاراکترها که پشت سر هم میان سریع مقایسه میشن و هر کاراکتر وضعیت یه پورت رو تغییر میده.

                      دیدگاه


                        #26
                        پاسخ : فشردن یک کلید و ارسال یک حرف

                        سلام فرشاد جان. اینم برنامه اصلی ارتباط سریال...
                        فایل های پیوست شده

                        دیدگاه


                          #27
                          پاسخ : فشردن یک کلید و ارسال یک حرف

                          بعد از چند ماهی باز تونستیم یه سری بزنیم اینجا :d
                          حمیدجان دستت درد نکنه، فقط این وسط یه مشکلی هست، چرا اینقدر سرعت انتقال اطلاعات کم هستش ؟
                          مثلا با زدن یک دکمه باید حرف a ارسال بشه و وقتی خاموشه حرف g
                          با هیپرترمینال که تست می کنم برنامه سریع جواب میده ولی با همین برنامه آخری شما با مکس زیاد جواب میده !

                          دیدگاه

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