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

Calling curl command using byte buffer in Arduino

我目前正在研究 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 函数即可。

所以,我想我必须以某种方式将这些字节转换为字符串表示形式(例如,十六进制字符串)。

这个问题有解决办法吗?

您需要使用 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,”。

您可以更改 sprintf 调用中的 "%d," 以获得另一种格式。根据您的要求,您可能还想删除尾随 ,