i2c_smbus_* 函数不会存在于 CentOS7 i2C-dev.h 上
i2c_smbus_* functios don't exsit on centos7 i2c-dev.h
我需要从Linux C++程序管理SMBus设备。
我可以打开设备(/dev/i2c-0),但我发现所有i2c_smbus*函数(i2c_smbus_write_word_data、i2c_smbus _read_word_data.等)都没有在任何i2c头中声明。
i2c文档说,这些函数在linux/i2c-dev.h头文件中声明,但在我的centos7中不存在。
我在所有标题中都在寻找它们,但没有在任何文件中定义。
你知道为什么没有在那里定义,它们在哪里吗?
这是我的代码:
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <linux/i2c-dev.h>
#include <linux/i2c.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <memory.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/io.h>
#include <sys/ioctl.h>
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
int Address = 0x39; //Slave addr
char i2c_dev_node_path[] = "/dev/i2c-0";
int ret_val = 0;
/* Open the device node for the I2C adapter of bus 0 */
i2c_dev_node = open(i2c_dev_node_path, O_RDWR);
if (i2c_dev_node < 0)
{
cout << "EROR Unable to open device node." << endl;
return -1;
}
int i2c_dev_address = 0x39;
ret_val = ioctl(i2c_dev_node,I2C_SLAVE,i2c_dev_address);
if (ret_val < 0)
{
perror("Could not set I2C_SLAVE.");
cout << "EROR Could not set I2C_SLAVE." << endl;
return -1;
}
cout << "ALL OK!!!!!" << endl;
int retVal = i2c_smbus_read_word_data ( i2c_dev_node , 0xac );
}
复制/lib/modules/4.8.28-release/kernel/drivers/i2c/i2c-smbus.ko
yum install libi2c-dev
相关文章:
- 使用 C++ 和 i2c 工具从虚拟 i2c 写入和读取
- 当 I2C 值在C++中发生变化时收到通知
- Centos7 g++ "to_string is not in a member of std"
- I2C 文件描述符上的 I2C 总线可写/可读标志
- 两种访问I2C总线的方法有什么区别?
- 如何获取引脚 4 的值,以便也发送到从站并使用 I2C 显示?
- 请发现它在 dev 中工作的错误,但在 hackerrank 中不起作用
- 无法在 dev-c++ 上编译程序?
- 在 Centos7 上使用 boost 1.71.0 编译错误
- Dev c++ mingw 不再编译
- 如何在 Windows 上将bcrypt_gensalt与 /dev/urandom 一起使用?
- 我正在使用dev c ++,但收到错误(C++98'array'必须由构造函数初始化)
- dev Wx Dev C++ vs Graphics.h?
- dev如何在C++中比较二进制数
- 在linux中为c++dev配置VSCode
- DEV C++ 第 69 行 [错误] ISO "for" 范围更改了"i"的名称查找 [-允许]
- dev在试图从dev c++mingw 4.8.1中的文件读取时接收分段错误
- 我有一个C++函数,它在Dev C++中编译,但在G++中不编译
- I2C dev:更改写入和读取参数
- i2c_smbus_* 函数不会存在于 CentOS7 i2C-dev.h 上