将变量放入字符串(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" 而不是这个。

这种形式也可以吗?我是编程新手,我不知道如何管理它。

你快到了!

有两点需要修正:

  1. char telephone_number = 111232113;char 类型通常用于保留单个字符。在Arduino中,可以用classString来表示多个字符。

  2. 为了将字符串变量的值与另一个字符串连接起来,您需要使用运算符 +。见 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 数组。