0

FTDI コントローラーの仮想ポートであるすべての COM ポートを一覧表示したいと考えています。

それを実現するために、公式 FTDI ライブラリの公式 .NET ラッパー (「FTD2XX_NET」) によって提供されるメソッド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 に答える