繁体   English   中英

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

[英]Calling a function with a dynamically allocated array pointer

我正在尝试调用以下函数,该函数应该用传感器的数据填充数组并返回检测到的传感器的数量:

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

1-wire上的最大传感器为75个。因此,您最多可以连接75个ds18b20s。 您也可以使用int ds18b20_scan_devices(int pin, ds18b20_addr_t *addr_list, int addr_count);查询导线以查找连接了多少个传感器int ds18b20_scan_devices(int pin, ds18b20_addr_t *addr_list, int addr_count); 设置addr_count = 75。

标头说,您要询问的功能是一个过时的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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM