PDA

View Full Version : سوال: خواندن چند داده از پورت سريال



viruse_del
چهارشنبه 24 شهریور 1389, 11:01 صبح
با سلام.
من ميخواستم از پورت سريالم كه به AVR وصل هست چند داده رو بخونم(C#‎2005). اين داده ها پشت سر هم روي پورت مياد. ولي وقتي ميخوام از پورت بخونم همه ي اين داده ها رو يكدفعه سر هم ميگيره(داده هاي فرستاده شده string هستن). چيكار بايد بكنم؟
مثلا از AVR 3تا string ميفرستم به پورت: 23 و 25 و 27، حالا ميخوام از برنامم Read كنم. چيكار كنم كه 232527 نخونه؟!!:افسرده:

s.khoshfekran
چهارشنبه 24 شهریور 1389, 11:29 صبح
از متد ReadExisting() استفاده کن@

viruse_del
چهارشنبه 24 شهریور 1389, 11:31 صبح
از اين متد استفاده ميكنم ولي همه ي داده ها رو يكدفعه ميگيره!! چيكار كنم جدا جدا بگيره؟

fjm11100
چهارشنبه 24 شهریور 1389, 12:17 عصر
یک راه خیلی ساده اینه که وسط اعداد یک جداکننده مثل کاما بفرستی:لبخند:

viruse_del
چهارشنبه 24 شهریور 1389, 13:01 عصر
خوب عزيز من اگه كاما بفرستم، ميدوني چي دريافت ميكنم؟ :متعجب:
23,25,27
!!!!!!
راه ديگه اي به ذهنتون نميرسه؟
please help me

fjm11100
چهارشنبه 24 شهریور 1389, 13:21 عصر
نه دیگه بعد split کن.
string[] numbers=inputStr.split(',');

viruse_del
چهارشنبه 24 شهریور 1389, 13:37 عصر
عجب ترفند جالبي. دستت طلا.
حالا توي اين كار بعضي وقتها متد ReadExisting درست عمل نميكنه!! يعني مثلا يه زماني "23" مياد روي پورت ولي فقط 2 رو ميخونه!! يعني ناقص ميخونه. واسه اين مشكل راهي به نظرتون ميرسه؟

fjm11100
چهارشنبه 24 شهریور 1389, 13:45 عصر
ببین باید برای ارتباطت یک پروتکل بنویسی که خطایابی و تصحیح خطا داشته باشه. فرستادن داده خالی همینجوری ریسک داره چون بحث نویز مخصوصا توی محیط صنعتی جدیه. یک هدر و فوتر سر و ته داده اضافه کن تا اگر داده درست نرسید دوباره درخواست ارسال بدی. checksum و طول داده و کارکتر شروع و اتمام داده معمولا توی اون هدر و فوتر میاد

cheshm6k
چهارشنبه 24 شهریور 1389, 13:45 عصر
سلام .
از متد ReadLine استفاده کنید .

دقت کنید که این متد تا رسیدن به کاراکتر سطر جدید(enter یا r\n\ ) میخونه.

موفق باشید.

viruse_del
چهارشنبه 24 شهریور 1389, 14:02 عصر
fjm11100 (http://www.barnamenevis.org/forum/member.php?u=67728) ممنون ميشم اگه بيشتر توضيح بدي؟ آخه تازه C#‎ رو با يه برنامه خفن شروع كردم.
منظور از اينكه هدر و فوتر سر و ته داده اضافه کنم چيه؟
cheshm6k (http://www.barnamenevis.org/forum/member.php?u=23667) من برنامه اي كه نوشتم به همراه يه ميكرو كنترولر هست كه اين ميكرو هر ثانيه يه string رو پورت ميندازه، حالا منظورت از enter خوندن چيه؟ آخه اين برنامه كاملا خودكار بايد انجام بشه و نيازي به اين كه كاربري روش كار كنه نيست

cheshm6k
چهارشنبه 24 شهریور 1389, 14:29 عصر
cheshm6k (http://www.barnamenevis.org/forum/member.php?u=23667) من برنامه اي كه نوشتم به همراه يه ميكرو كنترولر هست كه اين ميكرو هر ثانيه يه string رو پورت ميندازه، حالا منظورت از enter خوندن چيه؟ آخه اين برنامه كاملا خودكار بايد انجام بشه و نيازي به اين كه كاربري روش كار كنه نيست

کافیه به هر عدد r\n\ رو اضافه کنی بعد بفرستی.

viruse_del
چهارشنبه 24 شهریور 1389, 14:55 عصر
ممنون. يعني اين متد ديگه توش امكان خطا وجود نداره؟ هموني كه گفتم. مثلا "23" رو فقط "3" بخونه؟!!

cheshm6k
چهارشنبه 24 شهریور 1389, 15:07 عصر
ممنون. يعني اين متد ديگه توش امكان خطا وجود نداره؟ هموني كه گفتم. مثلا "23" رو فقط "3" بخونه؟!!

همه چیز امکان داره . اگه صحت دریافت اطلاعات واست خیلی مهمه بهتره نسبت به اطلاعاتی که میکرو واست میفرسته ، مکانیزمی برای چک کردن اون ایجاد کنی. مثلا اینکه فقط عدد باشه یا حتما 2 رقمی باشه و از این دست مسائل .

viruse_del
چهارشنبه 24 شهریور 1389, 15:20 عصر
مكانيزم ميكرو كاملا درسته، يعني داخل ميكرو فقط يه عدد 2 رقمي رو داخل string ميزارم ميفرستم. مطمئن هستم اشكال از ميكرو نيست. هرچي هست بايد داخل برنامه كامپيوتر درست شه.
چيكار كنم كه اطلاعات درست دريافت كنم و اگر اطلاعات درست نبودن اونارو پردازش نكنه و يه بار ديگه read كنه؟

cheshm6k
چهارشنبه 24 شهریور 1389, 15:35 عصر
دوست من، منظور من مکانیزم برای برنامت بود . به توضیحاتم دقت میکردی جوابتو میگرفتی.
بعد از اینکه رشته رو خوندی اول طولشو چک کن ببین درسته. بعد ببین عدد هست یا نه و اگر عدد هست در بازه ای هست که تو انتظار داشتی؟ اگه هست که ادامه کار ، اگه نه باید میکرو رو مطلع کنی که اطلاعات رو دوباره واست بفرسته . البته تمومه اینا به شرطی که میکرو قابلیت پردازش دستوراتتو داشته باشه معنا پیدا میکنه .

بدست آوردن طول رشته :

str.Length
تبدیل به عدد:

int i=Convert.ToInt32(str);

موفق باشید.

viruse_del
چهارشنبه 24 شهریور 1389, 15:44 عصر
خيلي ممنون دوست عزيز مشكلم برطرف شد:قلب: