C#与arduino的串行通信

C#与arduino的串行通信,c#,serial-port,arduino,C#,Serial Port,Arduino,我正试图从我的arduino(莱昂纳多饰)向C#程序发送一个字符串 这是我的代码,我从msdn示例中复制来尝试理解它的功能。 我下面的arduino代码只是通过te com端口发送hello world,延迟1000 void setup () { Serial.begin(9600); } void loop(){ Serial.println("Hello World"); delay(1000); } 我的arduino正在使用我在C#程序中定义的COM7。当我运行bo

我正试图从我的arduino(莱昂纳多饰)向C#程序发送一个字符串

这是我的代码,我从msdn示例中复制来尝试理解它的功能。 我下面的arduino代码只是通过te com端口发送hello world,延迟1000

void setup ()
{

 Serial.begin(9600);

 }


void loop(){

 Serial.println("Hello World");
 delay(1000);
}
我的arduino正在使用我在C#程序中定义的COM7。当我运行bot程序时,C#程序永远不会出现在datareceived事件处理程序中。因此没有收到任何数据。我真的很想让它工作:)


善良的问候

控制台应用程序没有消息循环,因此它们自然不会响应事件。您有一个线程,它将被卡在
控制台上阻塞。ReadKey()
。使用串行端口的同步读取,或者,如果希望使用基于事件的模型,请将此代码移动到基于windows的应用程序

对于同步示例,请执行以下操作:


上面只是一个摘录-完整的示例演示了设置超时值等。

我将代码切换到windows窗体应用程序,但它仍然不起作用。然后我找到了一个关于与C#的串行通信的主题,关于arduino leonardo

我必须这样做:

        serial.DtrEnable = true;
        serial.RtsEnable = true;

我认为我的问题已经解决了。

@ J.。谢谢你的回复。我试试这个。现在,在两天过去之前,你不能接受自己的答案,但你应该抽出时间回来接受。这标志着问题已解决且已完成。哇,谢谢。它在我的Uno上工作,但后来换成了莱昂纳多,停止了工作。这好像是票
while (_continue)
{
    try
    {
        string message = _serialPort.ReadLine();
        Console.WriteLine(message);
    }
    catch (TimeoutException) { }
}
        serial.DtrEnable = true;
        serial.RtsEnable = true;