以下是我的计划。我试图以不同的波特率读取字符,如果在10秒内没有收到任何字符,我想突破循环,并且如果收到除字母之外的任何字符,我同样想要突破循环?我怎样才能做到这一点。请指导我。
char read()
{
while(1)
{
delay_ms(10000);
break;
if((uart_RxChar() >= 65 && uart_RxChar() <= 90) || (uart_RxChar() >= 97 && uart_RxChar() >= 122))
{
uart_TxChar('k');
Glow_GreenLED();
}
else
{
Glow_RedLED();
break;
}
}
}
答案 0 :(得分:3)
char read()
{
while(1)
{
delay_ms(10000); // Stops the program
break; // Then leaves
if( (uart_RxChar() >= 65 && uart_RxChar() <= 90) || (uart_RxChar() >= 97 && uart_RxChar() >= 122))
{
uart_TxChar('k');
Glow_GreenLED();
}
else
{
Glow_RedLED();
break;
}
}
}
您尝试做什么将无法成功。你必须知道延迟不会那样。当你的程序达到延迟时,会在延迟期间停止所有 - 输入。意思是无论你做什么,它都会等待然后休息
使用延迟实现您想要做的事情的唯一方法是使用线程,让一个线程等待并确定时间,另一个线程等待输入。没有线程的方法是使用timer
并使用计时器的值作为中断的条件。可能这个link可以提供帮助。
尽管如此,完全可以根据需要设置尽可能多的中断条件:
if (CONDITION_1)
break;
else if (CONDITION_2)
{
printf("something");
break;
}
else if (CONDITION_3)
{
someFunction();
break;
}
else
break;
答案 1 :(得分:2)
你得到的第一个 while(1)
{
delay_ms(10000);
break;
将会脱离循环,意味着,
delay_ms(10000);
与
相同break;
您的第二个if-else
以及整个php artisan key:generate
已被删除&#34;&#34;因为循环会在