7

コンピューターに 2 つの Web カメラを接続すると、/dev フォルダーに一覧表示されました: /dev/video0; /dev/video1.

入力でウェブカメラのシリアル番号を取得する C コードを書くのを手伝ってくれませんか: /dev/video[0;1]

4

4 に答える 4

0

libusbをいじってみると、標準的なgetSerialNumber()方法があるようです。残念ながら、すべての USB デバイスがこれを実装しているわけではありません。None を返す 4 ドルの安価なウェブカメラをいくつか持っています。これらのインターフェイスは、VendorID や ProductID などの他のメタデータを公開します。一部のコードでは、これらを一意の識別子として使用しようと試みていますが、特に同じメーカーとモデルのデバイスが複数ある場合は、一意であるとは限りません。

しかし、デバイスのシリアル番号を取得したと仮定すると、次の問題は、対応する /dev/videoN ファイルを特定することです。古いバージョンの libusb がインストールされているため、USB デバイスの完全な sysfs パスを返すメソッドが機能しませんでした。そのため、代わりに からの出力を破棄しましたhwinfo。カメラに対応するすべてのチャンクを抽出し、それらから次のようなピースを抽出しました。

SysFS BusID: 1-1.2:1.0

USB デバイスは実際には複雑なツリーを形成し、BusIDはデバイスがそのツリー内のどこにあるかをエンコードします。

次に、その BusID を使用して、デバイスがファイル システム内のどこに存在するか、およびビデオ パスを次の場所にある必要があります。

/sys/bus/usb/devices/<BusID>/video4linux/

これはディレクトリで、その中には /dev にあるものと一致する videoN ファイルがあります。

于 2015-04-16T00:58:01.580 に答える
-1

libusbを使用lsusbていることがわかります。特にusb デバイスの処理と列挙のための多くの機能があります。libudevも関連している可能性があります。

または、popenコマンドlsusb...

于 2013-09-04T05:09:52.417 に答える