Subversion Repositories Projects

Rev

Rev 82 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 82 Rev 135
1
/*******************************************
1
/*******************************************
2
 *                                          
2
 *                                          
3
 * Handling of MK LCD                      
3
 * Handling of MK LCD                      
4
 *                                          
4
 *                                          
5
 * Author:        Marcus -LiGi- Bueschleb  
5
 * Author:        Marcus -LiGi- Bueschleb  
6
 * see README for further Infos
6
 * see README for further Infos
7
 *
7
 *
8
 *
8
 *
9
 *******************************************/
9
 *******************************************/
10
 
10
 
11
public class MKLCD
11
public class MKLCD
12
   implements Runnable
12
    //   implements Runnable
13
{
13
{
14
 
14
 
15
    MKCommunicator mk=null;
15
    MKCommunicator mk=null;
16
 
16
 
17
    //    public String[] LCD_str;
17
    //    public String[] LCD_str;
18
 
18
 
19
    private String[][] lcd_buf;
19
    private String[][] lcd_buf;
20
    private final static int MAX_LCD_PAGES=20;
20
    private final static int MAX_LCD_PAGES=20;
21
    int act_key=0;
21
    int act_key=0;
22
    int act_mk_page=0;
22
    int act_mk_page=0;
23
    int act_user_page=0;
23
    int act_user_page=0;
24
    boolean initial_run=true;
24
    boolean initial_run=true;
25
 
25
 
26
    int pages=0;
26
    int pages=0;
27
 
27
 
28
    int pages_read=0;
28
    int pages_read=0;
29
 
29
 
30
    byte init_state=0;
30
    byte init_state=0;
31
 
31
 
32
    public String[] get_act_page()
32
    public String[] get_act_page()
33
    { return lcd_buf[act_user_page]; }
33
    { return lcd_buf[act_user_page]; }
34
 
34
 
35
    public MKLCD(MKCommunicator _mk)
35
    public MKLCD(MKCommunicator _mk)
36
    {
36
    {
37
        lcd_buf=new String[MAX_LCD_PAGES][4];
37
        lcd_buf=new String[MAX_LCD_PAGES][4];
38
 
38
 
39
        for (int p=0;p<MAX_LCD_PAGES;p++)
39
        for (int p=0;p<MAX_LCD_PAGES;p++)
40
            {
40
            {
41
                lcd_buf[p][0]="buffering Page      ";
41
                lcd_buf[p][0]="buffering Page      ";
42
                lcd_buf[p][1]="please stay patient ";
42
                lcd_buf[p][1]="please stay patient ";
43
                lcd_buf[p][2]="                    ";
43
                lcd_buf[p][2]="                    ";
44
                lcd_buf[p][3]="        ;-)         ";
44
                lcd_buf[p][3]="        ;-)         ";
45
            }
45
            }
46
 
46
 
47
        mk=_mk;
47
        mk=_mk;
48
        new Thread( this ).start(); // fire up main Thread 
48
        //      new Thread( this ).start(); // fire up main Thread 
49
    }
49
    }
50
 
50
    /*
51
    public void run()
51
    public void run()
52
    {
52
    {
53
        while(true)
53
        while(true)
54
            {
54
            {
55
                try {
55
                try {
56
                    if (mk.connected)
56
                    if (mk.connected)
57
                        trigger_LCD();
-
 
-
 
57
                       
58
                     Thread.sleep(100);
58
                     Thread.sleep(300);
59
                    }
59
                    }
60
                catch (Exception e)  {   }
60
                catch (Exception e)  {   }
61
            }
61
            }
62
    }
62
    }
63
 
63
    */
64
    public void set_page(int page)
64
    public void set_page(int page)
65
    {
65
    {
66
        act_user_page=page;
66
        act_user_page=page;
67
    }
67
    }
68
 
68
 
69
    public void handle_lcd_data(int[] data,int row)
69
    public void handle_lcd_data(int[] data,int row)
70
    {
70
    {
71
        if (row==0) // firs row indicates page
71
        if (row==0) // firs row indicates page
72
            {
72
            {
73
            pages_read++;
73
            pages_read++;
74
            act_mk_page=data[18]-48;
74
            act_mk_page=data[18]-48;
75
            if (data[17]!=91) // [
75
            if (data[17]!=91) // [
76
                act_mk_page+=10*(data[17]-48);
76
                act_mk_page+=10*(data[17]-48);
77
            if (act_mk_page>pages)
77
            if (act_mk_page>pages)
78
                pages=act_mk_page;
78
                pages=act_mk_page;
79
            if (( init_state==1)&&(act_mk_page==0))
79
            if (( init_state==1)&&(act_mk_page==0))
80
                { init_state=2; act_key=1; }
80
                { init_state=2; act_key=1; }
81
            else if ((init_state==2)&&(act_mk_page!=0))
81
            else if ((init_state==2)&&(act_mk_page!=0))
82
                { init_state=3; act_key=2; }
82
                { init_state=3; act_key=2; }
83
 
83
 
84
 
84
 
85
            }
85
            }
86
       
86
       
87
        lcd_buf[act_mk_page][row]="";
87
        lcd_buf[act_mk_page][row]="";
88
        for(int foo=0;foo<20;foo++)
88
        for(int foo=0;foo<20;foo++)
89
            lcd_buf[act_mk_page][row]+=(char)data[foo];
89
            lcd_buf[act_mk_page][row]+=(char)data[foo];
90
 
90
 
91
        if (init_state==-1) // init  over
91
        if (init_state==-1) // init  over
92
            {
92
            {
93
                if (act_mk_page<act_user_page)
93
                if (act_mk_page<act_user_page)
94
                    act_key=2;
94
                    act_key=2;
95
               
95
                else
96
                if (act_mk_page>act_user_page)
96
                if (act_mk_page>act_user_page)
97
                    act_key=1;
97
                    act_key=1;
-
 
98
                if (act_mk_page==act_user_page)
-
 
99
                    act_key=0;
98
 
100
 
99
            }
101
            }
100
       
102
       
101
        else if (init_state==3)
103
        else if (init_state==3)
102
            {
104
            {
103
                if (row==3)
105
                if (row==3)
104
                    {
106
                    {
105
                        if(act_mk_page==pages-1)
107
                        if(act_mk_page==pages-1)
106
                            init_state=-1;
108
                            init_state=-1;
107
                        else
109
                        else
108
                            act_key=2;
110
                            act_key=2;
109
                    }
111
                    }
110
            }
112
            }
111
               
113
               
112
               
114
               
113
    }
115
    }
114
 
116
 
115
    boolean init=true;
117
    boolean init=true;
116
    public void trigger_LCD()
118
    public void trigger_LCD()
117
    {
119
    {
118
        if (mk.connected && mk.version.known)
120
        if (mk.connected && mk.version.known)
119
            try {
121
            try {
120
                if (init_state==0)
122
                if (init_state==0)
121
                    {
123
                    {
122
                    mk.trigger_LCD(3);
124
                    mk.trigger_LCD(3);
123
                    init_state++;
125
                    init_state++;
124
                    }
126
                    }
125
                else
127
                else
126
                    mk.trigger_LCD(act_key);
128
                    mk.trigger_LCD(act_key);
127
 
129
 
128
                act_key=0;
130
                act_key=0;
129
        }
131
        }
130
        catch (Exception e)  {   }
132
        catch (Exception e)  {   }
131
    }
133
    }
132
 
134
 
133
   
135
   
134
 
-
 
135
 
-
 
136
 
-
 
137
 
-
 
138
 
136
 
139
    public void LCD_NEXTPAGE()
137
    public void LCD_NEXTPAGE()
140
    {
138
    {
141
        if (act_user_page!=pages)
139
        if (act_user_page!=pages)
142
            act_user_page++;
140
            act_user_page++;
143
        else
141
        else
144
            act_user_page=0;
142
            act_user_page=0;
145
 
143
 
146
    }
144
    }
147
 
145
 
148
    public void LCD_PREVPAGE()
146
    public void LCD_PREVPAGE()
149
    {
147
    {
150
        if (act_user_page!=0)
148
        if (act_user_page!=0)
151
            act_user_page--;
149
            act_user_page--;
152
        else
150
        else
153
            act_user_page=pages;
151
            act_user_page=pages;
154
    }
152
    }
155
   
153
   
156
}
154
}
157
 
155