CN102455886B - 一种动态识别和配置外接显示器的方法 - Google Patents
一种动态识别和配置外接显示器的方法 Download PDFInfo
- Publication number
- CN102455886B CN102455886B CN201110185222.1A CN201110185222A CN102455886B CN 102455886 B CN102455886 B CN 102455886B CN 201110185222 A CN201110185222 A CN 201110185222A CN 102455886 B CN102455886 B CN 102455886B
- Authority
- CN
- China
- Prior art keywords
- data
- display
- edid data
- edid
- equipment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Controls And Circuits For Display Device (AREA)
Abstract
本发明涉及一种动态识别和配置外接显示器的方法,该方法主动定时探测外置VGA显示器,能够获取并根据当前显示器最佳分辨率和刷新率重新设置显卡的工作模式。本发明通过定时检测当前显示器中保存的EDID(扩展显示标识数据)数据信息,通过正确性检测以及差异比较,判断当前显示器是否已经被更换,如果发现当前显示器与先前不同,立即解析出当前显示器EDID中保存的最佳分辨率和刷新率,然后根据新的分辨率和刷新率重新设置显卡的工作模式,防止用户因为热插拔更换VGA显示器导致的显示器分辨率无法自动调整为最佳模式或者显卡输出超出分辨率取值范围导致显示器黑屏不正常输出。
Description
技术领域
本发明涉及显示器热插拔技术领域,尤其是一种通过定时获取显示器的EDID数据来动态识别和配置外接显示器的方法。
背景技术
显示器热插拔检测HPD(Hot Plugging Detect),是从显示器输出送往计算机主机的一个检测信号。热插拔检测的作用是当数字显示器通过HDMI/DVI(High Definition Multimedia Interface/Digital Visual Interface,高清晰度多媒体接口/数字视频接口)接口与计算机主机相连或断开连接时,计算机主机能够通过HDMI/DVI的HPD引脚检测出这一事件,并做出响应。
但是,早期的显示接口VGA(Video Graphics Array,视频图形阵列)由于硬件结构中没有设计热插拔引脚,无法主动发送HPD信号到主机,导致主机无法获知一个VGA显示器的连接与断开,从而不能调整相应的显卡工作模式符合当前显示器的最佳规格,导致新的显示器连接后,显示器显示的分辨率仍旧是先前显示器的输出格式,或者超出当前显示器的输出范围,显示器黑屏不工作。
因此,目前的操作系统Windows、Linux等,至多只能在系统启动时,检测当前是否已经连接显示器,在进入系统之后,都无法对VGA显示器进行动态热插拔检测。
发明内容
为了解决上述问题,实现VGA显示器的热插拔技术,本发明提出了一种通过定时获取显示器的EDID数据来动态识别和配置外接显示器的方法,该方法通过定时获取显示器的EDID(Extended Display Identification Data,扩展显示标识数据)数据,实现主动探测显示器的功能,在发现显示器被更换后,能够获取新插入的显示器的EDID数据,并根据此数据进行显卡工作模式的重新设定,从而解决无法对VGA显示器进行动态热插拔检测的问题。
为了实现上述目的,本发明所采用的技术方案是:一种动态识别和配置外接显示器的方法,包括以下步骤:
步骤一:打开一个I2C(Inter-Integrated Circuit)设备,根据该I2C设备的对象句柄,通过SMBUS(SYSTEM MANAGEMENT BUS)总线获取该I2C设备的EDID(Extended Display Identification Data,扩展显示标识数据)数据,如果获取EDID数据成功,则转步骤二;如果获取EDID数据失败,则关闭该I2C设备,转步骤一打开下一个I2C设备;
步骤二:对获取的该EDID数据进行有效性检测,如果该EDID数据有效,则缓存一组该I2C设备有效的EDID数据和该I2C设备的对象句柄,转步骤三;如果该EDID数据无效,则转步骤一打开下一个I2C设备;
步骤三:间隔一定时间,使用之前保存的I2C设备的对象句柄再次通过SMBUS总线获取该I2C设备的EDID数据,并对获取的该EDID数据进行有效性检测,如果通过有效性检测,转步骤四;如果未通过有效性检测,则转步骤三;
步骤四:对两组该I2C设备有效的EDID数据进行比较,如果两组数据不同,则后一组该I2C设备有效的EDID数据为新的显示器所提供,根据EDID数据的结构定义,从该后一组数据中解析出新的显示器的最佳分辨率和刷新率数据,并依据该最佳分辨率和刷新率数据重新设定显卡工作模式,然后缓存新的一组EDID数据用以替换旧的EDID数据,转步骤三;如果两组EDID数据相同,则转步骤三。
优选的,所述有效性检测包括:
检测所获取的EDID数据的数据头,一个有效的EDID数据的数据头为7 Byte,内容为{0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00},如果是,进行下一步检测;如果否,该EDID数据无效;
检测所获取的EDID数据的校验和,一个有效的EDID数据长度为128Byte,每一个Byte数据进行累加,累加的和值必须为0,如果是,该EDID数据有效;如果否,该EDID数据无效。
优选的,所述间隔一定时间为5秒到15秒。
优选的,所述新的显示器的最佳分辨率和刷新率数据来源于后一组该I2C设备有效的EDID数据的数据结构中起始偏移地址为0x36h的18个Byte。
优选的,所述步骤一之前还包括以下步骤:动态分配内存,用于存储EDID数据。
本发明通过这些步骤,定时的对I2C设备进行访问,获取当前时刻的EDID数据,并通过检测和比较,判断当前有无新的显示器插入,当发现新显示器插入时,即可根据获取到的数据重新设定显卡工作模式,从而自动根据新显示器的最佳分辨率显示出Linux操作系统桌面,避免了显示器黑屏现象或者需要手动设定分辨率的的操作,从而实现了VGA显示器用户模式下的热插拔检测和动态配置。
附图说明
图1为本发明动态识别和配置外接显示器的方法一具体实施例的流程图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明的总体方案是通过主动定时探测外置VGA显示器,获取并根据当前显示器最佳分辨率和刷新率重新设置显卡的工作模式。具体来说,本发明通过定时检测当前显示器中保存的EDID(扩展显示标识数据)数据信息,通过正确性检测以及差异比较,判断当前显示器是否已经被更换,如果发现当前显示器与先前不同,立即解析出当前显示器EDID中保存的最佳分辨率和刷新率,然后根据新的分辨率和刷新率重新设置显卡的工作模式,防止用户因为热插拔更换VGA显示器导致的显示器分辨率无法自动调整为最佳模式或者显卡输出超出分辨率取值范围导致显示器黑屏不正常输出。
为使本发明的特征及细节得到更清楚的了解,特结合附图1详细解说本发明所述方法在主机是Linux操作系统下具体实施例的所有步骤:
1)步骤S1:内存分配。
程序首次安装时会做如下设置:在系统启动后系统会加载i2c_dev.ko模块,在/dev/目录下生成所有的I2C设备文件,设置I2C设备文件的访问权限,使得普通用户在登入桌面后可以在当前权限下访问这些设备文件。这些设置是程序能够正常工作的前提条件。程序启动后,首先使用malloc动态分配内存用于暂存新的EDID数据和缓存旧的EDID数据。
2)步骤S2:打开I2C设备。
当程序运行后,首先访问/dev/目录下的I2C设备文件,如果文件不存在,则退出程序,否则即按照顺序先打开其中的一个I2C设备。
3)步骤S3:SMBUS数据传输验证。
当访问I2C设备成功后,通过IO CONTROL(系统IO端口调用)的方式设置其DDC(DISPLAY DATA CHANNEL)协议从地址为0x50,然后通过系统调用i2c_smbus_read_byte_data方法通过SMBUS(SYSTEM MANAGEMENT BUS)总线获取EDID数据,如果获取失败,说明此设备不支持SMBUS传输,关闭此设备,继续访问下一个I2C设备。如果遍历完所有设备,找不到一个有效的支持SMBUS传输的设备,退出程序。
4)步骤S4:有效性检测,即数据头、校验和检测。
对获取得到的EDID数据,进行数据头的检测,校验和的检测。一个有效的EDID数据前7 Byte必须为{0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00},当数据头符合时,还需要进行数据完整性检查,即校验和检测,一个有效的EDID数据长度为128Byte,每一个Byte数据进行累加,累加的和值必须为0。如果检测结果为,获取得到的EDID数据是无效的,则返回重新获取一个新的EDID设备,寻求一个有效的EDID数据。
5)步骤S5:缓存当前EDID。
如果通过有效性检测,即认为找到了一个有效的、可以获取正确EDID的I2C设备,此时保存当前设备的对象句柄和缓存获取到的EDID数据。
6)步骤S6:SMBUS获取EDID。
由于SMBUS获取EDID是一个类似于死循环的程序,CPU占用比较高,选取的时间间隔太短了,程序跑的太频繁会影响CPU的使用;选取的时间间隔太长了,用户一旦作出插拔操作会响应产生延迟,因此,时间间隔范围最好在5-15s之间,一般选择为10s。
每隔5-15s,再次使用保存的设备对象句柄,使用SMBUS调用主动获取新的EDID数据。
7)步骤S7:数据头、校验和检测。
重新对新获取的EDID数据进行数据头检测,校验和检测,获取到新的有效EDID数据。
8)步骤S8:与缓存EDID进行比较。
使用新的数据与之前缓存的EDID数据进行二进制比较,用于判断是否有一个新的VGA显示器已经连接。当两组数据不相同时,表示一个新的显示器已经被插上。
9)步骤S9:解析当前EDID。
当发现有新的显示器已经连接时,解析新EDID数据结构中起始偏移地址为0x36h的18个Byte用以获取到此数据中保存的新显示器最佳分辨率和最佳刷新率。其中新EDID数据结构中起始偏移地址为0x36h的18个Byte为显示器细节时钟描述的第一部分,此18Byte完整保存了当前显示的序列好号,显示器名称,最佳分辨率,最佳刷新率,以及一些被支持的其他数据。
10)步骤S10:设置最佳分辨率刷新率。
通过系统调用的方式将新显示器最佳分辨率和最佳刷新率发送到显卡,重新设定显卡的工作模式,使之符合新显示器的最佳工作模式。当工作模式设定完成后,保存新EDID数据到缓存中用以替换旧的数据,然后开始新一轮的显示器探测流程。
需要说明的是,本发明涉及流程和程序在本实施例中是基于Linux操作系统实现的,能够在Linux桌面环境下定时主动探测外置VGA显示器的热插拔,并根据显示器的EDID信息,动态配置显卡输出符合新插入显示器的最佳分辨率和刷新率的方法。
本发明所述方法和流程亦可适用于Windows操作系统。其中,获取EDID和设置分辨率的方法会因系统平台的不同略有差异,在此不一一列举赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种动态识别和配置外接显示器的方法,其特征在于,包括以下步骤:
步骤一:打开一个I2C设备,根据该I2C设备的对象句柄,通过SMBUS总线获取该I2C设备的EDID数据,如果获取EDID数据成功,则转步骤二;如果获取EDID数据失败,则关闭该I2C设备,转步骤一打开下一个I2C设备;
步骤二:对获取的该EDID数据进行有效性检测,如果该EDID数据有效,则缓存一组该I2C设备有效的EDID数据和该I2C设备的对象句柄,转步骤三;如果该EDID数据无效,则转步骤一打开下一个I2C设备;
步骤三:间隔一定时间,使用之前保存的I2C设备的对象句柄再次通过SMBUS总线获取该I2C设备的EDID数据,并对获取的该EDID数据进行有效性检测,如果通过有效性检测,转步骤四;如果未通过有效性检测,则转步骤三;
步骤四:对两组该I2C设备有效的EDID数据进行比较,如果两组数据不同,则后一组该I2C设备有效的EDID数据为新的显示器所提供,根据EDID数据的结构定义,从该后一组数据中解析出新的显示器的最佳分辨率和刷新率数据,并依据该最佳分辨率和刷新率数据重新设定显卡工作模式,使之符合新的显示器的最佳工作模式,然后缓存新的一组EDID数据用以替换旧的EDID数据,转步骤三;如果两组EDID数据相同,则转步骤三。
2.如权利要求1所述的方法,其特征在于,所述有效性检测包括:
检测所获取的EDID数据的数据头,一个有效的EDID数据的数据头为7 Byte,内容为{0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00},如果是,进行下一步检测;如果否,该EDID数据无效;
检测所获取的EDID数据的校验和,一个有效的EDID数据长度为128Byte,每一个Byte数据进行累加,累加的和值必须为0,如果是,该EDID数据有效;如果否,该EDID数据无效。
3.如权利要求1所述的方法,其特征在于,所述间隔一定时间为5秒到15秒。
4.如权利要求1所述的方法,其特征在于,所述新的显示器的最佳分辨率和刷新率数据来源于后一组该I2C设备有效的EDID数据的数据结构中起始偏移地址为0x36h的18个Byte。
5.如权利要求1、2 、3或4所述的方法,其特征在于,所述步骤一之前还包括以下步骤:动态分配内存,用于存储EDID数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110185222.1A CN102455886B (zh) | 2011-07-05 | 2011-07-05 | 一种动态识别和配置外接显示器的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110185222.1A CN102455886B (zh) | 2011-07-05 | 2011-07-05 | 一种动态识别和配置外接显示器的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102455886A CN102455886A (zh) | 2012-05-16 |
CN102455886B true CN102455886B (zh) | 2014-07-16 |
Family
ID=46039109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110185222.1A Active CN102455886B (zh) | 2011-07-05 | 2011-07-05 | 一种动态识别和配置外接显示器的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102455886B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870222B (zh) * | 2012-12-11 | 2018-06-01 | 联想(北京)有限公司 | 一种显示输出控制方法和电子设备 |
CN103414864A (zh) * | 2013-08-09 | 2013-11-27 | 广东威创视讯科技股份有限公司 | 一种vga分辨率识别方法及装置 |
CN103489426B (zh) * | 2013-09-06 | 2016-03-23 | 天津三星电子有限公司 | 显示器分辨率的切换方法 |
CN103595943A (zh) * | 2013-11-16 | 2014-02-19 | 京东方科技集团股份有限公司 | 视频信号传输设备、播放系统以及视频信号传输方法 |
CN104125414A (zh) * | 2014-07-30 | 2014-10-29 | 龙迅半导体科技(合肥)有限公司 | 音视频格式的处理方法、装置和系统 |
US9892712B2 (en) | 2014-12-08 | 2018-02-13 | Intel Corporation | Filtering hot plug detect signals |
CN104572509B (zh) * | 2014-12-26 | 2017-11-07 | 中国电子科技集团公司第十五研究所 | 一种在龙芯计算平台上实现独立显卡显存分配的方法 |
CN104615396B (zh) * | 2015-01-28 | 2018-05-04 | 福建升腾资讯有限公司 | 一种基于Android的分辨率自动调整方法及系统 |
CN104795011B (zh) * | 2015-04-23 | 2018-02-06 | 福州大学 | 结合edid的显示器画面偏移检测系统以及使用方法 |
CN106055298B (zh) * | 2016-06-02 | 2020-05-05 | 南京巨鲨显示科技有限公司 | 一种识别目标显示器的装置及方法 |
CN106155618A (zh) * | 2016-08-15 | 2016-11-23 | 广东欧珀移动通信有限公司 | 移动终端显示屏热插拔的实现方法和系统 |
CN106157925B (zh) * | 2016-08-30 | 2018-07-13 | 南京巨鲨显示科技有限公司 | 一种刷新率分辨率选择优先模式的显示装置及方法 |
CN106534840B (zh) * | 2016-10-31 | 2018-10-26 | 青岛海信电器股份有限公司 | 视频信号的检测方法和装置 |
CN106686332B (zh) * | 2016-11-17 | 2020-07-14 | 西安诺瓦星云科技股份有限公司 | 视频显示控制方法以及edid管理方法 |
CN108121681B (zh) * | 2017-12-04 | 2020-12-11 | 泾县谷声信息科技有限公司 | 一种热插拔实现方法、终端及存储介质 |
CN108563605B (zh) * | 2018-03-23 | 2022-11-29 | 上海掌门科技有限公司 | 一种调整电子阅读器刷新率的方法、设备和计算机存储介质 |
TWI668631B (zh) * | 2018-06-22 | 2019-08-11 | 技嘉科技股份有限公司 | 電腦裝置以及啟動方法 |
CN110248026B (zh) * | 2019-06-18 | 2021-10-22 | 北京字节跳动网络技术有限公司 | 一种移动终端、显示系统及其显示控制方法、记录介质 |
CN110377550A (zh) * | 2019-07-15 | 2019-10-25 | 合肥联宝信息技术有限公司 | 一种实现显示器热插拔功能的方法和计算机设备 |
CN113467729B (zh) * | 2020-03-31 | 2023-08-15 | 宏碁股份有限公司 | 电子装置与多屏幕显示方法 |
CN112704380B (zh) * | 2020-12-30 | 2021-10-15 | 珠海格力电器股份有限公司 | 烹饪监控方法、装置、电子设备及存储介质 |
CN113596559A (zh) * | 2021-07-21 | 2021-11-02 | Vidaa美国公司 | 一种信息栏显示信息的方法及显示设备 |
CN114817101B (zh) * | 2022-05-26 | 2024-05-14 | 智绘微电子科技(南京)有限公司 | 一种优化显卡驱动程序读取显示器edid信息的方法 |
CN115826900B (zh) * | 2023-02-23 | 2023-05-26 | 南京芯驰半导体科技有限公司 | 一种显示屏热插拔方法、芯片、转接头及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1766859A (zh) * | 2004-10-30 | 2006-05-03 | 鸿富锦精密工业(深圳)有限公司 | 刷新率自动修改方法 |
CN1941066A (zh) * | 2005-09-28 | 2007-04-04 | 联想(北京)有限公司 | 一种多显示器系统及其自动设置显示模式的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070076006A1 (en) * | 2005-09-30 | 2007-04-05 | Knepper Lawrence E | Detection of displays for information handling system |
-
2011
- 2011-07-05 CN CN201110185222.1A patent/CN102455886B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1766859A (zh) * | 2004-10-30 | 2006-05-03 | 鸿富锦精密工业(深圳)有限公司 | 刷新率自动修改方法 |
CN1941066A (zh) * | 2005-09-28 | 2007-04-04 | 联想(北京)有限公司 | 一种多显示器系统及其自动设置显示模式的方法 |
Non-Patent Citations (2)
Title |
---|
以TFP401A为核心的DVI接口应用系统;李政江等;《电子元器件应用》;20070430;第9卷(第4期);第4页8-10段 * |
李政江等.以TFP401A为核心的DVI接口应用系统.《电子元器件应用》.2007,第9卷(第4期),第4页8-10段. |
Also Published As
Publication number | Publication date |
---|---|
CN102455886A (zh) | 2012-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102455886B (zh) | 一种动态识别和配置外接显示器的方法 | |
TWI552562B (zh) | 將視訊/音訊裝置轉換於來源模式與接收模式之間的方法、設備及系統 | |
US9418618B2 (en) | Video signal transmission apparatus, play system and video signal transmission method | |
US10783253B2 (en) | Hardware structure of a trusted computer and trusted booting method for a computer | |
US20070076006A1 (en) | Detection of displays for information handling system | |
US20150074323A1 (en) | Data bus host and controller switch | |
US20090201312A1 (en) | Video/graphics port adapter and method thereof | |
US20200225296A1 (en) | Display module test platform | |
US10437304B2 (en) | Brown out condition detection and device calibration | |
CN102567171B (zh) | 一种测试刀片服务器主板的方法 | |
CN102541711B (zh) | 一种测试x86架构服务器主板的方法 | |
US8826078B2 (en) | Computer system and diagnostic method thereof | |
US20130283028A1 (en) | Adapter identification system and method for computer | |
JPWO2018116399A1 (ja) | 映像表示機器、映像表示機器の接続方法及びマルチ表示システム | |
US9442546B2 (en) | Computing system and method for respectively displaying information corresponding to host computer under booting state or standby state | |
US20160328350A1 (en) | Restart system and motherboard thereof | |
US9645627B2 (en) | Computer stick docking system and power management method thereof | |
US8391162B2 (en) | Apparatus and method for testing SMNP cards | |
US7457904B2 (en) | Methods and systems for a reference clock | |
TWI781676B (zh) | 主機板、顯示裝置、顯示方法和電腦可讀存儲介質 | |
CN101853147B (zh) | 笔记本电脑中检测外接式显示装置的电路与检测方法 | |
KR20070033856A (ko) | 디스플레이 장치의 입력신호 판별장치 및 방법 | |
US20240244160A1 (en) | Electronic device and operating method therof | |
US11455924B1 (en) | System and method for LCD display panel failure diagnostics | |
WO2022159106A1 (en) | Video link repair |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |