W jaki sposób mogę odebrać niewiadomą ilość znaków, która przychodzi po UART'ie do płytki Nucleo-F303PE? Na razie doszedłem do tego, że przychodzące dane wczytuje do 10-elementowej tablicy, ale co w przypadku, gdy chcę odebrać wiadomość, gdy nie wiem ile ma znaków? Szukałem w internecie, ale nie rozumiem zbytnio jak to działa i jak to zaimplementować do swojego kodu, który na razie wygląda tak:
volatile uint8_t receivedData[10];
volatile uint8_t test2[] = "Test\r\n";
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
HAL_UART_Receive_IT(&huart2, receivedData, 10);
uint8_t test[] = "Hello World !!!\r\n";
while (1)
{
HAL_UART_Transmit(&huart2,test,sizeof(test),10);// Sending in normal mode
HAL_Delay(1000);
}
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART2)
{
HAL_UART_Transmit(&huart2, test2, sizeof(test2), sizeof(test2)/sizeof(test2[0]));
uint8_t Data[40]; // Tablica przechowujaca wysylana wiadomosc.
uint16_t size = 0; // Rozmiar wysylanej wiadomosci
size = sprintf(Data, "Odebrana wiadomosc: %s\n\r",receivedData);
HAL_UART_Transmit_IT(&huart2, Data, size);
HAL_UART_Receive_IT(&huart2, receivedData, 10);
}
}
Proszę o pomoc.