ورود

نسخه کامل مشاهده نسخه کامل : پورت سریال و مشکل همزمانی



m.yaspro
09-07-2013, 13:36
سلام
وقت بخیر
با یه دستگاه دارم کار می کنم که با پورت سریال تو سی شارپ بهش کانکت میشم
من باید یه آرایه از نوع بایت براش بفرستم تا اون یه جواب به من بده ، بعد با توجه به جوابی که داده یه دستور دیگه براش بفرستم تا جواب نهایی رو بگیرم(این کار باید بصورت متناوب مثلا در هر 30 ثانیه تکرار بشه) به اینصورت:

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

Msba
09-07-2013, 17:33
1-پورت سریال یک رابط Full Duplex می باشد. حالا این بنویسد و آن بخواند. (مشکلی وجود ندارد)
2-دو نخ؟
اگر رویداد سریال در یک Thread تعریف شود (به طور مثال ریسمان اصلی) و رویداد tick هم در همان Thread تعریف شده باشد قضیه ی دو نخ هرگز وجود نخواهد داشت. چرا که این Event ها یک تافته ی جدا بافته نیستند و همان Thread اصلی می باشند.
3- اگر خود چند ریسمانه کرده اید (ایده اول) پس بخوانید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
4- اگر مسائل فوق مشکل شما را حل نکرده است. از Mutex و یا Semaphore استفاده کنید. هر کی از پورت استفاده کرد دیگری بایستد تا کار او تمام شود و سپس ادامه دهد.


موفق باشید.

m.yaspro
10-07-2013, 14:54
ممنون از توضیحاتتون
من همونطور که گفتم فکر می کنم که یه جایی حین خوندن اطلاعات برگشتی از دستور دوم ، در همون لحظه دستور اول دوباره روی پورت فرستاده میشه ،
ممنون از راهنماییتون
اگر لازمه کد رو بزارم