Subversion Repositories Projects

Rev

Rev 135 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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