C#端口数据接收不到';工作不正常

本文关键字:工作 不正常 数据 | 更新日期: 2023-09-27 18:25:16

我有一个arduino&c项目。我有一个port_DataReceived听众。在正常情况下,它工作正常。但每当我关闭serialPort1并再次打开它时,它都会给我一个错误。

这是听众:

void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    if (connect)
    {
        for (int i = 0; i < (10000 * serialPort1.BytesToRead) / serialPort1.BaudRate; i++);
        //Delay a bit for the serial to catch up
        String comingValue = serialPort1.ReadExisting();
        Console.WriteLine(comingValue); 
        String rslt = comingValue[0].ToString(); // This line give me an error
    }
}

这是错误:

"System.IndexOutOfRangeException"类型的未处理异常发生在WindowsFormsApplication1.exe 中

我正在检查comingValue,两次都是11。第一次有效,第二次无效。我不知道为什么。如果有人知道原因,请帮帮我。谢谢。

C#端口数据接收不到';工作不正常

您应该检查字符串IsNullOrEmpty()。您正在尝试按索引读取第一个字符。当comingValue。你会得到一个超出范围的索引。只有当实际存在一个(或多个)时才读取第一个字符

String comingValue = serialPort1.ReadExisting();
Console.WriteLine(comingValue); 
String rslt = "";
if(!string.IsNullOrEmpty(comingValue))
    rslt = comingValue[0].ToString();

这是一个用来拖延的坏习惯。。。

for (int i = 0; i < (10000 * serialPort1.BytesToRead) / serialPort1.BaudRate; i++);

这将在其他计算机上以不同方式运行。试试Thread.Sleep(10);之类的。