我打开后如何关闭COM1?

时间:2012-01-16 18:55:30

标签: c# visual-studio serial-port

我正在使用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();
}

简而言之,我结束了我的调试会话,而它似乎处于中间状态。这就是我所知道的全部。

1 个答案:

答案 0 :(得分:5)

您可能需要重新启动才能清除此问题,但有一种方法是使用Process Explorer并搜索\Device\Serial0的句柄。然后,您可以查看关闭此句柄是否有效,但它可能不会。

为了防止以后发生这种情况,您需要将comPort.Close()电话放在finally - 阻止:

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();
}