我使用的是.NET 4.5.2。在我的一个ViewModel中,我需要访问连接到我的设备的串行端口COM8,这是一个提供连续数据流的传感器。我可以通过Tera Term,Windows命令提示符和LabView应用程序访问和发送命令到串行端口,因此端口不会被其他进程占用 - 我知道这些帖子通常就是这种情况,但是我是非常肯定这不是这种情况。我尝试使用Process()类通过C#向端口发送命令,但这不起作用,所以它似乎与C#有关。
我看到这篇文章:Force a COM port to close,但这似乎也不是问题。
我尝试过的其他事情:
还有一些我现在不记得的事情。任何有关这种情况的建议将不胜感激!我很乐意提供您可能需要的更多信息。
打开端口的代码:
if (port == null)
{
port = new SerialPort(location, baudRate);
port.ReadBufferSize = 16384;
}
if (!port.IsOpen)
{
port.Open();
}
更新
如果我将上面的代码复制到启动方法中,它可以正常工作。它似乎无法在我的ViewModel中工作。我认为这是一个线程问题,但我能够在主线程中调用代码并且它不起作用。希望这会让我更接近解决方案!
更新2:
上面的代码在我的登录方法的代码隐藏中也可以正常工作,但是没有其他代码隐藏。现在超级迷茫。