问题标签 [edid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
13833 浏览

windows - 在 Windows XP/7 中获取 EDID 的 Win32 代码

我找到了这个页面,但无法从中获得任何有用的信息(它在注册表中搜索某些内容,但从未找到它并进入无限循环)。

正如这个关于获取监视器串行 UID(“EDID 信息”)的问题所问的那样,我想要相同的信息,但从 Win32 C 代码(或 C/C++ DDK代码或其他)而不是 Linux 的角度来看。

0 投票
2 回答
1854 浏览

linux - Linux下获取屏幕厂商和序列号

我有一个实例,Gdk::Screen它代表连接到我的计算机的显示器。如何读取该显示器的供应商 ID 和/或序列号?

从 XScreen 获取供应商 ID 和序列号也足够了。

读取监视器的 EDID 也足够了。

有任何想法吗?谢谢!

0 投票
3 回答
5815 浏览

c++ - 如何获取显示器序列号?

有谁知道如何在 C 或 C++ 中获取连接的显示器序列号?我找到了一些代码,但它们是用我不明白的 vbs 编写的。我需要一些用 C 或 C++ 编写的示例代码。我知道序列号是从 EDID 读取的,但不幸的是我不知道如何 :( 有人可以帮我吗?

谢谢

更新:我也需要监视器类型,但这也可以从 EDID 以某种方式读取

0 投票
2 回答
1637 浏览

c++ - 如何解析来自 EDID 的数字数据

我有一种方法可以使用 nVidia API 获取监视器的 EDID 信息,这给了我一个 128 个无符号字符的数组。但是,在阅读维基百科上的 edid 数据格式时,我注意到制造商 ID(字节 8-9)中的字母表示为 5 位数字,所以我不知道如何将其作为有意义的数据读入 C++ .

我的计划是定义一个与 edid 格式匹配的结构类型,并将我的 char 数组转换为该结构类型,但我不知道现在是否可行,因为我在 C++ 中知道的最小大小的数据类型是一个字节在尺寸方面。

谢谢。

账单。

0 投票
1 回答
5167 浏览

windows - 寻找 Forms.Screen.DeviceName 到 Monitor EDID 信息的可靠映射

我正在开发一个应用程序,它将在相应监视器的对话框上显示从 EDID 块(监视器型号、ID、S/N 等)派生的信息。

此代码用于查找显示器的 EDID 信息。它通过枚举HKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY\[Monitor]\[PnPID]\Device Parameters\EDID下的 DISPLAY 键来提取 EDID 信息。

更新:上面的代码依赖于 PnP 使用注册表的“副作用”。我现在使用SetupAPI来枚举监视器,它可以正确处理附加/删除的监视器(与上面链接中的代码不同。)

我正在尝试将 Windows.Forms.Screen.AllScreens[](\\.\DISPLAY1、\\.\DISPLAY2 等)中的每个屏幕与上述注册表检查返回的条目相关联。

注意:在下面的代码块中,DisplayDetails.GetMonitorDetails() 现在已被替换为使用 SetupAPI 的更强大的注册表枚举代码,但返回的数据是相同的。

例如

输出:

信息:型号:DELL P2411H,显示器 ID:DELA06E,PnPID:5&2e2fefea&0&UID1078018,序列号:F8NDP0C...PU

这是否与屏幕相关:\\.\DISPLAY1?

信息:型号:DELL P2411H,显示器 ID:DELA06E,PnPID:5&2e2fefea&0&UID1078019,序列号:F8NDP0C...AU

这是否与屏幕相关:\\.\DISPLAY2?


答案:没有

在测试中,我发现这些并不可靠相关(我有一个系统,其中枚举的第一个显示是 \\.\DISPLAY2)。

我的问题: 有没有办法可靠地获取给定 Forms.Screen 的 EDID 信息? 我可以获得 EDID 块,但没有找到将其与 UI 顶级表单相关联的路径。提示用户是不可取的,因为在我的用例中,两个(或更多)显示器可能是相同的型号和分辨率,并且仅在 S/N 中相差几个数字。

我已经在 Forms.Screen API、Win32 EnumDisplay、其他注册表 GUID(即插即用和驱动程序相关)之后寻找路径,但没有找到任何有希望的路径。

我还调查了 WMI Win32_DesktopMonitor API (Windows 7),但它似乎没有更多信息可以帮助我将其与 Windows.Forms.Screen.AllScreens[] 条目相关联。

我怀疑是否有办法做到这一点,它是通过 SetupAPI,但我还没有找到它。

0 投票
1 回答
3214 浏览

c++ - 如何从 EDID 中读取显示器的型号?

在注册表中有一个(或多个)键,具体取决于您拥有多少个监视器 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY\DEL404C{Some Unique ID}\Device Parameters\EDID 这是一个 REG_BINARY 键。就我而言,这是:

我的问题是我如何才能使用 C 或 C++ 仅读取监视器模型(例如“SyncMaster”)而不是所有信息?

EDID 的格式在此处描述:http ://en.wikipedia.org/wiki/Extended_display_identification_data

0 投票
0 回答
113 浏览

edid - 偶尔返回错误字符时如何使用 EDID

伙计们,

环境:Ubuntu 12.04 最小版 + openbox。

在我们基于 C 的应用程序中,信息只能显示在经过批准的显示设备上。我们依靠 EDID 来获取连接的显示设备的信息。

一切都按预期工作。但是,有时 EDID 会返回一些乱码。例如,SAMSUNG可能会作为SAMSyNG.

获取 EDID 信息的编程逻辑很简单。这让我觉得EDID本身并不那么可靠。我想知道是否有其他人遇到过这样的问题,以及您以编程方式解决了这个问题。

提前感谢您分享您的想法。

问候,
彼得

0 投票
1 回答
2923 浏览

c# - 直接从显示器读取 EDID 没有驱动程序

我得到了这个项目,我试图直接从监视器中提取目标是制作一个无需安装任何驱动程序即可在我知道可以通过注册数据库或获取信息,但这在这个项目中是不可能的,因为如果没有安装驱动程序,它将无法提供正确的信息。时它不会工作。这是安装驱动程序时可以显示分辨率的代码..

0 投票
0 回答
762 浏览

linux - 使用 i2c 读取 Edid - “ioctl” 与 “read”

伙计们,

我正在研究阅读 edid 代码的各种实现。

在一种实现中,我看到以下内容:

在另一个实现中,我看到:

第一个实现来自http://www.polypux.org/projects/read-edid/,第二个来自 libXcm 实现。

我使用了第一个实现。我想知道第二种实现是否可以接受。

预先感谢您的帮助。

问候,
彼得

0 投票
1 回答
454 浏览

c# - 在 C# 中使用 AMD ADL 获取监视器 EDID

我正在使用 AMD ADL 来枚举和操作连接到我的系统的显示器。我需要的必要功能之一是能够读取和解析显示 EDID。我能够解析 EDID 的字节数组表示,但是我无法获取 EDID。根据 ADL 文档,我定义了 ADLDisplayEDIDData 结构并导入了 ADL_Display_EdidData_Get 函数。但是,我的代码的任何执行都会导致 retvalue -3 的错误。此 retvalue 表示无效参数。

EDIDData 结构:

DLL 导入:

我的声明有什么错误吗?有人对 ADL 和获取 EDID 信息有任何经验吗?

先感谢您。