PDA

View Full Version : پردازش دادها در رویداد data resived پورت سریال



iman-63
دوشنبه 22 آذر 1389, 16:41 عصر
سلام به همه.
من توی برنامم دارم با یه میکرو در هر 10 میلی ثانیه با پورت سریال به pc دیتا میدم.
حالا از اونجا که فهمیدیم رویداد data resived با یه thread با اولویت بالاتر جدا از برنامه اجرا میشه. بهمین دلیل نمی توانیم درون این تابع به کنترل ها و توابع دیگر دسترسی داشته باشیم.
بازم تا جایی که فهمیدم ساده ترین راه آدرس دهی استفاده از دستور invoke هست که من بلد نیستم!!!
فعلاً دارم با یه تایمر دستورات رسیده رو پردازش میکنم.
ممکنه یه توضیح یا مثال از این خاصیت اینجا بذارین.

با تشکر.

FastCode
دوشنبه 22 آذر 1389, 23:17 عصر
سلام.
۱.دیدتون راجع به ترد و اون ترد خاص و دسترسی و invoke اشتباهه ولی خوشبختانه زیاد مانع کارتون نمیشه.:گیج:
۲.بهترین راهی که به نظر میرسه اینه که شما اطلاعات رو در یک لیست(نه لیست باکس) بریزید و با یک ترد دیگه هم اطلاعاتش رو نمایش بدید.
فقط دو کار باید انجام بشه که برنامتون دچار مشکل نشه:
۱.هر ترد برای دسترسی به لیست باید از lock استفاده کنه و دوم اینکه برای کاهش latency و جلوگیری از load بی دلیل پردازنده شما باید از یک ManualResetEvent استفاده کنید.
توجه:
این فقط یک روش بود.

روش دوم هم اینه که فکر قبلی خود را ادامه بدید و روش کار Invoke رو با جست و جوی عبارت Control.Invoke Example در گوگل یاد بگیرید.
(این روش روش بدی نیست ولی بهترین نیست.)

iman-63
سه شنبه 23 آذر 1389, 17:53 عصر
سلام.
ممنون از پاسختون. واقعاً موندم باید چیکار کنم.



بهترین راهی که به نظر میرسه اینه که شما اطلاعات رو در یک لیست(نه لیست باکس) بریزید و با یک ترد دیگه هم اطلاعاتش رو نمایش بدید.
فقط دو کار باید انجام بشه که برنامتون دچار مشکل نشه:
۱.هر ترد برای دسترسی به لیست باید از lock استفاده کنه و دوم اینکه برای کاهش latency و جلوگیری از load بی دلیل پردازنده شما باید از یک ManualResetEvent استفاده کنید.


ممنون میشم اگه ممکنه توضیح بیشتری یا یه مثال برام بذارید.

با تشکر.

FastCode
سه شنبه 23 آذر 1389, 19:30 عصر
سلام.
تمام مواردی که ذکر کردم حداقل ۲۰ بار در همین سایت آموزش داده شده.
در گوگل هم اگر جست و جو کنید چند هزارتایی پیدا میکنید.
خیلی کار پیچیده ای نیست.

http://msdn.microsoft.com/en-us/library/system.threading.manualresetevent(v=vs.71).aspx

iman-63
سه شنبه 23 آذر 1389, 22:22 عصر
سلام.
مشکل اینه که من مبتدیم و اصلاً نمی دونم باید دونبال چی بگردم!!!
اگه ممکنه شما چندتا تایپیک معرفی کنین. این سایت هم که معرفی کردین .......