我想为我的arduino项目编写一个函数,但是我有一些问题。
char telephone_number = 111232113;
Serial.println("AT+CMGS=\"telephone_number\"\r");
控制台正在向我显示AT+CMGS="telephone_number"
,但我想要显示AT+CMGS="111232113"
,而不是这个。
这种形式甚至可能吗?我是编程方面的新手,我不知道如何管理它。
答案 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)
你快到了!
您需要解决两点问题:
char telephone_number = 111232113;
。类型char
通常用于保留单个字符。在Arduino中,您可以使用班级String
来表示多个角色。
为了将字符串变量的值与另一个字符串连接起来,您需要使用运算符+
。请参阅String Addition Operator。
以下是更正后的代码:
String telephone_number = "111232113";
Serial.println("AT+CMGS=\"" + telephone_number + "\"\r");