串口未收到任何数据

Kar*_*y S 0 c# serial-port arduino

我正在尝试编写一个简单的c#控制台应用程序,以从与已连接的Arduino通信的串行端口进行读取/写入。我遇到的问题是我可以写Arduino没问题,但是我无法接收任何数据。我的串行端口SerialDataReceivedEventHandler也从未被解雇过,但是我猜这两个问题是相关的。

我知道不是我的Arduino引起了这个问题,因为使用Arduino IDE时我可以毫无问题地接收数据。这是我现在明智的代码:

SerialPort sPort = new SerialPort();
sPort.PortName = SerialPort.GetPortNames()[0];
sPort.BaudRate = 9600;
sPort.Parity = Parity.None;
sPort.DataBits = 8;
sPort.StopBits = StopBits.One;
sPort.RtsEnable = false;
sPort.Handshake = Handshake.None;

sPort.DataReceived += new SerialDataReceivedEventHandler(sPort_dataReceived);
sPort.ErrorReceived += new SerialErrorReceivedEventHandler(sPort_ErrorReceived);

sPort.Open();

Console.Read();
sPort.Write("tt_calib");

while (true)
{
    if (sPort.ReadExisting() != string.Empty)
        Console.WriteLine(sPort.ReadExisting());
}
Run Code Online (Sandbox Code Playgroud)

我知道我没有在此代码中关闭端口,这不是问题,因为我每次都可以重新运行并打开它。这段代码也不是最终形式,我试图使read事件正常工作,以便对各种消息做出不同的反应。我已经阅读了每个问题,但没有找到解决方案。

这是在Windows 8.1上运行的C#.NET 4.5控制台应用程序

Kar*_*y S 5

最终这是一个愚蠢的简单问题。代替sPort.RtsEnable = false;它应该是true。现在所有事件都会触发,并且我能够阅读。


小智 5

由于 VS2019 中的 C# 可以跨平台使用,我在虚拟机 (Parallels+Windows10) 和主机 (MacOS) 上遇到了同样的问题。将 DTR 设置为 true 就可以了