将变量放入字符串(arduino)
Putting variable in string (arduino)
我想为我的 arduino 项目编写一个函数,但我遇到了一些问题。
char telephone_number = 111232113;
Serial.println("AT+CMGS=\"telephone_number\"\r");
控制台正在向我显示 AT+CMGS="telephone_number"
,但我希望显示 AT+CMGS="111232113"
而不是这个。
这种形式也可以吗?我是编程新手,我不知道如何管理它。
你快到了!
有两点需要修正:
char telephone_number = 111232113;
。 char
类型通常用于保留单个字符。在Arduino中,可以用classString
来表示多个字符。
为了将字符串变量的值与另一个字符串连接起来,您需要使用运算符 +
。见 String Addition Operator.
这是更正后的代码:
String telephone_number = "111232113";
Serial.println("AT+CMGS=\"" + telephone_number + "\"\r");
不要使用 String
。很容易使用,但你最终会后悔的。 :-( 它们更慢,使用更多 RAM,并增加 1.6k 到您的程序大小。只需坚持使用普通的旧 C 字符串,也称为 char
数组。
您可以将打印语句分为三个部分:
char telephone_number[] = "111232113";
Serial.print( "AT+CMGS=\"" );
Serial.print( telephone_number );
Serial.println( "\"\r" );
您可以通过在双引号字符串的打印周围使用 F
宏来节省更多 RAM space:
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
宏将其包裹即可。
顺便说一句,我假设电话号码不是常量,因此您需要将其保存在 RAM 中,如此处所示的 char
数组。
我想为我的 arduino 项目编写一个函数,但我遇到了一些问题。
char telephone_number = 111232113;
Serial.println("AT+CMGS=\"telephone_number\"\r");
控制台正在向我显示 AT+CMGS="telephone_number"
,但我希望显示 AT+CMGS="111232113"
而不是这个。
这种形式也可以吗?我是编程新手,我不知道如何管理它。
你快到了!
有两点需要修正:
char telephone_number = 111232113;
。char
类型通常用于保留单个字符。在Arduino中,可以用classString
来表示多个字符。为了将字符串变量的值与另一个字符串连接起来,您需要使用运算符
+
。见 String Addition Operator.
这是更正后的代码:
String telephone_number = "111232113";
Serial.println("AT+CMGS=\"" + telephone_number + "\"\r");
不要使用 String
。很容易使用,但你最终会后悔的。 :-( 它们更慢,使用更多 RAM,并增加 1.6k 到您的程序大小。只需坚持使用普通的旧 C 字符串,也称为 char
数组。
您可以将打印语句分为三个部分:
char telephone_number[] = "111232113";
Serial.print( "AT+CMGS=\"" );
Serial.print( telephone_number );
Serial.println( "\"\r" );
您可以通过在双引号字符串的打印周围使用 F
宏来节省更多 RAM space:
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
宏将其包裹即可。
顺便说一句,我假设电话号码不是常量,因此您需要将其保存在 RAM 中,如此处所示的 char
数组。