HDMI 连线获取EDID数据及解析相关

名词解释

延伸顯示能力識別Extended display identification data,簡稱EDID)是指螢幕解析度的資料,包括廠商名稱與序號。一般EDID存在於顯示器PROMEEPROM內。一般如要讀取EDID都是透過I2Cslave address0x50[1]目前HDMI 1.0 - 1.3c使用EDID結構1.3

市场上显示器五花八门,一般我们连接电脑之后都是十分方便的适配,甚至连分辨率啥的都不用调。这就是因为我们EDID的功劳 ,EDID是显示器存储的关于显示器的一些基本信息,例如分辨率,声音支持的格式,厂商ID,机器型号等。

物理结构

喜欢玩游戏的童鞋 拿手机投屏到电视机打荣耀也可以这样操作

若要使用有線連接,必須具備以下設備:

• HDMI 線
• HDMI 輸出線
• 支援 HDMI 功能的電視型號
• 支援 HDMI 功能的行動裝置

参照三星的接连

 

HDMI 连线获取EDID数据及解析相关_第1张图片

获取EDID数据:

PC电脑EDID数据存放路径:

通过regedit(注册表)-HKEY_LOCAL_MACHINE/STYTEM/ControlSet001/Enum/DISPLAY 选择所属的显示屏编号 Device Parameters

HDMI 连线获取EDID数据及解析相关_第2张图片

获取到数据我们就可以进行EDID数据解析:

一份EDID数据是由128个字节的基本数据块(block0)与扩展数据块(block1)组成block0必须要有

block1 是可选的,没一个字节对应相应的display信息,参考如下文章

http://www.360doc.com/content/19/1018/17/496343_867654968.shtml

 也可以使用工具 Monitor Asset Manager 查看  EDID数据及解析结果

直接百度下载

我是在西西软件下载没有乱七八糟的东西 https://www.cr173.com/soft/9229.html

 HDMI 连线获取EDID数据及解析相关_第3张图片

 android 程序也可以获取EDID 核心代码:

通过一个广播来监听HDMI的插拔
public static String HDMIINTENT = "android.intent.action.HDMI_PLUGGED";
获取HDMI的状态
File switchFile = new
        File("/sys/devices/virtual/switch/hdmi/state");
if (!switchFile.exists()) {
    switchFile = new
            File("/sys/class/switch/hdmi/state");
}
如果前面都是2步都是true,获取EDID数据文件:
File localFile = new File("/sys/devices/virtual/graphics/fb1/edid_raw_data");
读取文件内容,然后进行对照前面提到的EDID数据块格式,解析EDID数据

对于HDMI设备连接状态的监听

https://juejin.im/post/59f04fcb6fb9a0451a759700

网课EDID解析

http://www.bamn.cn/course/volume/5919

 

希望以上内容对你有所帮助

你可能感兴趣的:(以上内容部分来自谷歌百度)