Последовательная связь в C++ (Visual Studio 2010,.NET 4.5)

У меня есть вопрос уточнения относительно получения данных через последовательный порт от *******. В частности, я использую Sparkfun Pro Micro 5v/16MHz и пытаюсь написать простой графический интерфейс в C++ для отправки сообщений через последовательный порт, а затем получить один из нескольких ответов, которые указаны в коде, запущенном на плате *******,

Я знаю, что связь и код, работающие на *******, работают, потому что я попытался использовать инструмент Serial Monitoring в среде ******* и могу отправлять и получать соответствующие ответы.

При отправке сообщений через графический интерфейс C++, который я создал, я вижу, что светодиод трафика мигает при отправке сообщения, заставляя меня поверить, что отправка через C++ графический интерфейс работает, но ничего не касается приема сообщений.

Некоторые из моего кода:

private: System::Void serialPort1_DataReceived(System::Object^ sender, System::IO::Ports::SerialDataReceivedEventArgs^ e)
 {
 String^ testStr = serialPort1->ReadExisting();
 log_textBox->Text += testStr + "\n";
 }

Это очень простой обработчик событий, который присваивается событию DataReceived моего объекта SerialPort который является частью моей формы. Я установил контрольную точку внутри нее, и она никогда не срабатывает. Я немного растерялся, я сделал несуществующий объем работы с ******* или аппаратным обеспечением, поэтому я не совсем уверен, что мои варианты для отладки.

Если у кого-то есть какие-то отладочные предложения или идеи, что я делаю неправильно, я бы очень признателен. Кроме того, если я не предоставил никакой информации, дайте мне знать, что нужно, и я ее отредактирую!

Спасибо, -K

1 ответ

Наконец понял это после поиска неясного комментария, говорящего о настройках.

Оказывается, мне нужно, чтобы свойство DTREnabled для Serial Port устанавливалось как True, а не false, чтобы обработчик DataReceived запускался. Этот параметр никогда не устанавливался ни в одной из документации MSDN, касающейся связи через последовательный порт. Если вы читаете это и имеете аналогичную проблему, убедитесь, что DTREnabled, RTSEnabled оба установлены в true и, возможно, даже настроили Handshaking на RequestToSend. Возможно, одним или всеми из них будет то, что в конечном итоге его исправление.

В моем случае только DTREnabled должен быть правдой. Я не совсем понимаю, что делают эти настройки, но там у вас есть.

licensed under cc by-sa 3.0 with attribution.