バックグラウンド
私は 8052 ベースのマイクロコントローラーを使用しています。LCD とエンコーダー ホイールが接続されています。ユーザーは、エンコーダーホイールを回して押すことで、LCD に表示されるメニューをナビゲートできます。
エンコーダーホイールの回転は割り込みベースです。
エンコーダーホイールが回転している方向 ( encoder_turn
) は、エンコーダー割り込み内で設定されます。
update_lcd()
ループ内で呼び出します。
新しいレスポンシブ コード
void update_lcd()
{
//ENCODER TURN
switch(encoder_turn)
{
case RIGHT:
lcd_clear();
next_screen();
break;
case LEFT:
lcd_clear();
previous_screen();
break;
default:
break;
}
}
void next_screen()
{
if(current_test_screen < screen5)
{
current_test_screen++;
}
draw_current_test_screen();
}
void draw_current_test_screen()
{
switch(current_test_screen)
{
case screen1:
draw_screen1();
break;
case screen2:
draw_screen2();
break;
case screen3:
draw_screen3();
break;
case screen4:
draw_screen4();
break;
case screen5:
draw_screen5();
break;
default:
break;
}
}
応答しない古いコード
void update_lcd()
{
//ENCODER TURN
switch(encoder_turn)
{
case RIGHT:
lcd_clear();
next_screen();
break;
case LEFT:
lcd_clear();
previous_screen();
break;
default:
break;
}
switch(current_test_screen)
{
case screen1:
draw_screen1();
break;
case screen2:
draw_screen2();
break;
case screen3:
draw_screen3();
break;
case screen4:
draw_screen4();
break;
case screen5:
draw_screen5();
break;
default:
break;
}
}
void next_screen()
{
if(current_test_screen < screen5)
{
current_test_screen++;
}
}
質問
1 つが応答し、もう 1 つがまったく役に立たないのはなぜですか?
レスポンシブと言うときは、エンコーダーを回転させたときに画面の変化がレスポンシブであるという事実を指しています。どちらの方法も「機能」しますが、使用の観点からは受け入れられません。