尝试在C#中打开串口时发生UnauthorizedAccessException

时间:2018-05-08 19:26:49

标签: c# .net serial-port

我使用的是.NET 4.5.2。在我的一个ViewModel中,我需要访问连接到我的设备的串行端口COM8,这是一个提供连续数据流的传感器。我可以通过Tera Term,Windows命令提示符和LabView应用程序访问和发送命令到串行端口,因此端口不会被其他进程占用 - 我知道这些帖子通常就是这种情况,但是我是非常肯定这不是这种情况。我尝试使用Process()类通过C#向端口发送命令,但这不起作用,所以它似乎与C#有关。

我看到这篇文章:Force a COM port to close,但这似乎也不是问题。

我尝试过的其他事情:

  • 通过“设备管理器”卸载COM8设备。
  • 在"发布"中运行应用程序通过Visual Studio进行模式。
  • 以管理员模式运行Visual Studio。
  • 切换到.NET 4.5.2。

还有一些我现在不记得的事情。任何有关这种情况的建议将不胜感激!我很乐意提供您可能需要的更多信息。

打开端口的代码:

if (port == null)
{
    port = new SerialPort(location, baudRate);
    port.ReadBufferSize = 16384;
}     
if (!port.IsOpen)
{
    port.Open();
}

更新

如果我将上面的代码复制到启动方法中,它可以正常工作。它似乎无法在我的ViewModel中工作。我认为这是一个线程问题,但我能够在主线程中调用代码并且它不起作用。希望这会让我更接近解决方案!

更新2:

上面的代码在我的登录方法的代码隐藏中也可以正常工作,但是没有其他代码隐藏。现在超级迷茫。

0 个答案:

没有答案