c# 编写串口通讯程序,测试时发现通讯过程中有问题,请高手指点

c#编写串口通讯程序,测试时发现通讯过程中断开通讯线会出现程序错误,我想问如何捕捉这些错误呢?线路正常后由如何恢复通信呢?用下面的代码恢复通信后只能持续几秒,就出错!提示... c# 编写串口通讯程序,测试时发现通讯过程中断开通讯线会出现程序错误,我想问如何捕捉这些错误呢?
线路正常后由如何恢复通信呢?
用下面的代码恢复通信后只能持续几秒,就出错!提示是否有足够的资源访问权限!请高人指点!
bool serialPortErr = true;
while (true)
{
string[] ports = SerialPort.GetPortNames();
foreach (string port in ports)
{
if (port == serialPort.PortName)
serialPortErr = false;
}
Thread.Sleep(1000);
if (serialPortErr == false)
{
serialPort.Open();
break;
}
}

下面是复制下来的错误信息:

未处理 System.UnauthorizedAccessException
Message="对端口的访问被拒绝。"
Source="System"
StackTrace:
在 System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str)
在 System.IO.Ports.InternalResources.WinIOError()
在 System.IO.Ports.SerialStream.Dispose(Boolean disposing)
在 System.IO.Ports.SerialStream.Finalize()
InnerException:

程序中用到了Thread.Sleep(200)等待接收数据,感觉错误就是Thread.Sleep引发的!怎么解决呢?
展开
 我来答
blakli123
2012-05-16 · TA获得超过272个赞
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:247万
展开全部
try
{
//出现错误的代码段
}
catch(Exception e)
{
e.Message就是错误的描述
}
恢复通信方法可以加个定时器定时检查IsOpen状态
追问
恢复后只能持续通信几秒,这是为何?
coffee_tee
2012-05-16
知道答主
回答量:11
采纳率:0%
帮助的人:4.2万
展开全部
try catch
应该知道怎么做了吧
追问
错误依然
追答
通讯的时候你断开线路,肯定会出错的额,是发送,接收,打开串口的代码都可能会出错,看他执行到哪里了,你可以价格btn,单击后设断点单步执行,或者加上try catch不同的地方显示不同的错误提示,不就知道是哪里的错误了吗?

你想通讯的时候拔掉线,又不报错,你觉得这样的程序可靠吗????

楼下的那位已经给出实例了额
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式