Serial Communication in 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 闪烁,导致我相信通过 GUI 发送C++是有效的,但关于接收消息的任何内容都不起作用。
我的一些代码:
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
在找到一个谈论设置的晦涩评论后,终于想通了这一点。
事实证明,我需要将串行端口的 DTREnabled 属性设置为 True 而不是 false,以便触发 DataReceived 处理程序。此设置从未在任何有关串行端口通信的 MSDN 文档中设置。如果您正在阅读本文并遇到类似的问题,请确保 DTREnabled、RTSEnabled 都设置为 true,甚至可能将握手设置为请求发送。也许其中一个或所有这些最终会修复它。
就我而言,只有DTREnabled需要是真的。我不太明白这些设置的作用,但你有它。
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- 无法在 Visual Studio 2010 中构建 Allegro C++ 程序
- 是否可以在Linux上使用.Net Core 3.1创建C++/CLI代码的C#DLL
- Poco::Net::FTPClientSession 在 open() 方法上挂起 129 秒,如果 ftp 主机不存
- C++ DLL(不是 CLI)是否可以调用 .NET Core 3.0 委托?
- System.AccessViolationException:shared_ptr C# .NET 和 C++ 应用程
- C++/CLI targetting .NET Core 3.1
- Visual Studio 2013,错误 MSB8020:找不到 Visual Studio 2010 的生成工具
- 是否有可能构建面向Linux和Windows的.Net Core C++ / CLI应用程序?
- VisualC++ 2010 有没有办法找出有关未处理异常错误的更多详细信息
- 双线程应用比单线程应用慢 C++ (VC++ 2010 Express).如何解决?
- Pinvoke与GCC在VB.net 2010中编译的c++dll有关
- Serial Communication in C++ (Visual Studio 2010, .NET 4.5)
- 微软Visual c++ 2010 . net框架不存在
- 在VS.NET 2010中构建c++单元测试项目时链接错误
- 我如何使用这个系统?. Net命名空间导入到Visual Studio 2010 c++项目中
- 如何在 Visual Studio 2010 中生成不依赖于 .NET 4 SDK DLL/库文件的可执行文件?
- 在 Visual Studio 2010 中从 .NET 项目启动C++项目