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
。第一次有效,第二次无效。我不知道为什么。如果有人知道原因,请帮帮我。谢谢。
您应该检查字符串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);
之类的。