New loading animation and easier Periode selecting
This commit is contained in:
+114
-64
@@ -1,4 +1,4 @@
|
|||||||
package weerstation;
|
|
||||||
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -17,62 +17,67 @@ public class Weerstation {
|
|||||||
Measurement meting1;
|
Measurement meting1;
|
||||||
ArrayList<Measurement> meting2;
|
ArrayList<Measurement> meting2;
|
||||||
Timer starter;
|
Timer starter;
|
||||||
|
Timer animator;
|
||||||
int currentScreen;
|
int currentScreen;
|
||||||
boolean wait;
|
boolean wait;
|
||||||
boolean graph;
|
boolean graph;
|
||||||
boolean currentGraph;
|
boolean currentGraph;
|
||||||
boolean startup;
|
boolean startup;
|
||||||
boolean startupState;
|
boolean startupState;
|
||||||
|
boolean load;
|
||||||
|
|
||||||
public Weerstation(){
|
public Weerstation(){
|
||||||
now = Calendar.getInstance();
|
now = Calendar.getInstance();
|
||||||
calPeriod = Calendar.getInstance();
|
calPeriod = Calendar.getInstance();
|
||||||
ArrayList<Periode> periods = new ArrayList<Periode>();
|
ArrayList<Periode> periods = new ArrayList<Periode>();
|
||||||
|
|
||||||
GUIboard.init();
|
GUIboard.init();
|
||||||
startupState = true;
|
startupState = true;
|
||||||
starter = new Timer();
|
starter = new Timer();
|
||||||
startAnimatie();
|
startStartupAnimatie();
|
||||||
|
|
||||||
calPeriod.add(Calendar.DATE, -1);
|
calPeriod.add(Calendar.DATE, -1);
|
||||||
periods.add(new Periode(now, calPeriod));
|
periods.add(new Periode(now, calPeriod));
|
||||||
calPeriod = Calendar.getInstance();
|
calPeriod = Calendar.getInstance();
|
||||||
|
|
||||||
calPeriod.add(Calendar.DATE, -7);
|
calPeriod.add(Calendar.DATE, -7);
|
||||||
periods.add(new Periode(now, calPeriod));
|
periods.add(new Periode(now, calPeriod));
|
||||||
calPeriod = Calendar.getInstance();
|
calPeriod = Calendar.getInstance();
|
||||||
|
|
||||||
calPeriod.add(Calendar.MONTH, -1);
|
calPeriod.add(Calendar.MONTH, -1);
|
||||||
periods.add(new Periode(now, calPeriod));
|
periods.add(new Periode(now, calPeriod));
|
||||||
calPeriod = Calendar.getInstance();
|
calPeriod = Calendar.getInstance();
|
||||||
|
|
||||||
calPeriod.add(Calendar.MONTH, -3);
|
calPeriod.add(Calendar.MONTH, -3);
|
||||||
periods.add(new Periode(now, calPeriod));
|
periods.add(new Periode(now, calPeriod));
|
||||||
calPeriod = Calendar.getInstance();
|
calPeriod = Calendar.getInstance();
|
||||||
|
|
||||||
calPeriod.add(Calendar.MONTH, -6);
|
calPeriod.add(Calendar.MONTH, -6);
|
||||||
periods.add(new Periode(now, calPeriod));
|
periods.add(new Periode(now, calPeriod));
|
||||||
calPeriod = Calendar.getInstance();
|
calPeriod = Calendar.getInstance();
|
||||||
|
|
||||||
calPeriod.add(Calendar.YEAR, -1);
|
calPeriod.add(Calendar.YEAR, -1);
|
||||||
periods.add(new Periode(now, calPeriod));
|
periods.add(new Periode(now, calPeriod));
|
||||||
calPeriod = Calendar.getInstance();
|
calPeriod = Calendar.getInstance();
|
||||||
|
|
||||||
calPeriod.add(Calendar.YEAR, -2);
|
calPeriod.add(Calendar.YEAR, -2);
|
||||||
periods.add(new Periode(now, calPeriod));
|
periods.add(new Periode(now, calPeriod));
|
||||||
calPeriod = Calendar.getInstance();
|
calPeriod = Calendar.getInstance();
|
||||||
|
|
||||||
System.out.println("Day: " + periods.get(0));
|
System.out.println("Day: " + periods.get(0));
|
||||||
System.out.println("Week: " + periods.get(1));
|
System.out.println("Week: " + periods.get(1));
|
||||||
System.out.println("Month: " + periods.get(2));
|
System.out.println("Month: " + periods.get(2));
|
||||||
System.out.println("2 Months: " + periods.get(3));
|
System.out.println("3 Months: " + periods.get(3));
|
||||||
System.out.println("3 Months: " + periods.get(4));
|
System.out.println("6 Months: " + periods.get(4));
|
||||||
System.out.println("6 Months: " + periods.get(5));
|
System.out.println("Year: " + periods.get(5));
|
||||||
System.out.println("Year: " + periods.get(6));
|
System.out.println("2 Years: " + periods.get(6));
|
||||||
|
|
||||||
|
//Kies hier welke periode je wil laden, hij veranderd in een keer alles:
|
||||||
|
int periodeNr = 0;
|
||||||
|
|
||||||
weerstation1 = new WeerstationConnector();
|
weerstation1 = new WeerstationConnector();
|
||||||
meting1 = weerstation1.getMostRecentMeasurement();
|
meting1 = weerstation1.getMostRecentMeasurement();
|
||||||
meting2 = weerstation1.getAllMeasurementsBetween(periods.get(3).getBeginPeriode(), periods.get(3).getEindePeriode());
|
meting2 = weerstation1.getAllMeasurementsBetween(periods.get(periodeNr).getBeginPeriode(), periods.get(periodeNr).getEindePeriode());
|
||||||
currentGraph = false;
|
currentGraph = false;
|
||||||
startupState = false;
|
startupState = false;
|
||||||
currentScreen = 0;
|
currentScreen = 0;
|
||||||
@@ -83,25 +88,26 @@ public class Weerstation {
|
|||||||
//All the different screen classes
|
//All the different screen classes
|
||||||
|
|
||||||
final List<Grootheid> lstScreens = new ArrayList<Grootheid>();
|
final List<Grootheid> lstScreens = new ArrayList<Grootheid>();
|
||||||
lstScreens.add(new MaximaleRegenPeriode(meting1, meting2));
|
|
||||||
lstScreens.add(new WindDirection(meting1, meting2));
|
|
||||||
lstScreens.add(new OutsideTemp(meting1, meting2));
|
|
||||||
lstScreens.add(new WindChill(meting1, meting2));
|
|
||||||
lstScreens.add(new OutsideHum(meting1, meting2));
|
|
||||||
lstScreens.add(new Barometer(meting1, meting2));
|
|
||||||
lstScreens.add(new AvgWindSpeed(meting1, meting2));
|
|
||||||
lstScreens.add(new RainRate(meting1, meting2));
|
|
||||||
lstScreens.add(new InsideTemp(meting1, meting2));
|
|
||||||
lstScreens.add(new InsideHum(meting1, meting2));
|
|
||||||
lstScreens.add(new CloudHeight(meting1, meting2));
|
|
||||||
lstScreens.add(new UVLevel(meting1, meting2));
|
|
||||||
lstScreens.add(new Zonsterkte(meting1, meting2));
|
|
||||||
lstScreens.add(new DewPoint(meting1, meting2));
|
|
||||||
lstScreens.add(new Sun(meting1));
|
|
||||||
lstScreens.add(new LangsteZomerPeriode(meting1, meting2));
|
|
||||||
lstScreens.add(new GraadDagen(meting1, meting2));
|
|
||||||
|
|
||||||
stopAnimatie();
|
lstScreens.add(new OutsideTemp(meting1, meting2)); //Buitentemperatuur
|
||||||
|
lstScreens.add(new WindDirection(meting1, meting2)); //Windrichting
|
||||||
|
lstScreens.add(new WindChill(meting1, meting2)); //Gevoelstemperatuur
|
||||||
|
lstScreens.add(new OutsideHum(meting1, meting2)); //Luchtv. Buiten
|
||||||
|
lstScreens.add(new Barometer(meting1, meting2)); //Luchtdruk
|
||||||
|
lstScreens.add(new AvgWindSpeed(meting1, meting2)); //Gem. Windsnelheid
|
||||||
|
lstScreens.add(new RainRate(meting1, meting2)); //Regenval
|
||||||
|
lstScreens.add(new InsideTemp(meting1, meting2)); //Binnentemperatuur
|
||||||
|
lstScreens.add(new InsideHum(meting1, meting2)); //Luchtv. Binnen
|
||||||
|
lstScreens.add(new CloudHeight(meting1, meting2)); //Wolkhoogte
|
||||||
|
lstScreens.add(new UVLevel(meting1, meting2)); //UV Level
|
||||||
|
lstScreens.add(new Zonsterkte(meting1, meting2)); //Zonkracht
|
||||||
|
lstScreens.add(new DewPoint(meting1, meting2)); //Dauwpunt
|
||||||
|
lstScreens.add(new Sun(meting1)); //Sunrise en Sunset
|
||||||
|
lstScreens.add(new LangsteZomerPeriode(meting1, meting2)); //Langste Zomerse Periode
|
||||||
|
lstScreens.add(new MaximaleRegenPeriode(meting1, meting2)); //Totale regenval in een periode
|
||||||
|
lstScreens.add(new GraadDagen(meting1, meting2)); //Aantal graaddagen in een periode
|
||||||
|
|
||||||
|
stopStartupAnimatie();
|
||||||
while(startup)
|
while(startup)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -131,8 +137,8 @@ public class Weerstation {
|
|||||||
Grootheid obj = lstScreens.get(currentScreen);
|
Grootheid obj = lstScreens.get(currentScreen);
|
||||||
if(graph && (graph != currentGraph))
|
if(graph && (graph != currentGraph))
|
||||||
{
|
{
|
||||||
obj.displayGraph();
|
obj.displayGraph();
|
||||||
currentGraph = true;
|
currentGraph = true;
|
||||||
}
|
}
|
||||||
else if(!graph)
|
else if(!graph)
|
||||||
{
|
{
|
||||||
@@ -155,12 +161,30 @@ public class Weerstation {
|
|||||||
//Update 24hours every 60 seconds
|
//Update 24hours every 60 seconds
|
||||||
timer.scheduleAtFixedRate(new TimerTask() {
|
timer.scheduleAtFixedRate(new TimerTask() {
|
||||||
public void run() {
|
public void run() {
|
||||||
meting2 = weerstation1.getAllMeasurementsLast24h();
|
|
||||||
|
animator = new Timer();
|
||||||
|
startLoadAnimatie();
|
||||||
|
|
||||||
|
meting2 = weerstation1.getAllMeasurementsBetween(periods.get(periodeNr).getBeginPeriode(), periods.get(periodeNr).getEindePeriode());
|
||||||
for(Grootheid obj : lstScreens){
|
for(Grootheid obj : lstScreens){
|
||||||
obj.updatePeriod(meting2);
|
obj.updatePeriod(meting2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stopLoadAnimatie();
|
||||||
|
|
||||||
|
while(load)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Thread.sleep(1);
|
||||||
|
}
|
||||||
|
catch(InterruptedException e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, 10*60*1000, 10*60*1000);
|
},10*60*1000, 10*60*1000);
|
||||||
|
|
||||||
|
|
||||||
//Button checker
|
//Button checker
|
||||||
@@ -207,7 +231,7 @@ public class Weerstation {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startAnimatie()
|
public void startStartupAnimatie()
|
||||||
{
|
{
|
||||||
starter.scheduleAtFixedRate(new TimerTask() {
|
starter.scheduleAtFixedRate(new TimerTask() {
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -252,25 +276,51 @@ public class Weerstation {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IO.delay(6);
|
IO.delay(8);
|
||||||
}
|
}
|
||||||
|
|
||||||
startup = false;
|
startup = false;
|
||||||
}
|
}
|
||||||
}, 0, 128*6 + 2);
|
}, 0, (128 + 1)*8);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stopAnimatie()
|
public void stopStartupAnimatie()
|
||||||
{
|
{
|
||||||
starter.cancel();
|
starter.cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void startLoadAnimatie()
|
||||||
|
{
|
||||||
|
animator.scheduleAtFixedRate(new TimerTask() {
|
||||||
|
public void run() {
|
||||||
|
load = true;
|
||||||
|
for(int i=0; i<128;i++)
|
||||||
|
{
|
||||||
|
IO.writeShort(0x42, 0 << 12 | i << 5 | 31);
|
||||||
|
IO.delay(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i=0; i<128;i++)
|
||||||
|
{
|
||||||
|
IO.writeShort(0x42, 1 << 12 | i << 5 | 31);
|
||||||
|
IO.delay(4);
|
||||||
|
}
|
||||||
|
load = false;
|
||||||
|
}
|
||||||
|
}, 0, (128 + 1)*8);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stopLoadAnimatie()
|
||||||
|
{
|
||||||
|
animator.cancel();
|
||||||
|
}
|
||||||
|
|
||||||
public void checkData(){
|
public void checkData(){
|
||||||
Iterator<Measurement> it = meting2.iterator();
|
Iterator<Measurement> it = meting2.iterator();
|
||||||
while( it.hasNext() )
|
while( it.hasNext() )
|
||||||
{
|
{
|
||||||
Measurement m = it.next();
|
Measurement m = it.next();
|
||||||
if(m.getRawOutsideTemp() >= 30000)
|
if(m.getRawOutsideTemp() >= Short.MAX_VALUE)
|
||||||
{
|
{
|
||||||
it.remove();
|
it.remove();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user