#include
typedef struct struct_arr
{
unsigned char addr;
unsigned char data;
}struct_arr;
// 模拟一个结构体数组进行数据存储
static struct_arr arr_data[] =
{
{0x01,0x08},
{0x1E,0x01},
{0x03,0x9A},
{0x17,0x9E},
{0x0E,0x03},
{0x0F,0x03},
{0x1E,0x01},
{0x40,0x05},
{0x41,0x21},
{0x42,0x60},
{0x1E,0x01},
{0x5B,0x03},
{0x4F,0x8C},
{0x1E,0x01},
{0x40,0x04},
{0x41,0x05},
{0x42,0x1A},
{0xC6,0x21},
{0x01,0x00},
};
void transfer_function (struct_arr *table, int number)
{
int i;
for (i = 0; i < number; i++) {
printf("%d: addr: %x, data :%x \n", i, table[i].addr, table[i].data);
}
}
int main()
{
transfer_function(arr_data, sizeof(arr_data)/sizeof(struct_arr));
}
这里需要注意的是 C语言中,数组名实际上是一个指向数组首元素的指针
所以我们这里的transfer_function 函数虽然传递的是数组名,但是实际上就是传递的一个指针。
这个也是内核中常用的i2c发送数据的一个方法,可能不同之处在于封装,有的平台会封装i2c发送数据的长度。
每个数据都能都读出来。