如何在COM1保持打开状态后关闭它

本文关键字:状态 COM1 | 更新日期: 2023-09-27 18:20:22

我在Visual Studio C#中工作,打开了一个串行端口,但没有正确关闭它。现在我无法运行程序来尝试关闭它。我知道是我在使用它,但不知何故我失去了对它的控制。。?有没有其他方法可以关闭它?

我试过退出视觉工作室,但它仍然说我的访问被拒绝。我已经拔掉并重新插入了我正在使用的实际对象。我的下一步是重新启动计算机,但我不想每次我都这样做(这很频繁!)

顺便说一句,我在实验室工作,对这台电脑没有管理权限。另一个注意事项是,错误的文本是"拒绝访问端口‘COM1’。"

为了回应那些要求代码的人,。。comPort.Open();你还在找什么?

private void updateAccuSwayData() {
    Console.WriteLine("Update thread started...");
    comPort.Open();
    comPort.WriteLine("Q");
    Thread.Sleep(5);
    while (!cancelRequested) {
        //do stuff...
    }
    Console.WriteLine("Update thread halted.");
    comPort.WriteLine("R");
    comPort.Close();
}

简而言之,我在调试过程中结束了调试会话。我只知道这些。

如何在COM1保持打开状态后关闭它

您可能需要重新启动以清除此问题,尽管一种方法是使用Process Explorer并搜索'Device'Serial0的句柄。然后,您可以看到关闭此句柄是否有效,但可能无效。

为了防止将来发生这种情况,您需要将comPort.Close()调用放在finally-block中:

try
{
    comPort.Open();
    // ...
}
finally
{
    // Almost always ensures the COM port will be cleaned up,
    // however, the MSDN remarks state that the port may not
    // be closed immediately.
    comPort.Close();
}