Details | 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 | } |