0

我正在尝试使用 [SerialPort] 类运行串行通信。我制作了一个简单的控制台应用程序项目,在其中使用HyperTerminal测试这个类。

这是我的程序:

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以下内容:当我写一行(在控制台中)时,a 可以在 HyperTerminal GUI 中看到我写的内容,但是当我使用 HyperTerminal 写一行时,我的程序没有读取任何消息,该消息总是触发 a TimeoutException.

为什么?
我怎么解决这个问题?
谢谢。

4

2 回答 2

2

如何利用 SerialPort.DataRecieved 事件?

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

于 2012-10-05T22:18:30.310 回答
1

尝试 Port.Read 以防 Port.ReadLine 正在等待新行!

于 2012-10-03T10:48:18.420 回答