Я работаю над приложением 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());
}
Я получаю ответ, когда пытаюсь связаться с Геркулесом, поэтому я предполагаю, что с ответом устройства нет проблем. Что я делаю не так с последовательной связью? любая помощь будет высоко ценится.