Appending to Strings 添加字节

这段代码是一个Arduino示例程序,用于演示如何使用+=操作符和concat()方法将不同数据类型(如字符串、字符、整数和长整数)追加到字符串中,并将拼接后的字符串发送到串行监视器。这种方法在需要动态生成字符串时非常有用,例如在串行通信、LCD显示或网络通信中。

/*
  Appending to Strings using the += operator and concat()

 Examples of how to append different data types to strings

 created 27 July 2010
 modified 2 Apr 2012
 by Tom Igoe

 http://arduino.cc/en/Tutorial/StringAppendOperator

 This example code is in the public domain.
 */

String stringOne, stringTwo;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  stringOne = String("Sensor ");
  stringTwo = String("value");
  // send an intro:
  Serial.println("\n\nAppending to a string:");
  Serial.println();
}

void loop() {
  Serial.println(stringOne);  // prints  "Sensor "

  // adding a string to a string:
  stringOne += stringTwo;
  Serial.println(stringOne);  // prints "Sensor value"

  // adding a constant string to a string:
  stringOne += " for input ";
  Serial.println(stringOne);  // prints "Sensor value for input"

  // adding a constant character to a string:
  stringOne += 'A';
  Serial.println(stringOne);   // prints "Sensor value for input A"

  // adding a constant integer to a string:
  stringOne += 0;
  Serial.println(stringOne);   // prints "Sensor value for input A0"

  // adding a constant string to a string:
  stringOne += ": ";
  Serial.println(stringOne);  // prints "Sensor value for input"

  // adding a variable integer to a string:
  stringOne += analogRead(A0);
  Serial.println(stringOne);   // prints "Sensor value for input A0: 456" or whatever analogRead(A0) is

  Serial.println("\n\nchanging the Strings' values");
  stringOne = "A long integer: ";
  stringTwo = "The millis(): ";

  // adding a constant long integer to a string:
  stringOne += 123456789;
  Serial.println(stringOne);   // prints "A long integer: 123456789"

  // using concat() to add a long variable to a string:
  stringTwo.concat(millis());
  Serial.println(stringTwo); // prints "The millis(): 43534" or whatever the value of the millis() is

  // do nothing while true:
  while (true);
}

功能概述

硬件部分

  • 使用Arduino开发板连接到计算机,通过串行通信发送数据。

软件部分

  • 演示如何使用+=操作符和concat()方法将不同数据类型(如字符串、字符、整数和长整数)追加到字符串中。

  • 使用Serial.println()将拼接后的字符串发送到串行监视器。

代码逐行解释

定义变量

String stringOne, stringTwo;
  • 定义两个String类型的变量,用于存储和拼接字符串。

setup() 函数

void setup() {
  // 初始化串行通信,波特率为9600
  Serial.begin(9600);
  while (!Serial) {
    ; // 等待串行端口连接。仅对Leonardo等板子需要
  }

  // 初始化字符串变量
  stringOne = String("Sensor ");
  stringTwo = String("value");
  // 发送介绍信息
  Serial.println("\n\nAppending to a string:");
  Serial.println();
}
  • Serial.begin(9600):初始化串行通信,设置波特率为9600。

  • while (!Serial):等待串行端口连接。对于某些Arduino板子(如Leonardo),在串行端口未连接时,程序会卡在这里。

  • stringOnestringTwo:初始化字符串变量。

  • Serial.println():发送介绍信息到串行监视器。

loop() 函数

void loop() {
  Serial.println(stringOne);  // 打印 "Sensor "

  // 使用 += 操作符将一个字符串追加到另一个字符串
  stringOne += stringTwo;
  Serial.println(stringOne);  // 打印 "Sensor value"

  // 使用 += 操作符将一个常量字符串追加到字符串
  stringOne += " for input ";
  Serial.println(stringOne);  // 打印 "Sensor value for input"

  // 使用 += 操作符将一个常量字符追加到字符串
  stringOne += 'A';
  Serial.println(stringOne);   // 打印 "Sensor value for input A"

  // 使用 += 操作符将一个常量整数追加到字符串
  stringOne += 0;
  Serial.println(stringOne);   // 打印 "Sensor value for input A0"

  // 使用 += 操作符将一个常量字符串追加到字符串
  stringOne += ": ";
  Serial.println(stringOne);  // 打印 "Sensor value for input A0: "

  // 使用 += 操作符将一个变量整数追加到字符串
  stringOne += analogRead(A0);
  Serial.println(stringOne);   // 打印 "Sensor value for input A0: 456" 或其他 `analogRead(A0)` 的值

  Serial.println("\n\nchanging the Strings' values");
  stringOne = "A long integer: ";
  stringTwo = "The millis(): ";

  // 使用 += 操作符将一个常量长整数追加到字符串
  stringOne += 123456789;
  Serial.println(stringOne);   // 打印 "A long integer: 123456789"

  // 使用 concat() 方法将一个长整数变量追加到字符串
  stringTwo.concat(millis());
  Serial.println(stringTwo); // 打印 "The millis(): 43534" 或其他 `millis()` 的值

  // 无限循环,什么也不做
  while (true);
}
  • Serial.println(stringOne):将当前字符串发送到串行监视器。

  • stringOne += stringTwo:使用+=操作符将stringTwo追加到stringOne

  • stringOne += " for input ":使用+=操作符将常量字符串" for input "追加到stringOne

  • stringOne += 'A':使用+=操作符将常量字符'A'追加到stringOne

  • stringOne += 0:使用+=操作符将常量整数0追加到stringOne

  • stringOne += ": ":使用+=操作符将常量字符串": "追加到stringOne

  • stringOne += analogRead(A0):使用+=操作符将变量整数analogRead(A0)追加到stringOne

  • stringOne = "A long integer: ":重新初始化stringOne

  • stringTwo = "The millis(): ":重新初始化stringTwo

  • stringOne += 123456789:使用+=操作符将常量长整数123456789追加到stringOne

  • stringTwo.concat(millis()):使用concat()方法将变量长整数millis()追加到stringTwo

  • while (true):无限循环,什么也不做,防止程序退出。

工作原理

初始化

  • setup()函数中,初始化串行通信,设置波特率为9600。

  • 初始化字符串变量。

字符串追加

  • loop()函数中,演示了如何使用+=操作符和concat()方法将不同数据类型追加到字符串中。

  • 使用Serial.println()将拼接后的字符串发送到串行监视器。

无限循环

  • 使用while (true)防止程序退出。

视频讲解

BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)