我想列出所有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设备并重新连接,直到我再次使用它们(使用任何软件)。
答案 0 :(得分: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);
}
}
}