Subversion Repositories Projects

Rev

Rev 4 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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