使用动态分配的数组指针调用函数

时间:2017-10-14 16:40:48

标签: c pointers

我试图调用以下函数,该函数应填充带有传感器的数组'数据并返回检测到的传感器数量:

uint8_t ds18b20_read_all(uint8_t pin, ds_sensor_t *result) 

如果不知道传感器的数量,我怎么称呼?我想过:

ds_sensor_t *result = (ds_sensor_t *) malloc(NUM_OF_SENSORS * sizeof(ds_sensor_t));
uint8_t count = ds18b20_read_all(pin, result);

但我再也不知道NUM_OF_SENSORS了。我应该选择足够多的数字吗?

编辑: 函数的源代码:https://github.com/SuperHouse/esp-open-rtos/blob/master/extras/ds18b20/ds18b20.c

2 个答案:

答案 0 :(得分:3)

1线上的最大传感器为75.因此,您最多可以连接75个ds18b20。您还可以查询电汇,找出使用int ds18b20_scan_devices(int pin, ds18b20_addr_t *addr_list, int addr_count); set addr_count = 75附加了多少传感器。

答案 1 :(得分:2)

标题说,您询问的函数是一个过时的API。这通常意味着如果提供替换,您不应该使用它:

//以下是过时/弃用的API ... uint8_t ds18b20_read_all(uint8_t pin,ds_sensor_t * result);

我怀疑它因为您对以下问题有疑问而被弃用:目前还不清楚如何使用它。

新API(以下是其中之一)将addr_count作为参数:

bool ds18b20_read_temp_multi(int pin,ds18b20_addr_t * addr_list,int addr_count,float * result_list);