Вызов команды curl с использованием байтового буфера в Arduino - PullRequest
0 голосов
/ 23 ноября 2018

В настоящее время я работаю на устройствах Arduino и пытаюсь использовать " process library " для вызова моего REST API.Вот мой фрагмент кода.

void api_send_cell(uint8_t* data)
{
    Process p;    
    p.begin("curl");
    p.addParameter("-X Post");
    p.addParameter("-H content-type: multipart/form-data");
    p.addParameter("-k " + url);
    p.addParameter("-F data=");
    p.addParameter(buf);
    p.run();
}

Но дело в том, что мои данные (uin8_t buffer) представляют собой серию необработанных данных, представляющих собой просто числа от 0 до 255. Поскольку процессу требуется строка для параметра, какнастоящая команда, я не мог просто поместить свои данные в addParamter функцию.

Итак, я думаю, что мне нужно как-то преобразовать эти байты в строковое представление (например, шестнадцатеричную строку).

Есть ли решение этой проблемы?

1 Ответ

0 голосов
/ 23 ноября 2018

Вам необходимо использовать sprintf для преобразования ваших uint8_t данных в строку:

char string_data[LENGTH]; // LENGTH = Whatever length is sufficient to hold all your data
int i=0;
int index = 0;
//NUMBER_OF_ITEMS_OF_DATA could be constant or another variable
for (i=0; i<NUMBER_OF_ITEMS_OF_DATA; i++)
{
   index += sprintf(&string_data[index], "%d,", data[i]);
}
p.addParameter(string_data);

Это преобразует массив типа {1,2,3,4,5} в строку "1,2,3,4, 5, ".

Вы можете изменить "%d," в вызове sprintf, чтобы получить другой формат.Вы также можете удалить завершающий , в зависимости от ваших требований.

...