【发布时间】:2009-01-13 14:39:32
【问题描述】:
我有一个应用程序必须在另一个应用程序之后运行。第二个应用程序有一个错误会导致 COM 端口在特定情况下不关闭。
我想在我的应用程序中以编程方式关闭所有 COM 端口,以确保不会报告有关关闭端口的错误。如果我不拥有打开 COM 端口的对象,是否有可能?
我需要 .NET Framework、C# 的解决方案。
【问题讨论】:
标签: c# serial-port unlock
我有一个应用程序必须在另一个应用程序之后运行。第二个应用程序有一个错误会导致 COM 端口在特定情况下不关闭。
我想在我的应用程序中以编程方式关闭所有 COM 端口,以确保不会报告有关关闭端口的错误。如果我不拥有打开 COM 端口的对象,是否有可能?
我需要 .NET Framework、C# 的解决方案。
【问题讨论】:
标签: c# serial-port unlock
没有好的、简单的方法:
【讨论】:
我最近遇到了这个问题,并且有一点要补充... 大多数 COM 端口驱动程序在设备管理器中启用和禁用设备时“解锁”端口。这意味着解决方案中描述了完成此任务的(C#)方式:
Win32 API function to programmatically enable/disable device
为 COM 端口使用该解决方案需要了解的信息是:
由于您说要重置 所有 端口,因此您需要修改该示例中的库以通过更改循环遍历所有端口:
// Find the index of our instance. i.e. the touchpad mouse - I have 3 mice attached...
int index = GetIndexOfInstance(diSetHandle, diData, instanceId);
// Disable...
EnableDevice(diSetHandle, diData[index], enable);
到这样的事情:
for (int index = 0; index < diData.Length; index++)
{
EnableDevice(diSetHandle, diData[index], enable);
}
【讨论】: