所以我一直在奋斗这个问题 https://stackoverflow.com/questions/14885288/io-exception-error-when-using-serialport-open大约一周了,我想我知道这个问题,但我不想在那里报告答案,直到我把它固定下来。
简而言之,当我尝试使用SerialPort.Open()
命令。事实证明,这是很常见的,大多数终端程序实际上也是这样做的,但它们只是忽略它。请阅读我上面的帖子以了解完整的故事。现在我想做的是忽略 IOException 但是还是打开串口。我不能用 try/catch 来做到这一点,或者至少我不知道如何做。
我想知道是否有一种方法可以尝试某些事情并以某种方式声明“我知道会抛出一个问题,这是一个安全的问题,我选择忽略异常并继续执行任务”。需要明确的是,我不想忽略该错误然后继续。我想忽略该错误并仍然完成操作.
以下是我的最佳猜测,但它不起作用。
try
{
serialPort1.Open();
}
catch (System.IO.IOException)
{
MessageBox.Show("An IO Exception occurred.");
}
finally
{
//SAFELY IGNORE ERROR AND DO TASK ANYWAY HERE
}
如果有人能帮助我解决这个问题,我将不胜感激。
EDIT: If I just add the code serialport1.Open
afterwards I get:
这基本上与没有 try/catch 时发生的情况相同。我想做的是说我正在尝试这样做:我不在乎它会引发错误,无论如何都要这样做。
一般来说,如果您有一行代码导致异常,并且无论异常是否发生,都需要完成额外的工作,那么您应该只使用catch
,然后把你想做的事情放在外面(之后)try
/catch
.
对于您的特定情况(在您的其他问题中描述),您正在处理 .NET 的可怕破坏System.IO.Ports.SerialPort
。打开串口成功,但是SerialPort.Open
是一个复杂的方法,它做了很多额外的事情,并且如果任何额外的(和不必要的)事情失败,则坚持关闭端口。我发现了其他问题System.IO.Ports.SerialPort
以及(例如无法通过内部设备名称打开端口)。 IMO,你越早摆脱System.IO.Ports.SerialPort
更好。
您可以 p/调用 Win32 串行端口函数(CreateFile
其余的是here http://msdn.microsoft.com/en-us/library/windows/desktop/aa363195.aspx)或找到已经编写了包装器库的人(我做到了,但它不公开)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)