Исключение времени ожидания последовательного порта ReadByte () - PullRequest
0 голосов
/ 08 апреля 2020

Я работаю над приложением C#. Мое приложение должно осуществлять последовательную связь с аппаратным устройством. Устройство подключено к моей системе через COM-порт COM4. Код:

serialPort = new SerialPort("COM4", 2400, Parity.Odd, 8, StopBits.One);
serialPort.WriteTimeout = 5000;
serialPort.ReadTimeout = 5000;
serialPort.Open();
serialPort.Handshake = Handshake.None;
serialPort.DtrEnable = true;
serialPort.RtsEnable = true;

После этого я делаю операцию записи, все работает нормально. Код:

private void WriteMessage(byte[] busMsg)
{
    BinaryWriter writer = new BinaryWriter(serialPort.BaseStream);
    writer.Write(busMsg);
    writer.Flush();
}

После записи, когда я выполняю операцию ReadByte, я получаю исключение тайм-аута. Код:

private byte ReadAEBusMessageResponse()
{
    BinaryReader reader = new BinaryReader(serialPort.BaseStream);
    return reader.ReadByte();
}

Я где-то читал в Google, что BaseStream может вызвать проблему, поэтому я попробовал следующий код для чтения, но все равно не повезло, и я все еще получаю исключение тайм-аута.

private byte ReadAEBusMessageResponse()
{
    SerialPort currentPort = serialPort;
    return Convert.ToByte(currentPort.ReadByte());
}

Я получаю ответ, когда пытаюсь связаться с Геркулесом, поэтому я предполагаю, что с ответом устройства нет проблем. Что я делаю не так с последовательной связью? любая помощь будет высоко ценится.

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