我的程序使用串行通信端口,例如 COM1。port in use
但有时由于程序故障或其他原因,此端口会被锁定在某个状态。
假设另一个软件使用它。我可以强制使用该端口吗?
无论如何,我想使用那个端口。可能吗?
我的程序使用串行通信端口,例如 COM1。port in use
但有时由于程序故障或其他原因,此端口会被锁定在某个状态。
假设另一个软件使用它。我可以强制使用该端口吗?
无论如何,我想使用那个端口。可能吗?
@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 并且我认为ASP和WPF不能使用 SerialPort 类(如果我错了,请纠正我)。所以我会创建一个列表框,填充所有可用的 COM 端口,并让用户选择要使用的 COM 端口。用户无法选择错误的 COM 端口,因为它们不在列表中。
如果您需要有关此的更多信息,可以在下面发表评论。自从我上次创建的应用程序也使用串行端口连接以来,我仍然有足够的代码。
我想在下面向您推荐我自己的问题。它有更多信息: