Я работаю над проектом с компилятором C18 и PIC18F4520.
У меня проблемы с использованием getcUSART. Когда я отправляю символы через модуль Bluetooth, в какой-то момент он просто зависает.
int input(char Arr[])
{
Delay10KTCYx(400); // Delay between data transmissions
while(BusyUSART());
// wait for user input
while (!DataRdyUSART());
//get string from terminal
Arr[0] = getcUSART(); //read a byte from USART
Delay10KTCYx(400); // Delay between data transmissions
while(BusyUSART());
// wait for user input
while (!DataRdyUSART());
//get string from terminal
Arr[1] = getcUSART(); //read a byte from USART
Delay10KTCYx(400); // Delay between data transmissions
while(BusyUSART());
// wait for user input
while (!DataRdyUSART());
//get string from terminal
Arr[2] = getcUSART(); //read a byte from USART
Delay10KTCYx(400); // Delay between data transmissions
return 1;
}
Вот мой код, когда я получаю символы с терминала. Проблема в том, что я хотел бы, чтобы пользователь мог выбрать вариант, такой как RUN или SET, но тогда, если это какой-либо другой вариант, он должен снова запросить у пользователя ввод. Проблема в том, что если я, например, поставлю POP в терминале, он действительно попросит пользователя ввести еще раз, но затем, если я наберу RUN или SET, он все равно будет думать, что это не команда. Кроме того, если я наберу, например, RUNbre, bre будет прочитано ПОЗЖЕ, когда я снова использую getcUSART. Я хочу каким-то образом очистить буфер, определяющий, что входит в getcUSART, но я не знаю, как это сделать.
Любая помощь будет оценена по достоинству, спасибо.