2

伙计们,

我正在研究阅读 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 实现。

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

预先感谢您的帮助。

问候,
彼得

4

0 回答 0