,,我需要向调制解调器提供AT命令,如下所示: AT ^ SRPN = 1,99991,“Download_URL”,“Image”; ^ SMSO
如何将变量download_url和变量图像插入命令字符串数组?将命令数组声明为const并使用strcpy()将两个变量插入命令列表是正确的方法吗?
函数at_send_commands()需要命令列表为const。
功能原型:at_resp_t at_send_commands(TickType ticks_to_wait, const char *commands[]);
at_resp_t at_send_download_url_and_image(const char *download_url, const char *image)
{
static const char *commands[] =
{
"AT^SRPN=1,99991,",
download_url,
",",
image,
";^SMSO\r",
NULL
};
at_resp_t err = at_send_commands(AT_TIMEOUT, commands);
if (err)
return err;
}
答案 0 :(得分:2)
试试这个:
at_resp_t at_send_download_url_and_image(const char *download_url, const char *image)
{
std::string str("AT^SRPN=1,99991,");
str += download_url;
str += ",";
str += image;
str += ";^SMSO\r";
const char* command = str.c_str();
const char* commands[] =
{
command,
NULL
};
at_resp_t err = at_send_commands(AT_TIMEOUT, commands);
if (err)
return err;
}
答案 1 :(得分:1)
在C中,最简单的方法是IMO
void send_command(const char *download_url, const char *image) {
char buf[1000];
sprintf(buf, "AT^SRPN=1,99991,\"%s\",\"%s\";^SMSO",
download_url, image);
...
}
<{>>在buf
中,您将最终获得发送到调制解调器的最终命令。
如果此代码可以在恶意环境中使用,那么您还应注意在将大字符串作为url / image传递时不会发生溢出(例如,首先在strlen
添加一个检查或使用{{1}而不是)。