اطلاعیه

Collapse
No announcement yet.

دریافت رشته و جدا سازی آن (ارتباط سریال)

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

    دریافت رشته و جدا سازی آن (ارتباط سریال)

    سلام من یه رشته از پورت سریال دریافت می کنم و می خوام که بتونم این رشته ها رو از هم جدا کنم.مثلا من یه رشته به صورت y20q54q3 دریافت میکنم و می خوام هر کدام رو جدا کنم و هر کدام رو در یه خروجی نشان بدم.باید چه کاری انجام بدم

    #2
    پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)

    سلام
    فرض می کنیم ورودی شما رشته زیر باشه
    X=10Y=20Z=8
    اول از قسمت
    programming/string/
    گزینه match pattern رو انتخاب کن
    خروجی ویزا (read bufer) رو به ورودی match pattern وصل کن یعنی یه string
    قسمت regular experission مربوط به جدا سازی میشه مثلا برای مثال ما میشه =X و شما تو خروجی یعنی after substring عبارت زیر رو میبینی
    10y=20z=8
    بعد از قسمت
    programming/string/
    string subset رو انتخاب میکنم
    after substring رو به string وصل می کنیم
    تعداد رشته ای که می خوایم بعد از X= رو جدا کنیم رو در قسمت lenght rest مشخص می کنیم که برای مثال ما که عدد 10 هست میشه 2 (البته این نکته رو هم
    یاد اوری کنم که باید دقت کنیم که جوری lenght rest رو انتخاب کنیم که اگه عدد 3 رقمی شد یا کمتر یا بیشتر مشکلی پیش نیاد )
    و اخر سر خروجی ما میشه 10 که این 10 که ما داریم رشته ست نه عدد برای همین از
    programming/string/string/number conversion
    Decimal string to number رو انتخاب می کنیم و بقیه ماجرا...
    ببخشید یکم توضیحاتم زیاد شد جوری گفتم که کسی که زیاد بلد نیست مثل خودم کارش راه بیوفته
    بازم اگه قسمتی مبهم بود بگو بیشتر راهنمائی کنم...

    دیدگاه


      #3
      پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)

      دستت درد نکه راهنمایی خوبی کردی .حال اگه دیتای من به صورت زیر باشه
      20q-3q1.25qy

      چه راهی رو پیشنهاد می دی
      q جدا کننده دیتا است
      y پایان یک ارسال
      و مقادیر ارسالی هم می تونه صحیح اعشاری و ... باشه

      اما q y ثابته

      باتشکر

      دیدگاه


        #4
        پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)

        فرقی نمی کنه به جای متغیر های من متغیرهای خودت رو قرار بده
        اگه نتونستی
        یکم اطلاعات بیشتر بده
        این اطلاعات مربوط به چی مشه ؟ q رو خودت انتخاب می کنی ؟ رنج تغییرات چقدر میشه ؟ اگه با میکرو می نویسی با چه کامپایلری ؟
        درضمن اون y اخر چه دلیلی داره نوشته بشه اصلا ننویس
        هرچی اطلاعات بیشتر بدی بهتر میشه راهنمائی کرد

        دیدگاه


          #5
          پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)

          این دیتا از یه دستگاه تست میاد و من سورس برنامه رو ندارم
          دستگاه هر تستی که می کنه یه رشته به پورت سریال می فرسته که هر ارسال دارای سه مقدار می باشه که رقم اول و دوم مقادیر تست شده می باشد و رقم سوم شماره سریال تست انجام گرفته است . و ما بین هر کدام یک حرف q و در آخر هر ارسال یه y ارسال میشه به معنی انتهای ارسال هر تست مثلا:
          1q45q100qy
          به معنی این است که در تست 100 مقادیر 1 و 45 بدست آمده
          حال من می خوام این سه مقدار رو از رشته جدا کنم
          امیدوارم خوب توضیح داده باشم

          دیدگاه


            #6
            پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)

            سلام
            با چه کامپایلری برنامه مینویسی؟

            دیدگاه


              #7
              پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)

              نوشته اصلی توسط sadegh-emrah
              این دیتا از یه دستگاه تست میاد و من سورس برنامه رو ندارم
              دستگاه هر تستی که می کنه یه رشته به پورت سریال می فرسته که هر ارسال دارای سه مقدار می باشه که رقم اول و دوم مقادیر تست شده می باشد و رقم سوم شماره سریال تست انجام گرفته است . و ما بین هر کدام یک حرف q و در آخر هر ارسال یه y ارسال میشه به معنی انتهای ارسال هر تست مثلا:
              1q45q100qy
              به معنی این است که در تست 100 مقادیر 1 و 45 بدست آمده
              حال من می خوام این سه مقدار رو از رشته جدا کنم
              امیدوارم خوب توضیح داده باشم
              خوب الان متوجه شدم چی به چیه ولی باز یه موضوع اصلی رو فراموش کردی
              بازه ارقامت چقدره ؟ این خیلی مهمه تو نوشتن کد
              مثلا ارقام بین -90 تا 90
              0 تا 10 یا 0تا 10000

              دیدگاه


                #8
                پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)

                بازه من در حد 10000 می باشد.
                داداش من مشکل جدا کردن رو با استفاده از Scan From String Function حل کردم
                الان یه مشکل دارم تو دریافت سریال تو بافر من یه بار این دیتا به صورت
                5q9q100qy
                اما دفعه بعد می بینم دیتام شیفت پیدا کرده مثلا شده
                qy5q9q100
                مشکل از کجاست

                ممنونم

                دیدگاه


                  #9
                  پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)

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

                  دیدگاه


                    #10
                    پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)

                    من دیتا رو از پروتئوس به لب ویو ارسال می کنم تا برنامم رو تست کنم

                    دیدگاه


                      #11
                      پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)

                      دستگاه شما مشکلی نداره.. دستگاه ممکنه خروجی های مختلف با تعداد کاراکتر های مختلف ارسال کنه. برای حل این مشکل قبل ار خوندن دیتا از یک تابع byte at port استفاده کن. و خروجیش رو بده به رودی byte data تابع read . اینطوری مطمئن میشی که هیچ وقت دیتایی رو از دست نمیدی.. در ضمن یک مسدله مهم دیگه هست که مربوط به سرعت دریافت اطلاعات هست. در حلقه while از یه مقداتر کوچک تأخیر حتما استفاده کن.. و نگران از دست دادن اطلاعات هم نباش. لب ویو به طور اتوماتیک از یه بافر تو برنامش استفاده میکنه و تا چند مرحله قبل رو تو بافر ذخیره میکنه ...

                      دیدگاه


                        #12
                        پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)

                        من از تابع byte at port استفاده کردم ولی تو خروجی اصلا دیتایی نمی ده . الان مشکل اینه که من اگه نخوام از دستور byte at port استفاده کنم برای خوندم یه رشته که طول مختلف داره چه باید کرد.
                        من الان از دستور Scan From String Function برای جدا کردن مقادیر از ما بین رشته استفاده می کنم ولی زمانی که مقادیر ما بین مثلا از یک رقمی به ذو رقمی تغییر کنه خروجی دارای دیتای نادرست میشه.

                        اصلا کسی برنامه ای جامع برای ارتباط سریال داره؟

                        دیدگاه


                          #13
                          پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)

                          سلام، حتما این صفحه رو کامل بخون 100% مشکلت حل میشه.


                          http://www.eca.ir/forum2/index.php?topic=80273.0

                          دیدگاه


                            #14
                            پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)

                            سلام دوستان
                            من حرف آقا میلاد رو تایید میکنم
                            من همین مشکلو داشتم به کمک آقا میلاد مشکلم صد در صد حل شد
                            با تشکر از میلاد عزیز

                            دیدگاه

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