传递意外消息时,此代码是否会导致缓冲区溢出?预期的消息也是简单的“1”和“-1”。
char rcv [64] {}; int i = 0; while(modem.available()){ RCV [I + …
如果 modem.available() 当时返回true i 达到64,那么你将有一个缓冲区溢出。
modem.available()
i
另外, String data_received = rcv; 可能在rcv中寻找一个空终止符(我不知道String是如何实现的),这可能不存在并导致String读取超过结束 rcv 缓冲。
String data_received = rcv;
rcv
您只需读取无限量的值,而无需检查缓冲区是否已满。从您的代码:
char rcv[64] {}; int i = 0; while (modem.available()) { rcv[i++] = (char)modem.read(); }
很明显你的char-array rcv在收到64个字符后会溢出。也许你应该在接收缓冲区满了之后停止阅读?
char rcv[64] {}; int i = 0; while (modem.available() && i < 64) { rcv[i++] = (char)modem.read(); }
或者您可以在阅读新值后覆盖最旧的值。
char rcv[64] {}; int i = 0; while (modem.available()) { rcv[i % 64] = (char)modem.read(); ++i; }