将变量放入字符串(arduino)

时间:2016-03-12 22:41:30

标签: c++ string arduino arduino-uno

我想为我的arduino项目编写一个函数,但是我有一些问题。

char telephone_number = 111232113;
Serial.println("AT+CMGS=\"telephone_number\"\r");

控制台正在向我显示AT+CMGS="telephone_number",但我想要显示AT+CMGS="111232113",而不是这个。

这种形式甚至可能吗?我是编程方面的新手,我不知道如何管理它。

2 个答案:

答案 0 :(得分:1)

请勿使用String。诱人易用,但你最终会后悔。 :-(它们较慢,使用更多RAM,并为程序大小增加1.6k。只需坚持使用普通的旧C字符串,也称为char数组。

您可以将打印声明分为三部分:

char telephone_number[] = "111232113";
Serial.print( "AT+CMGS=\"" );
Serial.print( telephone_number );
Serial.println( "\"\r" );

通过在双引号字符串的打印周围使用F宏,可以节省更多的RAM空间:

char telephone_number[] = "111232113";
Serial.print( F("AT+CMGS=\"") );   // Saves 10 bytes of RAM
Serial.print( telephone_number );
Serial.println( F("\"\r") );       // Saves 3 bytes of RAM

任何你打印双引号字符串的地方,只需用F宏包裹它。

BTW,我认为电话号码不是常数,所以你需要把它保存在RAM中,就像这里显示的char数组一样。

答案 1 :(得分:0)

你快到了!

您需要解决两点问题:

  1. char telephone_number = 111232113;。类型char通常用于保留单个字符。在Arduino中,您可以使用班级String来表示多个角色。

  2. 为了将字符串变量的值与另一个字符串连接起来,您需要使用运算符+。请参阅String Addition Operator

  3. 以下是更正后的代码:

    String telephone_number = "111232113";
    Serial.println("AT+CMGS=\"" + telephone_number + "\"\r");