سؤال

أحاول تشغيل اتصال تسلسلي باستخدام فئة [سيريالبورت].لقد صنعت مشروع تطبيق وحدة تحكم بسيط حيث أختبر هذه الفئة باستخدام هيبرترمينال.

هذا هو برنامجي:

class Program
{
    private static bool _continue = true;
    private static SerialPort port;

    static void Main(string[] args)
    {
        try
        {
            port = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);
            port.ReadTimeout = port.WriteTimeout = 5000;
            port.Open();

            Thread thread = new Thread(Read);
            thread.Start();

            while (_continue)
            {
                string message = Console.ReadLine();

                if (message.Equals("quit"))
                    _continue = false;
                else
                    port.Write(message);
            }

            thread.Join();
            port.Close();
        }
        catch (Exception ex)
        { }
    }

    private static void Read()
    {
        while (_continue)
        {
            try
            {
                string message = port.ReadLine();
                Console.WriteLine(message);
            }
            catch (TimeoutException) { }
        }
    }
}

The problem is ما يلي:عندما أكتب سطر (في وحدة التحكم) يمكن أن نرى في واجهة المستخدم الرسومية هيبرترمينال ما كتبته ، ولكن عندما أكتب خط باستخدام هيبرترمينال لا يتم قراءة رسالة من قبل برنامجي أن ثوروس دائما TimeoutException.

لم؟
كيف يمكنني حل هذه المشكلة?
شكرا.

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

المحلول

جرب المنفذ.قراءة في حالة الميناء.ريدلاين ينتظر خط جديد !

نصائح أخرى

ماذا عن الاستفادة من سيريالبورت.حدث البيانات?

http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.datareceived.aspx

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