一、简介

最近写一个读取显示器型号的东西,了解了EDID这个数据结构。EDID的全称是Extended Display Identification Data(扩展显示标识数据),VGA、DVI的EDID由主块128字节组成,HDMI的EDID增加扩展块(128字节),扩展块的内容主要是和音频属性相关的,DVI和VGA没有音频,HDMI自带音频,扩展块数据规范按照CEA-861x标准定义,未来可能增加到512或256的整数倍。

其中包含有关显示器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串等等。形象地说,EDID就是显示器的身份证、户口本、技能证书等证件的集合,目的就是告诉别人我是谁,我从哪来,我能干什么。

参考资料:EDID的简介和解析 - 花生红枣眼泪和小米 - 博客园 (cnblogs.com)

二、解析

1.注册表信息

在Windows中连接过的显示器会被记录在注册表中 计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\DISPLAY\CMN15F4\4&39f8f762&0&UID265988\Device Parameters,其中 CMN15F4\4&39f8f762&0&UID265988根据显示器型号代码而定。在这个项目下包含一个EDID的二进制数据。
注册表信息

2.软件解析

这里我们可以用Monitor Asset Manager这款软件解析EDID文件。
Monitor Asset Manager

为了更加方便转换,最好再配合WinHex这款软件,主要用到数据解释器。
WinHex

3.主要关注内容

偏移地址数值解释
0x08-0x090D AE制造商名称
0x0A-0x0BF4 15产品代码
0x0C-0x0F00 00 00 00产品序列号
0x1006生产周
0x111B生产年份
0x1522最大水平图像尺寸,单位CM
0x1613最大垂直图像尺寸,单位CM
0x36-0x3759 6F像素时钟/10000
0x3880水平活动像素数
0x39A0水平blanking
0x3A70高四位:水平活动像素数,高4位与0x38组合
低四位:水平blanking,高4位与0x39组合
0x3B38垂直活动像素数
0x3C3E垂直blanking
0x3D40高四位:垂直活动像素数,高4位与0x3B组合
低四位:垂直blanking,高4位与0x3C组合
  1. 制造商名称:3个字母组成,基于压缩的ASCII码,例如 00001=A… …11010=Z,这里 0x08-0x09一共16位(0-15),其中第 0位代表符号,1-5位表示第一个字母以此类推,共三个字母。将 0x08-0x09中的 0D AE转换后为 CMN
  2. 产品代码:固定为 4位16进制数,即两个字节。将 0x0A-0x0B中的 F4 15转换后为 15F4
  3. 产品序列号:即产品的流水号(数值型),直接转成16进制或以ASCII格式转换。序列号也可用字符型,在后面DTD部分定义。我这个显示器没记录此序列号。
  4. 生产周:即在当年中的生产周,范围 1\~52,注意 0为无效值。06为第 6周。
  5. 生产年份:规定1990开始计算,即 1990年为 0,然后递增计算。1B2017年。
  6. 像素时钟:将 0x36-0x37中的 59 6F转换十进制 28505,即为 285MHz
  7. 水平活动像素数:将 0x3A拆分 前4位,与 0x38拼接后得到 07 80,转换十进制 1920
  8. 垂直活动像素数:将 0x3D拆分 前4位,与 0x3B拼接后得到0438,转换十进制 1080
  9. 水平blanking:将 0x3A拆分 后4位,与 0x39拼接后得到 00 A0,转换十进制 160
  10. 垂直blanking:将 0x3D拆分 后4位,与 0x3C拼接后得到 00 3E,转换十进制 62
  11. 刷新率:像素时钟×10000÷[(水平活动像素数+水平blanking)×(垂直活动像素数+垂直blanking)]=28505×10000÷[(1920+160)×(1080+62)]≈120Hz。

三、下载

这是本次测试用的注册表文件:

Last modification:May 14, 2024
喜欢我的文章吗? 别忘了点赞或赞赏,让我知道创作的路上有你陪伴。