人間とコンピュータの相互作用のためのより多くの需要として、画面と情報埋め込み装置は、より詳細な各種メニューキーの入力、各種のスイッチング動作と、より多く表示する必要があります。それは別のメニュー間の動作をどのように便利な管理の切り替え?実験により、マルチレベルのメニューのアイデアを実現紹介するBenpian。
はじめに1.マルチレベルのメニュー
画面操作の様々な、マルチレベルのメニューは、思考の種類や固定プログラミングフレームワークです。キーがトリガーされたときに、単に、現在のインタフェースキーが配列インデックスからジャンプし、その後、インデックス・インターフェースに応答して機能を実行する必要があるキーの定義に従って取り出します。
2.実現
すべてのまず、我々は、構造体は、典型的には、インターフェース部材可変インデックス番号、インターフェイス関数ポインタと表現格納されたインデックスキーの実際のキーに対応する変数を含む、構造を定義する必要があります。前記インターフェースインデックス番号は、対応する関数ポインタです。
typedef struct
{
unsigned char index;
unsigned char up;
unsigned char down;
unsigned char left;
unsigned char right;
void (*operation)(void);
} KEY_TABLE;
この実験では、それは、右の4つの主要な変数を左に、上下を定義して、4つのボタンを定義します。
2.構造型定義は、構造体の配列、インターフェースの数を定義するために、数は、アレイ内の要素の数です。
KEY_TABLE table[9] =
{
{0, 0, 0, 0, 0, (*menu11)},
{1, 0, 0, 0, 0, (*menu12)},
{2, 0, 0, 0, 0, (*menu21)},
{3, 0, 0, 0, 0, (*menu22)},
{4, 0, 0, 0, 0, (*menu23)},
{5, 0, 0, 0, 0, (*menu31)},
{6, 0, 0, 0, 0, (*menu32)},
{7, 0, 0, 0, 0, (*menu33)},
{8, 0, 0, 0, 0, (*menu34)},
};
この実験は、それぞれのインターフェース関数ポインタに対応する、0から8まで前記インターフェースインデックス番号、そう9として、配列要素をインターフェース9を定義します。本実験2において利用可能なメニューには、3つの第2レベルのメニューがあり、メニューは3〜4を有します。
3. [OK]ボタンを押して、各インタフェースインデックスをジャンプする必要があります。このステップは非常に重要な、スイッチングインタフェースとの間の関係を決定します。本実験で示すようなメニューは、インターフェース9との間のスケッチ、以下の相関図に仕上げ関係を切り替えることができる前に。
いくつかの例:
インデックスは、{0、0、0、0、0、(* menu11)}の4つの主要な変数の値を決定する、即ちmenu11インターフェース下、0です。
- アップボタンが押されると、表示menu11インタフェース、すなわちインタフェースインデックスは、その後、タイムアップ= 0です。
- キーが押下されると、表示menu12インタフェース、すなわちインタフェースインデックスは、= 1ダウン、時間1です。
- 左ボタンが押されると、表示menu11インタフェース、すなわちインタフェースインデックスは、0ダウン、時間0です。
- 右キーが押されると、表示menu21インタフェース、すなわちインタフェースインデックスは、= 2ダウン、時間2です。
したがって、得るために、{0、0、1、0、2、(* menu11)}
図5は、すなわち、インターフェースは、4つの主要な変数の{5、0、0、0、0、(* menu31)}値を決定menu31、指標です。
- アップボタンが押されると、表示menu31インタフェース、すなわちインタフェースインデックスは、その後、タイムアップ= 5です。
- キーが押下されると、表示menu32インタフェース、すなわちインタフェースインデックスは、= 6ダウン、時間6です。
- 左ボタンが押されると、表示menu21インタフェース、すなわちインタフェースインデックスは、= 2ダウン、時間2です。
- 右キーが押されると、表示menu31インタフェース、すなわちインタフェースインデックスは、= 5ダウン、時間5です。
したがって、精製し、{5、5、6、2、5、(* menu31)}
各インターフェース間のジャンプの関係は、実際の需要に応じて、以下の完全な構造アレイ可変本実験の状況を確立しました。
KEY_TABLE table[9] =
{
{0, 0, 1, 0, 2, (*menu11)},
{1, 0, 1, 1, 4, (*menu12)},
{2, 2, 3, 0, 5, (*menu21)},
{3, 2, 3, 0, 7, (*menu22)},
{4, 4, 4, 1, 4, (*menu23)},
{5, 5, 6, 2, 5, (*menu31)},
{6, 5, 6, 2, 6, (*menu32)},
{7, 7, 8, 3, 7, (*menu33)},
{8, 7, 8, 3, 8, (*menu34)},
};
実際のキーの機能は、戻り値に対応するキーのインターフェイスに対応するインデックス番号を取得し、次にインタフェースのインデックス番号に従って対応する機能を検索し、実行します。
switch (keyValue)//获取按键对应序号
{
case 1: funIndex = table[funIndex].right; break;
case 2: funIndex = table[funIndex].left; break;
case 3: funIndex = table[funIndex].down; break;
case 4: funIndex = table[funIndex].up; break;
}
current = table[funIndex].operation;//根据需要获取对应需要执行的函数
(*current)();//执行获取到的函数
3.実験材料
- 宇野R3開発ボード
- USBデータケーブルをサポート
- パンプレートと支持ケーブル
- 二軸モジュールロッカーキー
- OLEDディスプレイ
4.実験手順
1建物の概略回路図。
VCC OLEDスクリーン、GNDは、開発ボードに接続されている3.3V開発ボード、GND、SDA OLEDスクリーンSCLとA4とA5に接続されています。二軸ロッカーキーモジュールVCC、GND 5V開発ボードは、GND、X軸出力モジュールに接続され、Y軸出力ボードは、アナログピンA0、A1に接続されています。
原理を以下に示します。
物理的な接続を以下に示します。
2.、新しいスケッチを作成し、コードの交換に自動的に生成されたコードをコピーして保存します。
ロングコード、完全なコードのためには、記事の最後に提供されています。
3.開発ボードコネクタ、およびダウンロードのために、ボードの種類に対応するポート番号を設定します。
実験結果
マルチインターフェースの遷移:
テキストコードを取得するには、no社会的関心ない「TonyCode」舞台裏返信「改善」。
Arduinoの学習交換基:868 283 450
より、私は公共の数の関心を歓迎します。Fangerウェイコードに従うようにマイクロチャネルを掃引: