【问题标题】:How to detect FTDI device in use?如何检测正在使用的 FTDI 设备?
【发布时间】:2016-05-24 10:59:17
【问题描述】:

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

当我运行应用程序的多个实例时出现问题,因为函数 FT_CreateDeviceInfoList 无法提供有关当前正在使用的设备的任何附加信息。

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

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

我该怎么做?

感谢您的想法:)

【问题讨论】:

    标签: c++ usb ftdi


    【解决方案1】:

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

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

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

    【讨论】:

    • 不幸的是,这些设备可以通过官方软件和我的特殊应用程序进行操作,因此在您编写的所有情况下锁定都不起作用:(
    【解决方案2】:

    我会这样做

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

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

    【讨论】:

      猜你喜欢
      • 2017-12-16
      • 2021-08-31
      • 1970-01-01
      • 2012-08-26
      • 2013-03-27
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多