在 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,"
以获得另一种格式。根据您的要求,您可能还想删除尾随 ,
。
我目前正在研究 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,"
以获得另一种格式。根据您的要求,您可能还想删除尾随 ,
。