Arduino Serial.Available() 在 255 个字节后为假

问题描述

我正在使用连接到 Dragino nb-iot LTE Bg96 的 Arduino Nano BLE 33。我正在尝试阅读 https get 调用回复。 get 调用成功,为了读取它,我将 AT 命令发送到 BG96。然后将它发送到 Uart,我试图在 arduino 上阅读它。但是在 255 个字符后它停止了,我在不同的网站(有不同的响应)上尝试了它,但它在 255 个字符后中断了。我之前使用过 uint8_t(for index),所以我认为这是错误,但现在我将其更改为 int 后仍然发生。

我的部分功能

uint8_t bg96::check_response(char* desired_response){
char character;
int index = 0;
memset(response,ARRAYSIZE);
while (Serial1.available()){
    character = Serial1.read();
    response[index] = character;
    index++;
    Serial.print(character);
}
response[index] = '\0';
Serial.print("index : ");
Serial.println(index);

Serial.print("Response:");
Serial.println(response); 

回复

+QHTTPGET: 0,200
AT+QHTTPREAD=80
CONNECT
HTTP/1.1 200 OK
Server: Nginx/1.14.2
Content-Type: text/plain; charset=UTF-8
transfer-encoding: chunked
vary: Accept-Encoding
X-Request-Id: 616401ed-bb42-43b3-aba9-ab53952b9405
X-Token-Id: d242eb9a-9dc3index : 255
Response:

应该是:

Complete HTTPS REsponse

解决方法

由于错误发生在特定字节之后,通常意味着某种溢出。您还没有显示完整的代码,响应数组的大小是多少(或 ARRAYSIZE,因为您正在使用 memset 清除它)。很可能您的 response[index] 导致越界访问