首页 文章

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

提问于
浏览
0

我有一个关于从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 回答

  • 0

    最后在找到一个关于设置的模糊评论之后想出了这一点 .

    事实证明,我需要将串行端口的DTREnabled属性设置为True而不是false,以便触发DataReceived处理程序 . 从未在任何有关串行端口通信的MSDN文档中设置此设置 . 如果您正在阅读此问题并遇到类似问题,请确保将DTREnabled,RTSEnabled都设置为true,甚至可能将Handshaking设置为RequestToSend . 也许这些中的一个或全部将最终修复它 .

    在我的情况下,只有DTREnabled需要是真的 . 我不太明白这些设置是做什么的,但是你有它 .

相关问题