سلام من یه رشته از پورت سریال دریافت می کنم و می خوام که بتونم این رشته ها رو از هم جدا کنم.مثلا من یه رشته به صورت y20q54q3 دریافت میکنم و می خوام هر کدام رو جدا کنم و هر کدام رو در یه خروجی نشان بدم.باید چه کاری انجام بدم
اطلاعیه
Collapse
No announcement yet.
دریافت رشته و جدا سازی آن (ارتباط سریال)
Collapse
X
-
پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)
سلام
فرض می کنیم ورودی شما رشته زیر باشه
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 رو انتخاب می کنیم و بقیه ماجرا...
ببخشید یکم توضیحاتم زیاد شد جوری گفتم که کسی که زیاد بلد نیست مثل خودم کارش راه بیوفته
بازم اگه قسمتی مبهم بود بگو بیشتر راهنمائی کنم...
-
پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)
فرقی نمی کنه به جای متغیر های من متغیرهای خودت رو قرار بده
اگه نتونستی
یکم اطلاعات بیشتر بده
این اطلاعات مربوط به چی مشه ؟ q رو خودت انتخاب می کنی ؟ رنج تغییرات چقدر میشه ؟ اگه با میکرو می نویسی با چه کامپایلری ؟
درضمن اون y اخر چه دلیلی داره نوشته بشه اصلا ننویس
هرچی اطلاعات بیشتر بدی بهتر میشه راهنمائی کرد
دیدگاه
-
پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)
این دیتا از یه دستگاه تست میاد و من سورس برنامه رو ندارم
دستگاه هر تستی که می کنه یه رشته به پورت سریال می فرسته که هر ارسال دارای سه مقدار می باشه که رقم اول و دوم مقادیر تست شده می باشد و رقم سوم شماره سریال تست انجام گرفته است . و ما بین هر کدام یک حرف q و در آخر هر ارسال یه y ارسال میشه به معنی انتهای ارسال هر تست مثلا:
1q45q100qy
به معنی این است که در تست 100 مقادیر 1 و 45 بدست آمده
حال من می خوام این سه مقدار رو از رشته جدا کنم
امیدوارم خوب توضیح داده باشم
دیدگاه
-
پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)
نوشته اصلی توسط sadegh-emrahاین دیتا از یه دستگاه تست میاد و من سورس برنامه رو ندارم
دستگاه هر تستی که می کنه یه رشته به پورت سریال می فرسته که هر ارسال دارای سه مقدار می باشه که رقم اول و دوم مقادیر تست شده می باشد و رقم سوم شماره سریال تست انجام گرفته است . و ما بین هر کدام یک حرف q و در آخر هر ارسال یه y ارسال میشه به معنی انتهای ارسال هر تست مثلا:
1q45q100qy
به معنی این است که در تست 100 مقادیر 1 و 45 بدست آمده
حال من می خوام این سه مقدار رو از رشته جدا کنم
امیدوارم خوب توضیح داده باشم
بازه ارقامت چقدره ؟ این خیلی مهمه تو نوشتن کد
مثلا ارقام بین -90 تا 90
0 تا 10 یا 0تا 10000
دیدگاه
-
پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)
بازه من در حد 10000 می باشد.
داداش من مشکل جدا کردن رو با استفاده از Scan From String Function حل کردم
الان یه مشکل دارم تو دریافت سریال تو بافر من یه بار این دیتا به صورت
5q9q100qy
اما دفعه بعد می بینم دیتام شیفت پیدا کرده مثلا شده
qy5q9q100
مشکل از کجاست
ممنونم
دیدگاه
-
پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)
فکر نکنم مشکل از لب ویو باشه من تاحالا به این مشکل بر نخوردم احتمالا اطلاعات ارسالی از سیستم مشکل داشته باشه
به نظر من شما اول با هایپر ترمینال امتحان کن ببین اونجا مشکل داره یا نه اگه مشکل داشت که معلوم میشه از سیستمه وگرنه مشکله لب ویو
موفق باشی...
دیدگاه
-
پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)
دستگاه شما مشکلی نداره.. دستگاه ممکنه خروجی های مختلف با تعداد کاراکتر های مختلف ارسال کنه. برای حل این مشکل قبل ار خوندن دیتا از یک تابع byte at port استفاده کن. و خروجیش رو بده به رودی byte data تابع read . اینطوری مطمئن میشی که هیچ وقت دیتایی رو از دست نمیدی.. در ضمن یک مسدله مهم دیگه هست که مربوط به سرعت دریافت اطلاعات هست. در حلقه while از یه مقداتر کوچک تأخیر حتما استفاده کن.. و نگران از دست دادن اطلاعات هم نباش. لب ویو به طور اتوماتیک از یه بافر تو برنامش استفاده میکنه و تا چند مرحله قبل رو تو بافر ذخیره میکنه ...
دیدگاه
-
پاسخ : دریافت رشته و جدا سازی آن (ارتباط سریال)
من از تابع byte at port استفاده کردم ولی تو خروجی اصلا دیتایی نمی ده . الان مشکل اینه که من اگه نخوام از دستور byte at port استفاده کنم برای خوندم یه رشته که طول مختلف داره چه باید کرد.
من الان از دستور Scan From String Function برای جدا کردن مقادیر از ما بین رشته استفاده می کنم ولی زمانی که مقادیر ما بین مثلا از یک رقمی به ذو رقمی تغییر کنه خروجی دارای دیتای نادرست میشه.
اصلا کسی برنامه ای جامع برای ارتباط سریال داره؟
دیدگاه
دیدگاه