ورود

نسخه کامل مشاهده نسخه کامل : چگونه تا وقتی که متدی که مربوط به یک Event هست کامل اجرا نشده, برنامه در همون خط بمونه؟



Macdiano
31-07-2010, 07:51
سلام

من یه برنامه با کنسول دارم مینویسم که از طریق سریال پورت با gsm در ارتباط هست

کلاس سریال پورت یک Event دارد به نام DataReceived

وقتی در برنامه یک At Command ران میکنم, متدی که برای DataReceived هست ران میشه

من میخوام تا وقتی که دستورات داخل این متد به پایان نرسیده است, At Command بعدی اجرا نشه (در واقع خط بعدی کدی که نوشتم اجرا نشه

تا وقتی دستورات داخل متد DataReceived به پایان برسد).

مرسی

عــــلی
01-08-2010, 15:20
سلام.
شما نمیتونی به سخت افزار بگی الان اجرا نشو من کار دارم.
اون نمیتونه درک کنه این مساله رو ولی میتونی دستورات رو لغو کنی یا همه رو در یک آرایه ذخیره کنی و سپس یکی یکی اجرا کنی حالا به وسیله Thread ها هم میتونی اینکار رو انجام بدی که کد ها در قسمیتی وایسن ولی سخت افزار اطلاعات رو همینجور میده و نرم افزار مجبور به دریافته.
موفق باشید.

pezhmax
01-08-2010, 19:46
1- من قبلا رو پورت سریال با یه شبکه RS485 برنامه نوشتم. معمولا شیوه برنامه نویسی رو این پورت به صورت half duplex پیاده سازی میشه. یعنی شما یه پکت داده میفرستی و این پکت توسط سخت افزار گرفته میشه. با دریافت این پکت، سخت افزار یه پاسخی به شبکه بر میگردونه. بعد تو باید thread برنامه خودت رو با یه حلقه مدیریت کنی تا پکتهای دریافتی رو شناسایی کنه و واکنش مناسب رو انجام بده. معمولا این حلقه به صورت یه حلقه همیشه درست تعریف میشه که در شرایطی مثل دریافت پاسخ یا تکرار چندباره خطا از حلقه خارج میشه. البته همیشه تو یه چنین حلقه ای برای جلوگیری از بالا رفتن پروسه thread باید یه sleep کوچولو به حلقه ات بدی. درضمن سعی کن عملیات ارسال و دریافت پکتها رو از thread فرمت جدا کنی.

2- یه نگاهی به Kylix SMS ActiveX Control بنداز شاید کارتو راه انداخت. تو همین فروم جستجو کنی لینک دانلودش هم هست.

عــــلی
02-08-2010, 11:39
سلام.

یه نگاهی به Kylix SMS ActiveX Control بنداز شاید کارتو راه انداخت
استفاده از کنترل فقط سرعت یادگیری رو کاهش میده.
کاری که با چند خط کد انجام میشه چرا با یک dll دو هزار خطی انجام بشه؟

این کتاب رو بخون حتماً به جواب میرسی....با استفاده از دستور lock در سی شارپ عملیات پشت سر هم انجام شدن Thread ها رو میتونی یاد بگیری.

Threading in Csharp:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشید:11:.