Запись SerialPort не вызывает никакого BytesToRead в буфере - PullRequest
0 голосов
/ 22 февраля 2019

Я записываю последовательность в последовательный порт, сообщая, чтобы она отправляла мне данные.После отправки последовательности и попытки чтения данных из последовательного порта там ничего нет.Однако, если я закрою программу и открою порт в HyperTerminal, данные сразу же появятся без необходимости запрашивать его.

private string ReadSerialPort()
    {
       var _comPort = new SerialPort()
       {
            PortName = "COM2",
            BaudRate = 1200,
            DataBits = 7,
            Parity = System.IO.Ports.Parity.Odd,
            StopBits = System.IO.Ports.StopBits.One,
            NewLine = Environment.NewLine,
            WriteTimeout = 500,
            ReadTimeout = 500,
            Handshake = System.IO.Ports.Handshake.None
        };

        if (!_comPort.IsOpen)
        {
            _comPort.Open();
        }

        int unicode = 27;
        char character = (char)unicode;
        string text = character + "P";

        _comPort.WriteLine(text);

        //System.Threading.Thread.Sleep(200); // Didn't help

        string serialData = string.Empty;
        while (serialData.Length == 0)
        {
            serialData = _comPort.ReadLine();
        }

        return serialData;
    }

Если я запишу escape-последовательность в последовательный порт 3 раза, я будуничего не вижу в моем коде, но если я открою HyperTerminal, он появится 3 раза.

Что может быть причиной того, что код ничего не видит в буфере, но я вижу его после выхода из программы?

1 Ответ

0 голосов
/ 26 февраля 2019

Мое решение было установить DtrEnable = true.Теперь все работает как задумано!
Этот вопрос помог мне привести к решению

Свойство SerialPort.DtrEnable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...