أي حدث في C#.Net الذي أخبرني المنفذ التسلسلي dataReceived حالة التوقف عن تلقي البيانات

StackOverflow https://stackoverflow.com/questions/1201036

  •  05-07-2019
  •  | 
  •  

سؤال

أنا أعمل على المنفذ التسلسلي التنفيذ في C#.أنا على الحصول على البيانات من SerialPort وأنا مضيفا أن البيانات إلى طابور النوع من جمع (عالميا المعلنة).أنا باستخدام BackgroundWorker موضوع معالجة البيانات في قائمة الانتظار.المشكلة هي أن.إذا كان المنفذ التسلسلي التوقف عن إرسال البيانات والبيانات الواردة التوقف عن تلقي البيانات سوف يكون هناك لا يزال بعض البيانات لا تزال في قائمة الانتظار التي تتطلب المعالجة.هل هناك أي طريقة التي تقل لي لا يوجد بيانات قادمة من SerialPort أو بعبارة أخرى Port_dataReceived إيقاف تلقي أي بيانات.حتى أستطيع أن عملية مهما البيانات هناك في الانتظار.لأن هذه المرة سوف تكون على يقين من أن لن يكون هناك أي بيانات قادمة من ميناء متسلسل الآن ومهما كانت البيانات في قائمة الانتظار هو آخر ما تبقى البيانات التي يتم معالجتها.شكرا مقدما - شيتان

هل كانت مفيدة؟

المحلول

إذا كنت تستخدم هذا النظام.IO.الموانئ.SerialPort ، ثم أنا لا أعتقد أن هناك شيئا بنيت في.كنت بحاجة إلى رمز ذلك بنفسك.

هل هناك سبب لا يمكنك فقط استخدام DataReceived الحدث ومعالجة البيانات كما يأتي ؟

هذا صعب لأن لديك للتعامل مع حقيقة أن SerialPort المستمع تعمل على ترابط مختلفة لذلك قد تحتاج للقلق حول موضوع السلامة ، ولكن هل يمكن تحديد العالمية التاريخ والوقت متغير التحديث في DataReceived الحدث ، ومن ثم تحقق من أنه في التعليمات البرمجية الخاصة بك لمعرفة ما إذا كان في آخر مرة وقد تم البيانات المستلمة أكثر من n ثانية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top