Weerstation.java 4.4 KB

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