串口未接收任何数据

时间:2014-02-04 19:53:22

标签: 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());
}

我知道我没有关闭此代码中的端口,这不是问题,因为我每次都能重新运行并打开它。这段代码也不是最终的形式,我试图让读取事件工作,这样我就能以不同的方式对各种消息作出反应。我已经阅读了似乎每个问题的内容,但我找不到任何解决方案似乎都可以解决问题。

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

3 个答案:

答案 0 :(得分:5)

它最终成为一个愚蠢的简单问题。而不是sPort.RtsEnable = false;它应该是true。现在所有事件都会触发,我可以阅读。

答案 1 :(得分:0)

mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

private static void DataReceivedHandler(
                    object sender,
                    SerialDataReceivedEventArgs e)
{
    SerialPort sp = (SerialPort)sender;
    string indata = sp.ReadExisting();
    Console.WriteLine("Data Received:");
    Console.Write(indata);
}

答案 2 :(得分:0)

我遇到了完全相同的问题,最后意识到我的硬件流控制设置是可配置的bios,而我的设置是 DISABLED ! h