2016-05-24 40 views
0

私は、FTD2xx.dllライブラリ経由でいくつかのタイプのFTDIデバイスを使用するC++アプリケーションを作成しています(私は仮想COMポートを使用しません)。私は接続されたデバイスを検索するためにFT_CreateDeviceInfoList関数を使用します。使用中のFTDIデバイスを検出する方法は?

FT_CreateDeviceInfoList関数が現在使用されているデバイスに関する追加情報を配信できないため、アプリケーションの複数のインスタンスを実行すると問題が発生します。

  1. デバイスがシステムに存在していない:

    は、私は2つの簡単な例を区別する必要があります。

  2. デバイスは接続されていますが、現在使用されています。

どうすればよいですか?

ありがとうございます。

答えて

0

ロックファイルはありますか?あなたのアプリが各デバイスの〜FTDI_DeviceName.lockファイル(Linux系の場合は、.FTDI_DeviceName.lock)を作成し、その存在を確認してください。

通常の機能でデバイスの存在を確認すると、使用中のデバイスがあることを確認する必要があります。

これは明らかに、あなたのアプリがこれらのデバイスを使用する唯一のプログラムである場合にのみ機能します。

+0

残念ながら、デバイスは公式のソフトウェアと私の特別なアプリケーションの両方で動作することができます。したがって、あなたが書いているように、すべての場合にロックが機能しません。 – klasyc

0

これは私がやる方法です。

デバイスがシステムに存在しません。 GetDeviceList APIを使用して、 に接続されたデバイスのFTDIリストを返し、SerialNumberプロパティまたはDescriptionプロパティを使用して特定のデバイスを確認できます。

デバイスは接続されていますが、現在使用されています。 OpenBySerialNumber()またはOpenByIndex()は、デバイスがすでに使用されている場合に失敗します。

関連する問題