重用uint8_t缓冲区来存储UART响应



我有一个uint8_t rxBuffer[200] = {0};数组。

缓冲器接收来自UART的消息USART1.Receive(rxBuffer, sizeof(rxBuffer));

我想在这个rxBuffer中接收UART响应,解析它们,然后重用这个数组来解析进一步的响应。如何清除此缓冲区并重新使用它?

我尝试使用memset(rxBuffer, 0, sizeof rxBuffer);,但当我尝试打印出缓冲区内容时,调试控制台上没有打印任何内容

我在这里做错了什么?

我将提供一个sudo代码,我正在尝试做什么:

uint8_t rxBuffer[200] = {0};
uint8_t at[] = "ATrn";
uint8_t atSetSTA[] = "AT+CWMODE=1rn";
DEMO_USART1.Send(at, sizeof(at) - 1);
delay(1000);
DEMO_USART1.Receive(rxBuffer, sizeof(rxBuffer));
print(rxBuffer);
memset(rxBuffer, 0, sizeof rxBuffer)

DEMO_USART1.Send(atSetSTA, sizeof(atSetSTA) - 1);
delay(1000);
DEMO_USART1.Receive(rxBuffer, sizeof(rxBuffer));
print(rxBuffer);
memset(rxBuffer, 0, sizeof rxBuffer)

当我使用memset时,Nothing会打印到控制台。当我不使用memset时,在这种情况下,它也会打印以前的响应。

如何打印到控制台?

如果调用printf(rxBuffer)printf将不打印任何内容,因为缓冲区的第一个值是0

我认为这是因为编译器将rxBuffer解释为以null结尾的char*(也称为c字符串(。这意味着printf将从地址rxBuffer开始打印值,直到达到0的值。

你可能想用之类的东西打印出缓冲区的值

printf("Buffer = [");
for (int i = 0; i < sizeof(rxBuffer); i++) {
printf("%d", rxBuffer[i]);
}
printf("]n");

而是