主题 : QT4 对IIC EEPROM 操作问题 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 5721
精华: 0
发帖: 51
金钱: 275 两
威望: 72 点
综合积分: 102 分
注册时间: 2009-05-06
最后登录: 2017-09-13
楼主  发表于: 2010-06-07 12:06

 QT4 对IIC EEPROM 操作问题

有人在QT下对IIC EEPROM 操作么?

请问:
static inline __s32 i2c_smbus_access(int file, char read_write, __u8 command, int size, union i2c_smbus_data *data)
{
    struct i2c_smbus_ioctl_data args;
    args.read_write = read_write;
    args.command = command;
    args.size = size;
    args.data = data;
    return ioctl(file, I2C_SMBUS, &args);
}
移植到QT4下,提示出错。
1)static inline 提示警告
2)union i2c_smbus_data *data 会产生编译出错


  IIC的例子是C语言,转QT 用C++ 就出现以上问题,请各位帮忙下看看
级别: 侠客
UID: 5721
精华: 0
发帖: 51
金钱: 275 两
威望: 72 点
综合积分: 102 分
注册时间: 2009-05-06
最后登录: 2017-09-13
1楼  发表于: 2010-06-07 12:20


弄错了,将 static inline __s32 i2c_smbus_access 定义到 private slots:了
现在改到 protected: 好像能进行写操作了

继续。。。codeing
级别: 侠客
UID: 5721
精华: 0
发帖: 51
金钱: 275 两
威望: 72 点
综合积分: 102 分
注册时间: 2009-05-06
最后登录: 2017-09-13
2楼  发表于: 2010-06-07 12:32
看例子,是操作 0x00-0xFF 的字节,若想操作 0xFF后面的字节,如何操作?

    __u8 buf =  mem_addr & 0x0ff;
    r = i2c_smbus_access(e->fd, I2C_SMBUS_WRITE, buf, I2C_SMBUS_BYTE, NULL);;

若有了解的帮忙指点下

-------------
/* Some IOCTL commands are defined in <linux/i2c.h> */
/* Note: 10-bit addresses are NOT supported! */

/* This is the structure as used in the I2C_SMBUS ioctl call */
struct i2c_smbus_ioctl_data {
    __u8 read_write;
    __u8 command;
    __u32 size;
    union i2c_smbus_data *data;
};

??不支持0xFF后面的字节的操作