نمایش نتایج 1 تا 9 از 9

نام تاپیک: سریال پورت و Thread

  1. #1
    کاربر تازه وارد آواتار ArtStyle
    تاریخ عضویت
    فروردین 1392
    محل زندگی
    شهر آخوند
    پست
    30

    سریال پورت و Thread

    با سلام
    وقت همگی بخیر

    یه سوالی راجع به پورت سریال و Thread برام پیش اومده ممنون میشم کسی راهنمایی کنه

    من میخوام در برنامم موقعی که از سریال پورت اطلاعاتی میاد برنامه اولویت خودشو بذاره رو مقادیر گرفته شده از Data_Receive یعنی تمام کارای دیگه متوقف شه

    در واقع دو سریال پورت در حال استفادس حال اگر 50 میلی ثانیه هم تاخیر داشته باشم مقادیر دیگه به دردم نمیخوره ( اگر در کدهام از (Thread.Sleep(50 استفاده کنم )

    در واقع میخوام مثل CodeVision مقادیر رو به صورت آنی دریافت کنم ممنون میشم کسی راهنمایی کنه

  2. #2
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: سریال پورت و Thread

    کل عملیات مربوط به کار با پورت مورد نظر رو در یک Thread مجزا انجام بدین. لزومی نداره کار های دیگه متوقف بشه مگه اینکه اون کارها درصد قابل توجهی از CPU رو بگیره.

  3. #3
    کاربر تازه وارد آواتار ArtStyle
    تاریخ عضویت
    فروردین 1392
    محل زندگی
    شهر آخوند
    پست
    30

    نقل قول: سریال پورت و Thread

    دوست عزیز ممنون میشم اگه یه سمپل کد برام بذاری چون مشکلم اینه که نمیتونم یک دلیگیت به ThreadStart بفرستم یعنی اجازه نمیده تابع Data_Receive رو توش قرار بدم چرا که این تابع دارای پارامتره و Threadstart حتما بدون پارامتر میخواد

  4. #4
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: سریال پورت و Thread

    سلام
    دوست من، Thread می‌تونه پارامتر داشته باشه.
    http://stackoverflow.com/questions/1...ith-parameters

    و بر خلاف نظر دوستمون plus به نظر من حتماً از sleep استفاده کن تا عملکرد
    عادی نرم‌افزار دچار مشکل نشه.

    صبا صبوحی

  5. #5
    کاربر تازه وارد آواتار ArtStyle
    تاریخ عضویت
    فروردین 1392
    محل زندگی
    شهر آخوند
    پست
    30

    نقل قول: سریال پورت و Thread

    ممنون از راهنماییتون منم همین کارو قبلا انجام دادم ولی مشکلم اینه که وقتی اسلیپ میزنم باید زمان تعیین شده باشه ولی من میخوام با این اسلیپ برنامه بره سراغ Data_Receive و وقتی کارش اونجا تموم شد بلافاصله برگرده به Thread اصلی .

    آیا راهی هست که بشه Thread ای که اسلیپ کردم رو بش بگم بعد از اتمام Data_Receive دوباره به کارش ادامه بده قبل از این که تایم اسلیپ تموم شه ؟ چون زمان خیلی مهمه اگه 20 میلی ثانیه بیشتر شه امکان داره مقادیرم دچار مشکل شه

  6. #6
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: سریال پورت و Thread

    نقل قول نوشته شده توسط SabaSabouhi مشاهده تاپیک
    سلام
    دوست من، Thread می‌تونه پارامتر داشته باشه.
    http://stackoverflow.com/questions/1...ith-parameters

    و بر خلاف نظر دوستمون plus به نظر من حتماً از sleep استفاده کن تا عملکرد
    عادی نرم‌افزار دچار مشکل نشه.

    صبا صبوحی
    منظورتون رو متوجه نشدم. یعنی شما در UI Thread‌از Sleep استفاده میکنید؟ چه نکته ای در استفاده از Sleep هست؟ فراخوانی Sleep هیچ کاری جز متوقف کردن Thread جاری انجام نمیده، حالا شما اگه Thread دیگه ای نداشته باشین که براتون کار انجام بده Sleep‌ فقط باعث هنگ کردن UI میشه.
    نقل قول نوشته شده توسط ArtStyle مشاهده تاپیک
    ممنون از راهنماییتون منم همین کارو قبلا انجام دادم ولی مشکلم اینه که وقتی اسلیپ میزنم باید زمان تعیین شده باشه ولی من میخوام با این اسلیپ برنامه بره سراغ Data_Receive و وقتی کارش اونجا تموم شد بلافاصله برگرده به Thread اصلی .

    آیا راهی هست که بشه Thread ای که اسلیپ کردم رو بش بگم بعد از اتمام Data_Receive دوباره به کارش ادامه بده قبل از این که تایم اسلیپ تموم شه ؟ چون زمان خیلی مهمه اگه 20 میلی ثانیه بیشتر شه امکان داره مقادیرم دچار مشکل شه
    شما تا وقتی دو Thread‌نداشته باشید که نمیتونید اون رو هم Sleep کنید و هم در اجرای متد Data_Receive داشته باشید. اگه شما Data_Receive‌ رو مثلا در Thread1 در حال اجرا داشته باشید، وقتی در UI Thread هستین با استفاده از متد Thread.Join میتونید Thread جاری رو تا اتمام Thread1 متوقف کنید.
    برای استفاده از Parameter موقع ایجاد Thread میتونید به این روش عمل کنید:

    class Data_ReceiveParams {
    public int Parameter1 {
    get;
    set;
    }
    public int Parameter2 {
    get;
    set;
    }
    }
    private void button1_Click_9(object sender, EventArgs e) {
    var thredStart = new ParameterizedThreadStart(DoSomeOperation);
    var dataReceiveParams = new Data_ReceiveParams();
    dataReceiveParams.Parameter1 = 10;
    dataReceiveParams.Parameter2 = 15;
    Thread thread = new Thread(thredStart);
    thread.Start(dataReceiveParams);
    }
    private void DoSomeOperation(object dataReceiveParams) {
    Data_ReceiveParams dParams = (Data_ReceiveParams)dataReceiveParams;
    Data_Receive(dParams.Parameter1, dParams.Parameter2);
    this.BeginInvoke((MethodInvoker) delegate { this.NotifyOperationsDone()});
    }
    private void Data_Receive(int parameter1, int parameter2) {
    // Do lengthy operation
    }
    private void NotifyOperationsDone() {
    // Here we are in UI thread
    MessageBox.Show("Done!");
    }

  7. #7
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: سریال پورت و Thread

    نقل قول نوشته شده توسط ArtStyle مشاهده تاپیک
    ممنون از راهنماییتون منم همین کارو قبلا انجام دادم ولی مشکلم اینه که وقتی اسلیپ میزنم باید زمان تعیین شده باشه ولی من میخوام با این اسلیپ برنامه بره سراغ Data_Receive و وقتی کارش اونجا تموم شد بلافاصله برگرده به Thread اصلی .

    آیا راهی هست که بشه Thread ای که اسلیپ کردم رو بش بگم بعد از اتمام Data_Receive دوباره به کارش ادامه بده قبل از این که تایم اسلیپ تموم شه ؟ چون زمان خیلی مهمه اگه 20 میلی ثانیه بیشتر شه امکان داره مقادیرم دچار مشکل شه
    سلام
    آیا شما با EventWaitHandle آشنایی داری؟ اگه داری ازش استفاده کن.
    فقط اگه آشنایی ندارین، اول خوب مطالعه کن چون این مبحث خیلی حرفه‌ای هست و اگه درست انجام ندی، کارت رو مشکل‌تر می‌کنه.

    صبا صبوحی

  8. #8
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: سریال پورت و Thread

    نقل قول نوشته شده توسط plus مشاهده تاپیک
    منظورتون رو متوجه نشدم. یعنی شما در UI Thread‌از Sleep استفاده میکنید؟ چه نکته ای در استفاده از Sleep هست؟ فراخوانی Sleep هیچ کاری جز متوقف کردن Thread جاری انجام نمیده، حالا شما اگه Thread دیگه ای نداشته باشین که براتون کار انجام بده Sleep‌ فقط باعث هنگ کردن UI میشه.

    شما تا وقتی دو Thread‌نداشته باشید که نمیتونید اون رو هم Sleep کنید و هم در اجرای متد Data_Receive داشته باشید. اگه شما Data_Receive‌ رو مثلا در Thread1 در حال اجرا داشته باشید، وقتی در UI Thread هستین با استفاده از متد Thread.Join میتونید Thread جاری رو تا اتمام Thread1 متوقف کنید.
    سلام
    دوست عزیز، منظورم Sleep کردن UI نبود، بلکه منظورم اون Thread دوم بود که قراره از درگاه سریال بخونه.

    صبا صبوحی

  9. #9
    کاربر دائمی آواتار modern_amin
    تاریخ عضویت
    آذر 1389
    محل زندگی
    کنار شما !
    پست
    595

    نقل قول: سریال پورت و Thread

    نقل قول نوشته شده توسط ArtStyle مشاهده تاپیک
    با سلام
    وقت همگی بخیر

    یه سوالی راجع به پورت سریال و Thread برام پیش اومده ممنون میشم کسی راهنمایی کنه

    من میخوام در برنامم موقعی که از سریال پورت اطلاعاتی میاد برنامه اولویت خودشو بذاره رو مقادیر گرفته شده از Data_Receive یعنی تمام کارای دیگه متوقف شه

    در واقع دو سریال پورت در حال استفادس حال اگر 50 میلی ثانیه هم تاخیر داشته باشم مقادیر دیگه به دردم نمیخوره ( اگر در کدهام از (Thread.Sleep(50 استفاده کنم )

    در واقع میخوام مثل CodeVision مقادیر رو به صورت آنی دریافت کنم ممنون میشم کسی راهنمایی کنه
    منم به همین مشکل خوردم
    اون sleep نخ اصلی رو از کار میندازه
    اخرش به چه نتیجه ای رسیدید؟؟

تاپیک های مشابه

  1. سوال: کنترل سریال پورت از طریق کلاینت
    نوشته شده توسط arian_P در بخش ASP.NET Web Forms
    پاسخ: 8
    آخرین پست: دوشنبه 27 آبان 1387, 09:56 صبح
  2. فرستادن اطلاعات به سریال پورت
    نوشته شده توسط morteza saleh در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: سه شنبه 16 آبان 1385, 06:58 صبح
  3. کمک در سریال پورت
    نوشته شده توسط Success در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: پنج شنبه 15 تیر 1385, 19:53 عصر
  4. ارتباط بین دو کامپیوتر از طریق سریال پورت
    نوشته شده توسط habdolah در بخش شبکه و Networking‌
    پاسخ: 7
    آخرین پست: دوشنبه 18 اسفند 1382, 08:54 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •