このトピックに関連する質問を見つけましたが、この特定の質問に対する回答は見つかりませんでした(少なくとも解決策はありません)。
同じPC(Windows 8/Windows 10)で2種類のUSB /シリアルアダプターを使用しています。アダプターの1つにはFT245Rが内蔵されており、もう1つにはFT232Rが搭載されています(FTDIのFT_Progツールでデバイス情報を読み取るとわかります)。
私がやりたいのは、「標準」のFTDI VCPドライバーを備えたアダプターの1つと、libuskおよびpython(libftdi)を介した2番目のアダプター)を使用することです。
そのため、最初にFTDIシリアルドライバーをインストールし、次に1つのデバイスを取り外し、ZADIGツールを使用して残りのアダプターのドライバーをlibuskKに変更しました。
問題は、デバイスマネージャーを調べて、2番目のデバイスを再度接続すると、2番目のデバイス(ドライバーを変更しなかったもの)もlibusbkデバイスとして表示されることです。
これは、前述の両方のFTDIチップが同じPID 0x6001を使用しているためだと思います(ところで、PIDは、特定のデバイスに対してドライバーが選択される唯一のプロパティですか?)
(いずれかのアダプターのPIDを手動で変更せずに)問題のクリーンな解決策は何ですか?
特定のデバイスに対してドライバーが選択される唯一のプロパティはPIDです。
Windowsは、VID:PIDペアを使用して、使用するドライバーを検出します。これらは、これらのinf
ファイルで参照されます。
デバイスに別のドライバーが必要な場合は、PIDを変更する必要があります。
Zadigでは、回避策(一種)が可能です。libusb_win32フィルタードライバーを手動でインストールします。これにより、ドライバーを再インストールせずにlibusbKと通常のCOMポート操作を切り替えることができますが、同じVID:PIDペアを持つ他のすべてのデバイスに影響します。
ユースケースによっては、別のドライバーをインストールする必要のない解決策がある場合があります。 Pythonにlibftdiを使用するとおっしゃいました。私はあなたがいくつかのMPSSE機能を使いたいと思っていると仮定しています。この場合、FTDIがctypes pythonモジュールを介して提供するネイティブMPSSEdllを使用することもできます。ドライバーの交換は私にとって最適ではなかったため、このソリューションになります。いくつかあります。 MPSSE-SPIおよびMPSSE-I2Cのいくつかの例を含むネイティブDLLを使用するためのctypesの使用法を示すソース(例:「mpsseI2C ctypespython」の検索)。