1
我想解析屏幕EDID信息。不幸的是,它不是通常的編碼數據。 你碰巧知道如何將'IODisplayEDID'中的數據轉換爲可讀的數據?也許'詞典'?如何閱讀屏幕EDID數據?
這裏是我的代碼:
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)
這是一個數據結構,它只是字節:https://en.wikipedia.org/wiki/Extended_Display_Identification_Data它是相當複雜的。這是[C程序](https://cgit.freedesktop.org/xorg/app/edid-decode/),它解析了很多東西。這是一個非常複雜的結構。 – Moritz
謝謝,@EricAya在您提供的wiki的幫助下編寫了提取我需要的數據的代碼。 – user2219572