首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何读取屏幕EDID数据?

如何读取屏幕EDID数据?
EN

Stack Overflow用户
提问于 2017-07-14 18:15:06
回答 1查看 698关注 0票数 2

我在试着解析屏幕的EDID信息。不幸的是,它不是任何常见的编码数据。您是否知道如何将“IODisplayEDID”中的数据转换为可读的数据?也许是“字典”?

下面是我的代码:

代码语言:javascript
复制
    var object : io_object_t
    var serialPortIterator = io_iterator_t()
    let matching = IOServiceMatching("IODisplayConnect")

    let kernResult = IOServiceGetMatchingServices(kIOMasterPortDefault,
                                                  matching,
                                                  &serialPortIterator)
    if KERN_SUCCESS == kernResult && serialPortIterator != 0 {
        repeat {
            object = IOIteratorNext(serialPortIterator)
            let info = IODisplayCreateInfoDictionary(object, UInt32(kIODisplayOnlyPreferredName)).takeRetainedValue() as NSDictionary as! [String:AnyObject]

            if let displayEDID = info["IODisplayEDID"] as? Data {

                print(displayEDID) // <-- How do I parse this data correctly?
            }

        } while object != 0
    }
    IOObjectRelease(serialPortIterator)
EN

回答 1

Stack Overflow用户

发布于 2017-07-17 21:14:26

好的,所以基本上我使用了评论中提供的维基参考Eric Aya。我按照指定的顺序读取8-9个字节,以提取字母表的树形编号。在我的mac上,结果显示为"APP“,我猜这意味着制造商是苹果。

代码语言:javascript
复制
            if let displayEDID = info["IODisplayEDID"] as? Data {

                let array = Array(displayEDID)

                var bits : UInt16 = UInt16(array[8])
                bits = bits << 8  + UInt16(array[9])

                let thirdLetterIndex = Int(bits & 31)
                let secondLetterIndex = Int(bits >> 5 & 31)
                let firsLetterIndex = Int(bits >> 10 & 31)


                let chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".characters.flatMap { $0.description }
                let manufactorer = chars[firsLetterIndex - 1] + chars[secondLetterIndex - 1] + chars[thirdLetterIndex - 1]


                print(manufactorer) // Result for my mac is "APP"
            }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45100439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档