c++转换为String最终停止工作

C++ Converting to String eventually stops working

本文关键字:停止工作 String 转换 c++      更新时间:2023-10-16

下面的方法每秒调用4次,有一段时间它工作得很好,我得到以下输出:

++++++++++++++++
^
^
++++++++++++++++

然而,在几百个电话之后,线路

String str = String(tosend);

似乎不工作了,我得到输出

++++++++++++++++
^
++++++++++++++++

所以不管什么原因'str'没有值。当我输入这个时,如果我让应用程序运行足够长的时间,它就会再次开始工作,并且我得到了正确的输出。这里到底出了什么问题?我困惑。

void Transmit(char tosend)
{
    String str = String(tosend);
    const char *tosend_ready = str.c_str();
    Serial.println("++++++++++++++++");
    Serial.println(str);
    Serial.println(tosend);
    Serial.println("++++++++++++++++");
    vw_send((uint8_t *)tosend_ready, strlen(tosend_ready));
    vw_wait_tx();
    delay(100);
}

我不知道String是什么,但是这个实现可以让你摆脱它(看起来像嵌入式的,所以你不应该关心C-isms…对吧?)

void Transmit(char tosend)
{
    const char buf[2] = { tosend, '' };
    Serial.println("++++++++++++++++");
    Serial.println(buf);
    Serial.println(tosend);
    Serial.println("++++++++++++++++");
    vw_send(buf, 2);
    vw_wait_tx();
    delay(100);
}