SerialPort не читает сообщения

Я пытаюсь запустить последовательное соединение, используя класс [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 следующее: когда я пишу строку (в консоли), я могу видеть в графическом интерфейсе HyperTerminal то, что я написал, но когда я пишу строку с использованием HyperTerminal, моя программа не читает сообщение, которое всегда вызывает TimeoutException,

Зачем?
Как я могу решить эту проблему?
Благодарю.

2 ответа

Решение

Попробуйте Port.Read, если Port.ReadLine ожидает новой строки!

Как насчет использования события SerialPort.DataReced ed?

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

Другие вопросы по тегам