目標は、Linuxプラットフォームでモニターの製造元、製品ID、およびシリアル番号を取得することです。最終的にはC++プログラムからこの情報を入手する必要があります。しかし、私はコマンドラインメソッドも受け入れます。
ベストアンサー1
この情報は/sys/class/drm
サブシステムを通じて提供されます。このようなツールxrandr
が広く使用されています。このサブシステムの各ディスプレイには、ファイルを含むディレクトリがありますedid
。識別データの拡張表示。
Debianベースのシステムでも2つのパッケージを使用できますedid-decode
。read-edid
どちらもうまく動作しているようですが、古いモデルと古いモデルではエラーを返しread-edid
ながらも十分に動作するようです。edid-decode
EDID block does NOT conform to EDID 1.3!
Detailed block string not properly terminated
EDID block does not conform at all!
Bad year of manufacture
read-edid
したがって、パッケージをインストールすることをお勧めします。インストールが完了したら、parse-edid
次のコマンドを使用します。
$ parse-edid < /sys/class/drm/card0-HDMI-A-1/edid
Checksum Correct
Section "Monitor"
Identifier "X20G-NagaIII"
ModelName "X20G-NagaIII"
VendorName "SPT"
# Monitor Manufactured week 42 of 2005
# EDID version 1.3
# Digital Display
DisplaySize 410 310
Gamma 2.20
Option "DPMS" "true"
Horizsync 30-92
VertRefresh 40-86
# Maximum pixel clock is 170MHz
もう一つのコマンドは、get-edid
i2cバスに接続して、どのディスプレイが接続されていて、どのデータが利用可能かを自動的に把握するようです。もちろん、これはC ++アプローチではありませんが、これら2つのツールはおそらくCで書かれています。ソースコードを見て、どのライブラリを使用しているかを記録してください。