2

我的程序使用串行通信端口,例如 COM1。port in use但有时由于程序故障或其他原因,此端口会被锁定在某个状态。

假设另一个软件使用它。我可以强制使用该端口吗?

无论如何,我想使用那个端口。可能吗?

4

1 回答 1

0

@MaxMommersteeg 如果有 DLL func ,WinApi 之类的方法,那就太好了。

获得可用的 COM 端口并不难,而且比您想象的要容易。

public List<string> GetAllAvailableComPorts()
{
     return System.IO.Ports.SerialPort.GetPortNames().ToList();
} 

有关 GetPortnames 方法,请参阅获取端口名称方法(MSDN)。

上面的代码将返回一个List<string>充满所有可用COM 端口的信息。您可以使用以下代码调用它:

//Create new list<string>
List<string> availableComPorts = new List<string>();

//Fill list with list<string> returned from GetAllAvailableComports method.
availableComPorts = GetAllAvailableComports();

列表中的所有 COM 端口均可,当前正在使用的 COM 端口不会出现在列表中。您可以使用 List<string> 检查 COM1 是否可用。如果是这样,您可以连接到它,如果没有,您可以给用户一条消息,表明它正在使用(当连接到不可用的端口时,用户将收到“访问被拒绝”消息。)

我认为您正在使用Windows Forms,因为您标记了 C# 和 SerialPort 并且我认为ASPWPF不能使用 SerialPort 类(如果我错了,请纠正我)。所以我会创建一个列表框,填充所有可用的 COM 端口,并让用户选择要使用的 COM 端口。用户无法选择错误的 COM 端口,因为它们不在列表中。

如果您需要有关此的更多信息,可以在下面发表评论。自从我上次创建的应用程序也使用串行端口连接以来,我仍然有足够的代码。

我想在下面向您推荐我自己的问题。它有更多信息:

获取可用 COM 端口列表

于 2013-09-30T16:31:39.353 回答