Loading... # 一、简介 最近写一个读取显示器型号的东西,了解了EDID这个数据结构。EDID的全称是Extended Display Identification Data(扩展显示标识数据),VGA、DVI的EDID由主块128字节组成,HDMI的EDID增加扩展块(128字节),扩展块的内容主要是和音频属性相关的,DVI和VGA没有音频,HDMI自带音频,扩展块数据规范按照CEA-861x标准定义,未来可能增加到512或256的整数倍。 其中包含有关显示器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串等等。形象地说,EDID就是显示器的身份证、户口本、技能证书等证件的集合,目的就是告诉别人我是谁,我从哪来,我能干什么。 参考资料:[EDID的简介和解析 - 花生红枣眼泪和小米 - 博客园 (cnblogs.com)](https://www.cnblogs.com/beyond-rxl/p/9266997.html) # 二、解析 ## 1.注册表信息 在Windows中连接过的显示器会被记录在注册表中 `计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\DISPLAY\CMN15F4\4&39f8f762&0&UID265988\Device Parameters`,其中 `CMN15F4\4&39f8f762&0&UID265988`根据显示器型号代码而定。在这个项目下包含一个EDID的二进制数据。 ![注册表信息](https://www4.iceyer.cn:444/usr/uploads/2023/10/292859825.png) ## 2.软件解析 这里我们可以用[Monitor Asset Manager](https://www4.iceyer.cn:444/usr/uploads/2023/10/3447500159.zip)这款软件解析EDID文件。 ![Monitor Asset Manager](https://www4.iceyer.cn:444/usr/uploads/2023/10/576639419.png) 为了更加方便转换,最好再配合[WinHex](https://www4.iceyer.cn:444/usr/uploads/2023/10/1482702866.zip)这款软件,主要用到数据解释器。 ![WinHex](https://www4.iceyer.cn:444/usr/uploads/2023/10/3576086409.png) ## 3.主要关注内容 | 偏移地址 | 数值 | 解释 | | :-------: | :---------: | :--------------------------------------------------------------------------------- | | 0x08-0x09 | 0D AE | 制造商名称 | | 0x0A-0x0B | F4 15 | 产品代码 | | 0x0C-0x0F | 00 00 00 00 | 产品序列号 | | 0x10 | 06 | 生产周 | | 0x11 | 1B | 生产年份 | | 0x15 | 22 | 最大水平图像尺寸,单位CM | | 0x16 | 13 | 最大垂直图像尺寸,单位CM | | 0x36-0x37 | 59 6F | 像素时钟/10000 | | 0x38 | 80 | 水平活动像素数 | | 0x39 | A0 | 水平blanking | | 0x3A | 70 | 高四位:水平活动像素数,高4位与0x38组合<br />低四位:水平blanking,高4位与0x39组合 | | 0x3B | 38 | 垂直活动像素数 | | 0x3C | 3E | 垂直blanking | | 0x3D | 40 | 高四位:垂直活动像素数,高4位与0x3B组合<br />低四位:垂直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`,然后递增计算。`1B`为 `2017`年。 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。 # 三、下载 这是本次测试用的注册表文件:<button class=" btn m-b-xs btn-light btn-rounded " onclick="window.open('https://www4.iceyer.cn:444/usr/uploads/2023/11/3698054097.zip','_blank')">注册表EDID.zip</button> Last modification:May 14, 2024 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 7 喜欢我的文章吗? 别忘了点赞或赞赏,让我知道创作的路上有你陪伴。
One comment
你的文章充满了欢乐,让人忍不住一笑。 http://www.55baobei.com/dtOp9Bs18y.html