既存のUSBハブとハブに接続されているデバイスを一覧表示するには、C ++プログラムを使用する必要があります。
次のコマンドを使用して、USBハブとハブに接続されているデバイスを端末から印刷できます。
lsusb
lsusb -v
私のC ++プログラムでこの機能を使用したいと思います。
プログラムでこれをどのように実行できますか? Qtアプリケーションで使用できるC ++クラスはありますか?
答え1
これは最も簡単なシミュレーションですlsusb
。
#include <stdio.h>
#include <usb.h>
main(){
struct usb_bus *bus;
struct usb_device *dev;
usb_init();
usb_find_busses();
usb_find_devices();
for (bus = usb_busses; bus; bus = bus->next)
for (dev = bus->devices; dev; dev = dev->next){
printf("Trying device %s/%s\n", bus->dirname, dev->filename);
printf("\tID_VENDOR = 0x%04x\n", dev->descriptor.idVendor);
printf("\tID_PRODUCT = 0x%04x\n", dev->descriptor.idProduct);
}
}
コンパイル用-lusb
答え2
これはFedoraです。 Debianベースのディストリビューションの場合も同様のことができます。
- プログラムを含むパッケージをインポートします。 "rpm -qif /usr/bin/lsusb"は、このプログラムがusbutilsパッケージで提供されることを示し、ホームページは次のとおりです。http://www.linux-usb.org
- そこに公開されているソースコードを確認してください。 (おそらくCになればそこから必要なものを簡単に抽出できるはずです。)
または:
- カーネルがUSB設定に関する情報を公開する場所/方法を学びます。例:/sys/bus/usb/devicesは完全な設定を表示します。
- 情報がどのように構成されているかを理解します(解析を容易にするために設定されているため、処理が難しくありません)。
切迫した解決策:
- lsusb(8) プログラム自体を実行し、出力から必要なデータを取得します。
しかし、GUIアプリケーションを書くには、C ++の代わりにPythonを使用することを検討してください。 GUIはパフォーマンスにほとんど影響を与えず、プログラマーの時間を節約することは効率の損失を相殺するのに十分です(ユーザーはそれに気付かないかもしれません)。