Итак, немного контекста. У меня есть 2 устройства, которые связываются друг с другом через rs232 с помощью RTS / CTS, и мне нужно заменить одно из этих устройств на собственное устройство и программное обеспечение.
Я пытаюсь достигните этого, используя библиотеку System.IO.Ports.SerialPort, чтобы из того, что я мог собрать в Интернете, эта библиотека сама обрабатывала рукопожатие, если мы установили для свойства RtsEnable значение «true», а для свойства рукопожатия - «RequestToSend», но я столкнулся с некоторыми проблемы с получением данных с устройства.
При тестировании моего программного обеспечения я не могу получить ничего от устройства , но , если я изменю проводку, чтобы просто работать в качестве анализатора между двумя оригинальными устройства я могу получить данные правильно. Из того, что я могу собрать, должно быть что-то, что я делаю неправильно, чтобы справиться с рукопожатием.
Вот код, который я пытаюсь:
stationPort = new SerialPort(stationPortNumber, baudRate, parity, dataBits, stopBits);
stationPort.RtsEnable = true;
stationPort.Handshake = Handshake.RequestToSend;
stationPort.DataReceived += StationPort_DataReceived;
stationPort.Open();
private static void StationPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] bytes = new byte[20];
stationPort.Read(bytes, 0, stationPort.BytesToRead);
string hexConvert = BitConverter.ToString(bytes);
Console.WriteLine("Station OUT >>> " + hexConvert);
}
Я также дважды проверил проводку, чтобы убедиться, он был правильно подключен и также изменил преобразователь, потому что иногда они не подключены должным образом, поэтому я выбрал более надежный MOXA UPort 1150.
Учитывая сказанное, мой вопрос заключается в том, что я делаю неправильно с моей реализацией ? Должен ли я сделать больше, чтобы гарантировать рукопожатие?
Заранее спасибо за помощь.