0

我有以下代码

void loop() {
  String outMessage = "";  // String to hold input

  while (Serial.available() > 0) {  // check if at least one char is available
    char inChar = Serial.read();
    outMessage.concat(inChar);  // add Chars to outMessage (concatenate)
  }

  if (outMessage != "") {
    Serial.println("Sent:  " + outMessage); // see in Serial Monitor
    Serial1.write(outMessage); // Send to the other Arduino
  }

我想用通用的 C 语言编写它。

Arduino String 类是 0019 版核心的一部分,它允许我们以比字符数组更复杂的方式使用和操作文本字符串。

我不知道哪种方式更适合编程。我唯一知道的是这String需要很多内存。有什么建议吗?

4

2 回答 2

2

没有“Arduino 语言”这样的东西。Arduino(好吧,而不是内部的 AVR)是使用 C、C++ 或汇编程序进行编程的,Arduino 核心库为常见任务提供了一些 C 函数(以及 AVR-libc)和 C++ 类。您实际上在这里尝试做的是将您的代码从 C++ 转换为 C。

具体来说,在 C 中,字符串是以 0 结尾的数组char,因此您可以执行以下操作:

char welcome[] = "Hello world!";

摩尔...

于 2013-05-10T18:39:16.687 回答
0

应该不会太难。我喜欢使用 char 数组,因为真的一点也不难。但是,要连接两个 char 数组,您必须知道它们的大小,并且您必须创建一个大小为第一个 char 数组 + 第二个 char 数组的第三个缓冲区。唯一的问题是找到大小。这可以通过一个简单的结构来完成:

 typedef struct String{
    int size;
    char * chararray;

 }String;

然后,您必须使用大小对 chararray 进行 malloc 并填充整数值。

之后剩下的就很简单了。

于 2013-05-10T18:39:34.557 回答