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 |