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) |