Weerstation.java 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Timer;
  4. import java.util.TimerTask;
  5. import java.util.Calendar;
  6. public class Weerstation {
  7. WeerstationConnector weerstation1;
  8. Calendar now;
  9. Periode periodeDag;
  10. Measurement meting1;
  11. ArrayList<Measurement> meting2;
  12. Timer starter;
  13. int currentScreen;
  14. boolean wait;
  15. boolean graph;
  16. boolean startup;
  17. public Weerstation(){
  18. weerstation1 = new WeerstationConnector();
  19. now = Calendar.getInstance();
  20. periodeDag = new Periode(2013,12,25,2014,1,5);
  21. System.out.println(periodeDag);
  22. GUIboard.init();
  23. starter = new Timer();
  24. startAnimatie();
  25. meting1 = weerstation1.getMostRecentMeasurement();
  26. meting2 = weerstation1.getAllMeasurementsBetween(periodeDag.getBeginPeriode(), periodeDag.getEindePeriode());
  27. System.out.println(meting2.size());
  28. stopAnimatie();
  29. while(startup)
  30. {
  31. try
  32. {
  33. Thread.sleep(1);
  34. }
  35. catch(InterruptedException e)
  36. {
  37. e.printStackTrace();
  38. }
  39. }
  40. currentScreen = 0;
  41. wait = true;
  42. graph = false;
  43. Timer timer = new Timer();
  44. //All the different screen classes
  45. final List<Grootheid> lstScreens = new ArrayList<Grootheid>();
  46. lstScreens.add(new LangsteZomerPeriode(meting1, meting2, periodeDag));
  47. lstScreens.add(new MaximaleRegenPeriode(meting1, meting2));
  48. lstScreens.add(new WindDirection(meting1, meting2));
  49. lstScreens.add(new OutsideTemp(meting1, meting2));
  50. lstScreens.add(new WindChill(meting1, meting2));
  51. lstScreens.add(new OutsideHum(meting1, meting2));
  52. lstScreens.add(new Barometer(meting1, meting2));
  53. lstScreens.add(new AvgWindSpeed(meting1, meting2));
  54. lstScreens.add(new RainRate(meting1, meting2));
  55. lstScreens.add(new InsideTemp(meting1, meting2));
  56. lstScreens.add(new InsideHum(meting1, meting2));
  57. lstScreens.add(new CloudHeight(meting1, meting2));
  58. lstScreens.add(new UVLevel(meting1, meting2));
  59. lstScreens.add(new Zonsterkte(meting1, meting2));
  60. lstScreens.add(new DewPoint(meting1, meting2));
  61. lstScreens.add(new Sun(meting1));
  62. //Screen switcher
  63. timer.scheduleAtFixedRate(new TimerTask() {
  64. public void run() {
  65. if(!wait){
  66. currentScreen++;
  67. }
  68. if(currentScreen == lstScreens.size()){
  69. currentScreen = 0;
  70. }
  71. Grootheid obj = lstScreens.get(currentScreen);
  72. if(graph)
  73. {
  74. obj.displayGraph();
  75. }
  76. else
  77. {
  78. obj.display();
  79. }
  80. }
  81. }, 0, 5*1000);
  82. //Update recent measurement every 60 seconds
  83. timer.scheduleAtFixedRate(new TimerTask() {
  84. public void run() {
  85. meting1 = weerstation1.getMostRecentMeasurement();
  86. for(Grootheid obj : lstScreens){
  87. obj.updateRecent(meting1);
  88. }
  89. }
  90. }, 60*1000, 60*1000);
  91. //Update 24hours every 60 seconds
  92. timer.scheduleAtFixedRate(new TimerTask() {
  93. public void run() {
  94. meting2 = weerstation1.getAllMeasurementsLast24h();
  95. for(Grootheid obj : lstScreens){
  96. obj.update24Hour(meting2);
  97. }
  98. }
  99. }, 10*60*1000, 10*60*1000);
  100. //Button checker
  101. timer.scheduleAtFixedRate(new TimerTask() {
  102. public void run() {
  103. if(IO.readShort(0x100) == 1){
  104. if(IO.readShort(0x80) == 1){
  105. wait = true;
  106. if(!graph)
  107. {
  108. Grootheid obj = lstScreens.get(currentScreen);
  109. obj.displayGraph();
  110. }
  111. graph = true;
  112. }else if(IO.readShort(0x80) == 0){
  113. wait = false;
  114. if(graph)
  115. {
  116. Grootheid obj = lstScreens.get(currentScreen);
  117. obj.display();
  118. }
  119. graph = false;
  120. }
  121. }else if(IO.readShort(0x100) == 0){
  122. if(IO.readShort(0x80) == 1){
  123. if(!graph)
  124. {
  125. Grootheid obj = lstScreens.get(currentScreen);
  126. obj.displayGraph();
  127. }
  128. graph = true;
  129. }else if(IO.readShort(0x80) == 0){
  130. if(graph)
  131. {
  132. Grootheid obj = lstScreens.get(currentScreen);
  133. obj.display();
  134. }
  135. graph = false;
  136. }
  137. wait = true;
  138. }
  139. }
  140. }, 0, 100);
  141. }
  142. public void startAnimatie()
  143. {
  144. starter.scheduleAtFixedRate(new TimerTask() {
  145. public void run() {
  146. startup = true;
  147. GUIboard.clearBottom();
  148. for(int i=1; i<128;i+=2)
  149. {
  150. for(int n=0; n<32;n++)
  151. {
  152. IO.writeShort(0x42, 1 << 12 | i-1 << 5 | n);
  153. IO.writeShort(0x42, 1 << 12 | i << 5 | n);
  154. IO.delay(1);
  155. }
  156. }
  157. startup = false;
  158. }
  159. }, 0, 128*32);
  160. }
  161. public void stopAnimatie()
  162. {
  163. starter.cancel();
  164. }
  165. }