我有一个关于从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
事件,这是我表单的一部分 . 我有点不知所措,我've done a nonexistent amount of work with Arduino or hardware so I'我不完全确定我的调试选项 .
如果有人有任何调试建议或想法我做错了我会非常感激 . 另外,如果我没有提供任何信息,请告诉我需要什么,我会编辑它!
谢谢你,-K
1 回答
最后在找到一个关于设置的模糊评论之后想出了这一点 .
事实证明,我需要将串行端口的DTREnabled属性设置为True而不是false,以便触发DataReceived处理程序 . 从未在任何有关串行端口通信的MSDN文档中设置此设置 . 如果您正在阅读此问题并遇到类似问题,请确保将DTREnabled,RTSEnabled都设置为true,甚至可能将Handshaking设置为RequestToSend . 也许这些中的一个或全部将最终修复它 .
在我的情况下,只有DTREnabled需要是真的 . 我不太明白这些设置是做什么的,但是你有它 .