使用i2c阅读Edid - “ioctl”与“read”

时间:2013-04-15 08:36:50

标签: linux ubuntu edid

民间,

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

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

提前感谢您的帮助。

的问候,
彼得

0 个答案:

没有答案