دریافت همزمان دیتا از چند پورت - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

دریافت همزمان دیتا از چند پورت

0 امتیاز

باسلام خدمت دوستان عزیز.

من درحال کار روی برنامه ای تحت دات نت هستم که به طور همزمان به تعدادی پورت سریال متصل میشه و پردازش انجام میده

مشکل من در لحظه دریافت هست. وقتی تمام برد ها در یک لحظه بخوان دیتا برگردونن و من پردازششون کنم وقتی پورت اول در حال خواندن دیتا هست و خب مسلما از

thread.sleep

استفاده کردم ممکنه درهمون بازه زمانی تاخیر.پورت دیگری داره دیتا میفرسه که خب مسلما از دست میره.

برای ارسال من با روش مولتی ترد مشکلاتو حل میکنم اما در لحظه دریافت چون تمام پورت ها به Thread هسته که همون فرم اصلی هست متصل هستند مشکل پیش میاد.

سوالم اینه که آیا میشه serialport.data_recieved Event  رو به یک Thread متصل کرد یا اگه نه پیش نهاد شما چیه؟

اینم قطعه کد مربوط به ایونت Data_recieved در هر برد



private void serialPort3_DataReceived(object sender, SerialDataReceivedEventArgs e)
   {
     
       Thread.Sleep(200);
           try
           {
               
               string data = serialPort3.ReadExisting();
               this.Invoke(new SetTextDeleg(si_DataReceived), new object[] { data.Trim() + " #Board3#" });
           serialPort3.DiscardInBuffer();
          
       }
       catch { }
   }

   private void serialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)
   {
     
       Thread.Sleep(200);
           try
           {
              
           string data = serialPort2.ReadExisting();
           this.Invoke(new SetTextDeleg(si_DataReceived), new object[] { data.Trim() + " #Board2#" });
           serialPort2.DiscardInBuffer();
           
       }
       catch { }
   }

   private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
   {
       
       Thread.Sleep(200);     
       try
       {
         
           string data = serialPort1.ReadExisting();
           this.Invoke(new SetTextDeleg(si_DataReceived), new object[] { data.Trim()+" #Board1#" });
           serialPort1.DiscardInBuffer();
          
       }
       catch { }
   }

 

سوال شده شهریور 29, 1393  بوسیله ی mt.mohamad (امتیاز 28)   6 8 14
ویرایش شده شهریور 29, 1393 بوسیله ی BlueBlade
ممنون. الان بررسی می کنم
سپاس دوست عزیز. این روشو تست نکردم اما راه مقابله با مشکلو توی یه جمله از این پست پیدا کردم
don't read the actual data in the event handler, event handlers often run on the GUI thread, you don't want to lock up the GUI;

پاسخ شما

اسم شما برای نمایش (دلخواه):
از ایمیل شما فقط برای ارسال اطلاعات بالا استفاده میشود.
تایید نامه ضد اسپم:

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
...