如何关闭另一个程序使用的serialport

时间:2012-06-25 03:57:26

标签: c# serial-port

我正在写一个SerialPort程序。有时,当我想打开SerialPort时,会抛出UnauthorizedAccessException:拒绝访问COM1。这是因为另一个程序(由其他人编写而我没有其源代码)正在使用COM1,并且该程序在退出时不会关闭COM1。 我想问两个问题:

  1. 如何在使用时将COM1与我的代码(尤其是C#代码)关闭 另一个程序?
  2. 如果我无法用C#代码关闭COM1,如何在Windows操作系统中关闭或释放COM1?
  3. 感谢。

2 个答案:

答案 0 :(得分:6)

此Stack Overflow问题是第一步:How do I get the list of open file handles by process in C#?

完成后,您可以修改那里的代码以关闭句柄,或者只是终止打开句柄的进程。

然而,这非常冒险*,容易出现问题,需要根据特定部署(x32 vs x64 vs ARM)以及'COM1'在该特定计算机上映射到的内容进行重新设计。

风险:如果正在使用串行端口,例如,在手机或类似设备上安装新固件 - 关闭端口可能会导致设备变砖。如果端口用于传输数据,则关闭端口可能会导致数据丢失。

祝你好运。但是,如果您破坏系统或丢失数据,请不要责怪我。

答案 1 :(得分:-2)

您可以通过调用

关闭C#中的通讯端口
serialPort.Close();

但除非仅由您打开,否则无法关闭COMM端口。

确保在关闭应用程序时关闭通讯端口。如果您可以放置​​代码,我们可以查看它。