在Arduino中使用字节缓冲区调用curl命令

时间:2018-11-23 04:22:57

标签: curl arduino arduino-yun

我目前正在使用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 :(得分:0)

您需要使用sprintfuint8_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以获取另一种格式。您可能还需要根据需要删除尾随,