Dependencies:   mbed

Revision:
0:408a2c6feb1f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Jan 20 15:09:13 2010 +0000
@@ -0,0 +1,106 @@
+#include "mbed.h"
+#include "Terminal.h"
+
+#define MaxNo_Menu 5
+
+Terminal term(USBTX, USBRX); // tx, rx
+
+char *menu_list1[MaxNo_Menu] = { "Apple", "Pear", "Banana", "Kiwi", "Plum" };
+char *menu_list2[MaxNo_Menu] = { "Orange", "Peach", "Strawberry", "Blueberry", "Grapes" };
+int ypos[MaxNo_Menu] = { 3, 6, 9, 12, 15 };
+
+void InitScreen(void){        //Print all the fruits on the screen
+    
+    term.background(0xFF0000);
+    term.foreground(0xFFFFFF);
+    for(int i=0; i< MaxNo_Menu; i++){             
+        term.locate(5, ypos[i]);
+        term.printf("%s",menu_list1[i]);
+        term.locate(15, ypos[i]);
+        term.printf("%s",menu_list2[i]);
+    }  
+}
+
+void UpdateScreen(int LastIndex, int LastColumn, int Index, int Column){    //Just update the fuits that has changed
+     
+     term.background(0xFFFFFF);                                //Highlight the new fruit
+     term.foreground(0xFF0000);
+     if(Column==0){
+         term.locate(5, ypos[Index]);
+         term.printf("%s",menu_list1[Index]);
+     }
+     else{
+         term.locate(15, ypos[Index]);
+         term.printf("%s",menu_list2[Index]);
+     }  
+     
+     term.background(0xFF0000);                                //Black out the old fruit
+     term.foreground(0xFFFFFF);
+     if(LastColumn==0){
+         term.locate(5, ypos[LastIndex]);
+         term.printf("%s",menu_list1[LastIndex]);
+     }
+     else{
+         term.locate(15, ypos[LastIndex]);
+         term.printf("%s",menu_list2[LastIndex]);
+     } 
+}
+     
+int main() {
+
+    int Key;
+    int Index=0, Column=0, LastIndex=0, LastColumn=1;
+
+    term.background(0xFF0000);
+    term.foreground(0xFFFFFF);
+    term.cls();
+    term.locate(15,1);
+    term.printf("What is your favourite fruit?");
+    InitScreen();
+    UpdateScreen(LastIndex, LastColumn,Index, Column);    
+    term.box(2,2,30,15);   
+ 
+    while(1){   
+       Key=term.getc();                                //Get the keypad pressed
+            if((Key>=0x30)&&(Key<=0x39)){              //See if it's a number (0-9)
+            }
+            else if(Key==0x1B){                        //If the keypress was an arrow key                                                  
+                Key = term.getc();                     //Check again!                  
+                if (Key == 0x5B){
+                    Key = term.getc(); 
+                    LastIndex=Index;
+                    LastColumn=Column;
+                    switch(Key){                          //Check to see which arrow key...
+                        case 0x41:                        //It was the UP arrow key...
+                            Index--;
+                            if(Index<0)
+                                Index = MaxNo_Menu - 1;
+                            break;
+                        case 0x42:                        //It was the DOWN arrow key...
+                            Index++;
+                            if(Index >= MaxNo_Menu)
+                                Index = 0;
+                            break;
+                        case 0x43:                        //It was the RIGHT arrow key...
+                            Column++;
+                            if(Column>1)
+                                Column=0;
+                            break;
+                        case 0x44:                        //It was the LEFT arrow key...
+                            Column--;
+                            if(Column<0)
+                                Column=1;
+                            break;
+                    }
+                    UpdateScreen(LastIndex, LastColumn,Index, Column);   
+                }  
+            }
+            else if(Key>=0x0D){                        //See if it was ENTER
+                term.locate(15,18);
+                if(Column==0)
+                    term.printf("Your favourite fruit is %s       ",menu_list1[Index]);
+                else
+                    term.printf("Your favourite fruit is %s       ",menu_list2[Index]);
+            }
+    }
+}