繁体   English   中英

C ++中的串行通信(Visual Studio 2010,.NET 4.5)

[英]Serial Communication in C++ (Visual Studio 2010, .NET 4.5)

我有一个关于从Arduino的串行端口接收数据的澄清问题。 具体来说,我使用的是Sparkfun Pro Micro 5v / 16MHz,并试图用C ++编写一个简单的GUI以通过串行端口发送消息,然后接收在Arduino板上运行的代码中指定的一些响应之一。

我知道在Arduino上运行的通信和代码可以工作,因为我尝试使用Arduino IDE中的串行监视工具,并且能够发送和接收适当的响应。

通过我创建的C ++ GUI发送消息时,我看到消息发送上的流量LED闪烁,使我相信通过C ++ GUI发送是有效的,但是关于接收消息却没有任何效果。

我的一些代码:

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

这是一个非常简单的事件处理程序,它分配给我的SerialPort对象的DataReceived事件,该事件是表单的一部分。 我已经在其中设置了一个断点,并且它从未触发过。 我有点无所适从,我没有使用Arduino或硬件完成过很多工作,因此我不确定要调试的选项是什么。

如果有人有任何调试建议或想法,我在做什么错,我将不胜感激。 此外,如果我没有提供任何信息,请告诉我需要什么,然后我将其编辑!

谢谢-K

在找到有关设置的晦涩注释后,终于明白了这一点。

事实证明,为了触发DataReceived处理程序,需要将“串行端口”的DTREnabled属性设置为True(而不是false)。 任何有关串行端口通信的MSDN文档中都从未设置此设置。 如果您正在阅读本文,并且遇到类似的问题,请确保将DTREnabled和RTSEnabled都设置为true,甚至将Handshaking设置为RequestToSend。 也许其中之一或全部将最终得到解决。

就我而言,仅DTREnabled需要为真。 我不太了解这些设置的作用,但是您已经掌握了这些设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM