如何检测正在使用的FTDI设备?

问题描述 投票:0回答:3

我正在编写一个 C++ 应用程序,它通过 FTD2xx.dll 库使用多种类型的 FTDI 设备(我不使用虚拟 COM 端口)。我使用

FT_CreateDeviceInfoList
功能来搜索连接的设备。

当我运行应用程序的多个实例时,就会出现问题,因为函数

FT_CreateDeviceInfoList
无法在当前使用的设备上提供任何附加信息。

我需要区分两种简单的情况:

  1. 系统中不存在设备。
  2. 设备已连接,但当前正在使用。

我该怎么做?

谢谢你的想法:)

c++ usb ftdi
3个回答
0
投票

锁定文件可以吗?让您的应用程序在某处为每个设备创建一个 ~FTDI_DeviceName.lock 文件(如果在类 Linux 系统上则为 .FTDI_DeviceName.lock),并检查它是否存在。

然后通过您常用的功能检查设备是否存在,并且锁应确保您知道哪些设备正在使用。

这显然只有在您的应用程序是使用这些设备的唯一程序时才有效。


0
投票

我就是这样做的

系统中不存在设备。 您可以使用 GetDeviceList api 返回已连接设备的 FTDI 列表 并使用 SerialNumber 属性或 Description 属性来检查特定设备。

设备已连接,但当前正在使用。 如果设备已在使用中,则使用 api OpenBySerialNumber() 或 OpenByIndex() 将失败。


0
投票

有点晚了,但请检查使用 FT_GetDeviceInfoDetail 检索到的标志。第一位表示“打开”(由其他应用程序打开),第二位表示 HISPEED。

© www.soinside.com 2019 - 2024. All rights reserved.