Weerstation.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import java.lang.reflect.InvocationTargetException;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Timer;
  5. import java.util.TimerTask;
  6. public class Weerstation {
  7. WeerstationConnector weerstation1;
  8. Measurement meting1;
  9. ArrayList<Measurement> meting2;
  10. int currentScreen;
  11. boolean wait;
  12. boolean graph;
  13. public Weerstation(){
  14. weerstation1 = new WeerstationConnector();
  15. meting1 = weerstation1.getMostRecentMeasurement();
  16. meting2 = weerstation1.getAllMeasurementsLast24h();
  17. currentScreen = 0;
  18. wait = true;
  19. graph = false;
  20. IO.init();
  21. Timer timer = new Timer();
  22. //All the different screen classes
  23. final List<Grootheid> lstScreens = new ArrayList<Grootheid>();
  24. lstScreens.add(new OutsideTemp(meting1, meting2));
  25. lstScreens.add(new WindChill(meting1, meting2));
  26. lstScreens.add(new OutsideHum(meting1, meting2));
  27. lstScreens.add(new Barometer(meting1, meting2));
  28. lstScreens.add(new AvgWindSpeed(meting1, meting2));
  29. lstScreens.add(new RainRate(meting1, meting2));
  30. lstScreens.add(new InsideTemp(meting1, meting2));
  31. lstScreens.add(new InsideHum(meting1, meting2));
  32. lstScreens.add(new CloudHeight(meting1, meting2));
  33. lstScreens.add(new UVLevel(meting1, meting2));
  34. lstScreens.add(new Zonsterkte(meting1, meting2));
  35. lstScreens.add(new DewPoint(meting1, meting2));
  36. //Screen switcher
  37. timer.scheduleAtFixedRate(new TimerTask() {
  38. public void run() {
  39. if(!wait){
  40. currentScreen++;
  41. }
  42. if(currentScreen == lstScreens.size()){
  43. currentScreen = 0;
  44. }
  45. Grootheid obj = lstScreens.get(currentScreen);
  46. if(graph)
  47. {
  48. obj.displayGraph();
  49. }
  50. else
  51. {
  52. obj.display();
  53. }
  54. }
  55. }, 0, 5*1000);
  56. //Update recent measurement every 60 seconds
  57. timer.scheduleAtFixedRate(new TimerTask() {
  58. public void run() {
  59. meting1 = weerstation1.getMostRecentMeasurement();
  60. for(Grootheid obj : lstScreens){
  61. obj.updateRecent(meting1);
  62. }
  63. }
  64. }, 60*1000, 60*1000);
  65. //Update 24hours every 60 seconds
  66. timer.scheduleAtFixedRate(new TimerTask() {
  67. public void run() {
  68. meting2 = weerstation1.getAllMeasurementsLast24h();
  69. for(Grootheid obj : lstScreens){
  70. obj.update24Hour(meting2);
  71. }
  72. }
  73. }, 10*60*1000, 10*60*1000);
  74. //Button checker
  75. timer.scheduleAtFixedRate(new TimerTask() {
  76. public void run() {
  77. if(IO.readShort(0x100) == 1){
  78. if(IO.readShort(0x80) == 1){
  79. wait = true;
  80. if(!graph)
  81. {
  82. Grootheid obj = lstScreens.get(currentScreen);
  83. obj.displayGraph();
  84. }
  85. graph = true;
  86. }else if(IO.readShort(0x80) == 0){
  87. wait = false;
  88. if(graph)
  89. {
  90. Grootheid obj = lstScreens.get(currentScreen);
  91. obj.display();
  92. }
  93. graph = false;
  94. }
  95. }else if(IO.readShort(0x100) == 0){
  96. if(IO.readShort(0x80) == 1){
  97. if(!graph)
  98. {
  99. Grootheid obj = lstScreens.get(currentScreen);
  100. obj.displayGraph();
  101. }
  102. graph = true;
  103. }else if(IO.readShort(0x80) == 0){
  104. if(graph)
  105. {
  106. Grootheid obj = lstScreens.get(currentScreen);
  107. obj.display();
  108. }
  109. graph = false;
  110. }
  111. wait = true;
  112. }
  113. }
  114. }, 0, 100);
  115. }
  116. }