我目前正在使用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
函数。
因此,我认为我必须以某种方式将这些字节转换为字符串表示形式(例如,十六进制字符串)。
这个问题有解决方案吗?
答案 0 :(得分:0)
您需要使用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
以获取另一种格式。您可能还需要根据需要删除尾随,
。