2

我正在学习用 Arduino 编程,据我所知,它使用 C 语言(如果我错了,请纠正我)。

我是 JavaScript 和 PHP 的大四学生,现在我很难处理字符串处理等简单的事情。

如果在 JavaScript 中我有

var c = 33;
var myString = "hello" + c;
alert(myString); //---> hello33

它在 C/Arduino 中是如何工作的?

4

4 回答 4

3

在 C 中,您会执行以下操作:

char buff[100]; // needs to be large enough.
int c = 33;
sprintf (buff, "hello%d", c); // may want a space after hello

// Now do something with buff.

C 是一种您需要自己管理一些低级细节的语言。基础语言/库中没有自动扩展的字符串类型,尽管毫无疑问周围有一些很好的第三方字符串类型(例如, “更好的字符串”,因为它不会拖入很多其他你不想要的东西,在嵌入式领域尤为重要)。

于 2012-04-08T02:15:33.310 回答
2

Arduino 有内置的String 类,你可以这样做:

String stringOne = "A long integer: ";
// using += to add a long variable to a string:
stringOne += 123456789;

// or

stringTwo.concat(123456789);

如果这两种情况你都得到"A long integer: 123456789"

于 2012-04-08T03:48:07.293 回答
2

我强烈建议使用 2 个辅助库。它们一起使使用字符串变得更加容易!

PString: http ://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1236036180 所以你可以写...

str.print("The temperature is ");
str.print(temp);
str.println(" degrees.");
// do something with str here

流媒体: http ://arduiniana.org/libraries/streaming/ 所以你可以写...

lcd << "GPS #" << gpsno << " date: " << day << "-" << month << "-" << year << endl;
于 2012-04-08T09:19:28.627 回答
0

相当于您的 JavaScript 代码作为 Arduino 草图是:

void setup() {
  Serial.begin(9600);
  int c = 33;                 // var c = 33;
  String myString = "hello";  // var myString = "hello"
  myString += c;              //                        + c;
  Serial.println(myString);   // alert(myString); //---> hello33
}

void loop() {
}

对于字符串处理,JavaScript 和 Arduino (C++) 代码之间的区别是:

  • 变量是强类型的。例如,您需要在声明变量时指明变量是整数 ( int) 还是字符串 ( String)。
  • 字符串不是 C++ 中的内置“原始”类型(Arduino 版本的 C++ 也不支持 C++ 标准库字符串),因此一些简单的操作不能作为单个语句执行。例如,赋值和连接需要两行 Arduino 代码。

JavaScript 和 Arduino (C++) 代码之间的其他重要区别是:

  • 您需要 asetuploop函数而不是main函数。setupArduino 板通电时只运行一次,然后loop连续执行。
  • 最接近alertArduino 中 JavaScript 的等价物是写入串行端口。要查看此输出,您需要将 Arduino 板连接到 PC。在 Arduino IDE 中,打开串行监视器将允许您查看输出。
于 2012-04-10T21:35:31.523 回答