Weerstation.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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. //Screen switcher
  35. timer.scheduleAtFixedRate(new TimerTask() {
  36. public void run() {
  37. if(!wait){
  38. currentScreen++;
  39. }
  40. if(currentScreen == lstScreens.size()){
  41. currentScreen = 0;
  42. }
  43. Grootheid obj = lstScreens.get(currentScreen);
  44. if(graph)
  45. {
  46. obj.displayGraph();
  47. }
  48. else
  49. {
  50. obj.display();
  51. }
  52. }
  53. }, 0, 5*1000);
  54. //Update recent measurement every 60 seconds
  55. timer.scheduleAtFixedRate(new TimerTask() {
  56. public void run() {
  57. meting1 = weerstation1.getMostRecentMeasurement();
  58. for(Grootheid obj : lstScreens){
  59. obj.updateRecent(meting1);
  60. }
  61. }
  62. }, 60*1000, 60*1000);
  63. //Update 24hours every 60 seconds
  64. timer.scheduleAtFixedRate(new TimerTask() {
  65. public void run() {
  66. meting2 = weerstation1.getAllMeasurementsLast24h();
  67. for(Grootheid obj : lstScreens){
  68. obj.update24Hour(meting2);
  69. }
  70. }
  71. }, 10*60*1000, 10*60*1000);
  72. //Button checker
  73. timer.scheduleAtFixedRate(new TimerTask() {
  74. public void run() {
  75. if(IO.readShort(0x100) == 1){
  76. if(IO.readShort(0x80) == 1){
  77. wait = true;
  78. if(!graph)
  79. {
  80. Grootheid obj = lstScreens.get(currentScreen);
  81. obj.displayGraph();
  82. }
  83. graph = true;
  84. }else if(IO.readShort(0x80) == 0){
  85. wait = false;
  86. if(graph)
  87. {
  88. Grootheid obj = lstScreens.get(currentScreen);
  89. obj.display();
  90. }
  91. graph = false;
  92. }
  93. }else if(IO.readShort(0x100) == 0){
  94. if(IO.readShort(0x80) == 1){
  95. if(!graph)
  96. {
  97. Grootheid obj = lstScreens.get(currentScreen);
  98. obj.displayGraph();
  99. }
  100. graph = true;
  101. }else if(IO.readShort(0x80) == 0){
  102. if(graph)
  103. {
  104. Grootheid obj = lstScreens.get(currentScreen);
  105. obj.display();
  106. }
  107. graph = false;
  108. }
  109. wait = true;
  110. }
  111. }
  112. }, 0, 100);
  113. }
  114. }