0

我想列出所有 COM 端口,它们是 FTDI 控制器的虚拟端口。

为此,我尝试使用官方 .NET 包装器(“FTD2XX_NET”)为官方 FTDI 库提供的方法GetDeviceList和:OpenBySerialNumber

List<string> listResult = new List<string>();

FTD2XX.FT_DEVICE_INFO_NODE[] arrInfoNodes =
    new FTD2XX.FT_DEVICE_INFO_NODE[intALotMoreThanExpectedInfoNodeCount];

FTD2XX fObject = createFtdiInstance();

foreach (FTD2XX.FT_DEVICE_INFO_NODE node in arrInfoNodes)
{
    if (node == null)
    {
        break;
    }
    else
    {
        if (fObject.OpenBySerialNumber(node.SerialNumber) ==
            Ftdi.FTD2XX.FT_STATUS.FT_OK)
        {
            fObject.GetCOMPort(out strPortName);
            listResult.Add(strPortName);
        }
    }
}

我现在的问题是:在对所有节点进行迭代之后,必须拔下 ftdi 设备并重新连接,直到我可以再次使用它们(使用任何软件)。

4

1 回答 1

0

我需要做的就是(阅读我自己的帖子并)添加该行

fObject.Close();

在以下一个之后:

fObject.GetCOMPort(out strPortName);

所以完整的 foreach 循环如下所示:

foreach (FTD2XX.FT_DEVICE_INFO_NODE node in arrInfoNodes)
{
    if (node == null)
    {
        break;
    }
    else
    {
        if (fObject.OpenBySerialNumber(node.SerialNumber) ==
            Ftdi.FTD2XX.FT_STATUS.FT_OK)
        {
            fObject.GetCOMPort(out strPortName);
            fObject.Close();  // <<-- New Code here!
            listResult.Add(strPortName);
        }
    }
}
于 2013-05-08T13:02:59.663 回答