hxy*_*yhi 2 linux hardware monitors
目标是获取Linux平台下显示器的制造商和产品ID以及序列号。我最终需要在 C++ 程序中获取这些信息。不过我也接受命令行获取方式。
此类信息可通过/sys/class/drm子系统获得。诸如此类的工具xrandr广泛使用它。现在,这个子系统中的每个显示器都有一个目录,有一个文件edid,扩展显示标识数据。
在基于 Debian 的系统上有两个可用的软件包,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
Run Code Online (Sandbox Code Playgroud)
所以我建议安装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
Run Code Online (Sandbox Code Playgroud)
另一个命令get-edid似乎连接到 i2c 总线,并自动确定连接了哪些显示器以及哪些数据可用。现在,当然这不是 C++ 方法,但这两个工具很可能是用 C 编写的。考虑查看它们的源代码并注意它们使用的库。
| 归档时间: |
|
| 查看次数: |
3651 次 |
| 最近记录: |