У вас есть опыт работы с C?Особенно в значении *
и &
?*
означает: получить значение, указанное по адресу.Поэтому void ** args говорит что-то вроде «получить значение, указанное значением, полученным из адреса».void используется для свободного ввода всего, что вам нравится.Поскольку вы не можете поместить целые структуры или объекты в аргумент, вы предоставляете указатель (адрес) на структуру или объект.Используя *
, вы получаете значение по адресу аргумента.
В C вы не передаете целые массивы в аргументе, вы передаете адрес первого индекса.
Теперь вы можете просто переформулировать свою функцию, чтобы она выглядела примерно так:
int ReadAudio(unsigned int *generalArray, float arg, unsigned int argsCount ,unsigned int *argSize)
Но так как void **args
указывает на буфер, я думаю, вы должны знать, какую операцию вы хотите выполнить с даннымисобраны.Аналоговое чтение всегда дает вам целое число, большинство АЦП (аналоговый - цифровой - преобразователь) являются 10-битными или около того.
Если в 32-битной системе число с плавающей запятой составляет 4 байта, вы хотите искажатьваши данные (unsigned char *buffer
) в 4-байтовой границе.
РЕДАКТИРОВАТЬ: я упустил это из виду в документации: Note: Parameter of all function in RLP code file must have format follow this:Note: Parameter of all function in RLP code file must have format follow this:
.Просто приведите байты буфера к числу с плавающей точкой на границе 4 байта, и я думаю, что у вас все будет хорошо.