伙计们,
我正在研究阅读 edid 代码的各种实现。
在一种实现中,我看到以下内容:
err = ioctl(fd, I2C_SLAVE, 0x50);
if (err == 0) {
// ok to read.
for(int i=0;i<128;i++) {
buf[i] = i2c_smbus_read_byte_data(fd); // use ioctl to read 1 byte at a time
}
}
在另一个实现中,我看到:
err = ioctl(fd, I2C_SLAVE, 0x50);
if (err == 0) {
usleep(TIMEOUT); // sleep for a brief interval
write(fd, &command, 1); // here, command[0] is 0
usleep(TIMEOUT); // sleep for a brief interval
read(fd, buf, 128);
}
第一个实现来自http://www.polypux.org/projects/read-edid/,第二个来自 libXcm 实现。
我使用了第一个实现。我想知道第二种实现是否可以接受。
预先感谢您的帮助。
问候,
彼得