积极答复者
我在.net的serialport类中读取串口数据的时候我捕获到如下的异常:“读串口错误:由于线程退出或应用程序请求,已放弃I/O操作”

问题
-
我在.net的serialport类中读取串口数据的时候我捕获到如下的异常:“读串口错误:由于线程退出或应用程序请求,已放弃I/O操作”
我的code如下:
try
{
sp.Write(message, 0, message.Length);}
catch
{
/// MessageBox.Show("写串口错误: " + e.Message);
return false;
}
System.Threading.Thread.Sleep(300);
try
{
GetResponse(ref response);
}
catch(Exception er)
{
MessageBox.Show("读串口错误: " + er.Message);
return false;
}
技术无止境!- 已移动 Sheng Jiang 蒋晟Moderator 2009年7月13日 19:24 .Net基础类库问题 (发件人:Visual C#)
答案
全部回复
-
bool flag = false;//是否读完整包数据
try
{
while (this.serialport.BytesToRead >= 0)
{
//如果数据包长度等于13,获取数据长度
//if (ReceiveData.Length == 13)
//{
// int length = int.Parse(ReceiveData.Substring(4, 2));//数据的长度
// PackgeLength = 3 + 2 + length;//数据包的总长度(字节个数)
//}if ((ReceiveData.Length > 0) && (ReceiveData.Length == 13))//如果一整包数据读取完毕
{
//一包数据已经结束
flag = true;
break;
}
//如果没有读取完一整包,则继续读取
int data = 0x00;
data = this.serialport.ReadByte();
ReceiveData += (char)data;
//ReceiveData = ReceiveData.ToUpper();
}if (flag)
{
//safeAddtrText(ReceiveData);//显示数据的委托
PrintCommand(ReceiveData);
ReceiveData = "";//清空已经接收的数据
}
}
catch
{
}
把try,catch去掉后也出现这个问问题,不过加上后就解决问题了呵呵。
fang