Improved Console and fixed .display(..., double batt) bug
The console has many extra functions and an improved help screen. It also accepts names as well as numbers for input. Example: /periode 3maanden /scherm binnenluchtvochtigheid It searches for keywords, so exact naming is not necessary.
This commit is contained in:
+1
-1
@@ -19,7 +19,7 @@ public class GraadDagen extends Grootheid{
|
||||
graadDagen = StatisticsCalculator.graadDagen(list);
|
||||
}
|
||||
|
||||
public void display(String periode, boolean knop1, boolean knop2, short batt){
|
||||
public void display(String periode, boolean knop1, boolean knop2, double batt){
|
||||
GUIboard.writePageToMatrix("Aantal Graaddagen", graadDagen + "", periode, knop1, knop2, batt);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ public class LangsteDroogstePeriode extends Grootheid{
|
||||
langstePeriode = StatisticsCalculator.langsteDroogstePeriode(list);
|
||||
}
|
||||
|
||||
public void display(String periode, boolean knop1, boolean knop2, short batt){
|
||||
public void display(String periode, boolean knop1, boolean knop2, double batt){
|
||||
GUIboard.writePageToMatrix("Langste Droge Periode", langstePeriode + "", periode, knop1, knop2, batt);
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ public class LangsteRegenPeriode extends Grootheid{
|
||||
regenPeriode = Calculator.timeStampToPeriode( measurement2.get(index[0]).getDateStamp(), measurement2.get(index[1]).getDateStamp());
|
||||
}
|
||||
|
||||
public void display(String periode, boolean knop1, boolean knop2, short batt)
|
||||
public void display(String periode, boolean knop1, boolean knop2, double batt)
|
||||
{
|
||||
GUIboard.writePageToMatrix("Langste Regen Periode", regenPeriode.toString(), periode, knop1, knop2, batt);
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+457
-201
@@ -1,6 +1,3 @@
|
||||
package weerstation;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Iterator;
|
||||
@@ -35,6 +32,8 @@ public class Weerstation{
|
||||
|
||||
boolean button1, button2, button3, graphIsDisplayed;
|
||||
|
||||
boolean console;
|
||||
|
||||
/**
|
||||
* Constructor voor weerstation
|
||||
*/
|
||||
@@ -51,6 +50,8 @@ public class Weerstation{
|
||||
currentScreen = 0;
|
||||
periodeNr = 0;
|
||||
graphIsDisplayed = false;
|
||||
|
||||
console = true;
|
||||
|
||||
|
||||
//De thread die op de achtergrond alles laad
|
||||
@@ -94,7 +95,7 @@ public class Weerstation{
|
||||
{
|
||||
if(!graphIsDisplayed)
|
||||
{
|
||||
setScreen(currentScreen + 1);
|
||||
setScreen(currentScreen + 1);
|
||||
if(currentScreen == 0 && button1)
|
||||
{
|
||||
setPeriod(periodeNr + 1);
|
||||
@@ -185,6 +186,458 @@ public class Weerstation{
|
||||
}, 0, 200);
|
||||
}
|
||||
|
||||
public void setScreen(int screen)
|
||||
{ //Set the next screen
|
||||
if (screen >= periodsScreens.get(periodeNr).size() || screen < 0)
|
||||
{
|
||||
currentScreen = 0;
|
||||
}else{
|
||||
currentScreen = screen;
|
||||
}
|
||||
}
|
||||
|
||||
public void setPeriod(int period)
|
||||
{ //Set the period
|
||||
if(period >= periodsScreens.size() || period < 0)
|
||||
{
|
||||
periodeNr = 0;
|
||||
}else{
|
||||
periodeNr = period;
|
||||
}
|
||||
setScreen(currentScreen);
|
||||
}
|
||||
|
||||
public void displayGraph()
|
||||
{
|
||||
if(!graphIsDisplayed)
|
||||
{
|
||||
Grootheid obj = periodsScreens.get(periodeNr).get(currentScreen);
|
||||
obj.displayGraph();
|
||||
graphIsDisplayed = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void displayMain()
|
||||
{
|
||||
Grootheid obj = periodsScreens.get(periodeNr).get(currentScreen);
|
||||
obj.display(periods.get(periodeNr).getName(), button1, button2, meting1.getBattLevel());
|
||||
graphIsDisplayed = false;
|
||||
}
|
||||
|
||||
public void console(){
|
||||
|
||||
new Thread("Console")
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
String voorvoegsel = "weerstation ~ $ ";
|
||||
String input;
|
||||
System.out.println("Applicatie geladen. Console is klaar voor gebruik.");
|
||||
|
||||
while(console)
|
||||
{
|
||||
System.out.print(voorvoegsel);
|
||||
input = scanner.nextLine();
|
||||
System.out.println(parseCommand(input));
|
||||
}
|
||||
|
||||
}
|
||||
public String parseCommand(String command){
|
||||
if(command.startsWith("/")){
|
||||
command = command.substring(1);
|
||||
String[] parts = command.split(" ");
|
||||
int length = parts.length;
|
||||
|
||||
if(length==0)
|
||||
{
|
||||
|
||||
return help();
|
||||
|
||||
}
|
||||
else if(length==1)
|
||||
{
|
||||
|
||||
switch (parts[0]){ //A command without parameters
|
||||
case "help":
|
||||
case "?":
|
||||
return help();
|
||||
case "exit":
|
||||
case "close":
|
||||
return exit();
|
||||
}
|
||||
|
||||
}
|
||||
if(length==2){ //A command with 1 parameter
|
||||
|
||||
switch(parts[0]){
|
||||
case "periode":
|
||||
case "p":
|
||||
return periode(parts[1]);
|
||||
case "scherm":
|
||||
case "s":
|
||||
return scherm(parts[1]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return notFound();
|
||||
}
|
||||
|
||||
//Commands
|
||||
public String notFound()
|
||||
{
|
||||
return notFound(false);
|
||||
}
|
||||
public String notFound(boolean param)
|
||||
{
|
||||
if(param)
|
||||
{
|
||||
return "Dit is geen geldige paramater. Type /help voor alle commando's";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Dit is geen geldig commando. Type /help voor alle commando's";
|
||||
}
|
||||
}
|
||||
|
||||
public String help()
|
||||
{
|
||||
String tab = "\n ";
|
||||
String comS = "\n"; String comE = ":" + tab;
|
||||
String desc = tab + "> ";
|
||||
|
||||
String help = "";
|
||||
|
||||
//start
|
||||
help += "HELP\n------------";
|
||||
//help
|
||||
help += comS + "Help" + comE
|
||||
+ "/help" + tab + "/?"
|
||||
+ desc + "Laat dit scherm zien";
|
||||
//exit
|
||||
help += comS + "Exit" + comE
|
||||
+ "/exit" + tab + "/close"
|
||||
+ desc + "Sluit de console permanent af";
|
||||
//periode
|
||||
help += comS + "Periode" + comE
|
||||
+ "/periode <num|name>" + tab + "/p <num|name>"
|
||||
+ desc + "Zet de huidige periode op getal <num>" + desc + "Zet de huidige periode op naam <name>";
|
||||
//scherm
|
||||
help += comS + "Scherm" + comE
|
||||
+ "/scherm <num|name>" + tab + "/s <num|name>"
|
||||
+ desc + "Zet het huidige scherm op getal <num>" + desc + "Zet het huidige scherm op naam <name>";
|
||||
|
||||
return help;
|
||||
}
|
||||
|
||||
public String exit()
|
||||
{
|
||||
console = false;
|
||||
return "Console is afgesloten.\nDe console kan alleen herstart worden door de applicatie opnieuw te starten.";
|
||||
}
|
||||
|
||||
public String periode(String param)
|
||||
{
|
||||
int param1 = -1;
|
||||
try
|
||||
{
|
||||
param1 = Integer.valueOf(param) - 1;
|
||||
}
|
||||
catch(NumberFormatException e)
|
||||
{
|
||||
param = param.toLowerCase();
|
||||
if(param.contains("dag") || param.contains("day"))
|
||||
{
|
||||
param1 = 0;
|
||||
}
|
||||
else if(param.contains("week"))
|
||||
{
|
||||
param1 = 1;
|
||||
}
|
||||
else if(param.contains("month") || param.contains("maand"))
|
||||
{
|
||||
if(param.contains("6"))
|
||||
{
|
||||
param1 = 4;
|
||||
}
|
||||
if(param.contains("3"))
|
||||
{
|
||||
param1 = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
param1 = 2;
|
||||
}
|
||||
}
|
||||
else if(param.contains("year") || param.contains("jaar"))
|
||||
{
|
||||
if(param.contains("2"))
|
||||
{
|
||||
param1 = 6;
|
||||
}
|
||||
else
|
||||
{
|
||||
param1 = 5;
|
||||
}
|
||||
}
|
||||
else if(param.contains("next") || param.contains("volgend"))
|
||||
{
|
||||
param1 = periodeNr+1;
|
||||
}
|
||||
else if(param.contains("prev") || param.contains("vorig"))
|
||||
{
|
||||
param1 = periodeNr-1 < 0 ? periodsScreens.size()-1 : periodeNr - 1;
|
||||
}
|
||||
|
||||
if(param1==-1)
|
||||
{
|
||||
return notFound(true);
|
||||
}
|
||||
}
|
||||
|
||||
setPeriod(param1);
|
||||
displayMain();
|
||||
return "Periode gezet";
|
||||
}
|
||||
|
||||
public String scherm(String param)
|
||||
{
|
||||
int param1 = 0;
|
||||
try
|
||||
{
|
||||
param1 = Integer.valueOf(param) - 1;
|
||||
}
|
||||
catch(NumberFormatException e)
|
||||
{
|
||||
param = param.toLowerCase();
|
||||
if(param.contains("period"))
|
||||
{
|
||||
if(periodeNr < 4)
|
||||
{
|
||||
setPeriod(4);
|
||||
}
|
||||
if(param.contains("regen") || param.contains("rain"))
|
||||
{
|
||||
if(param.contains("max"))
|
||||
{
|
||||
param1=15;
|
||||
}
|
||||
else if(param.contains("lang") || param.contains("long"))
|
||||
{
|
||||
param1=19;
|
||||
}
|
||||
}
|
||||
else if(param.contains("hitte") || param.contains("golf") || param.contains("heat") || param.contains("wave"))
|
||||
{
|
||||
param1=17;
|
||||
}
|
||||
else if(param.contains("zomer") || param.contains("summer"))
|
||||
{
|
||||
param1=18;
|
||||
}
|
||||
else if(param.contains("droog") || param.contains("droge") || param.contains("dry"))
|
||||
{
|
||||
param1=20;
|
||||
}
|
||||
else
|
||||
{
|
||||
param1=15;
|
||||
}
|
||||
}
|
||||
else if(param.contains("graad"))
|
||||
{
|
||||
if(periodeNr < 4)
|
||||
{
|
||||
setPeriod(4);
|
||||
}
|
||||
param1=16;
|
||||
}
|
||||
else if(param.contains("temp"))
|
||||
{
|
||||
if(param.contains("binnen") || param.contains("inside"))
|
||||
{
|
||||
param1=7;
|
||||
}
|
||||
else if(param.contains("gevoel"))
|
||||
{
|
||||
param1=4;
|
||||
}
|
||||
else
|
||||
{
|
||||
param1=0;
|
||||
}
|
||||
}
|
||||
else if(param.contains("hum") || param.contains("vocht"))
|
||||
{
|
||||
if(param.contains("binnen") || param.contains("inside"))
|
||||
{
|
||||
param1=8;
|
||||
}
|
||||
else
|
||||
{
|
||||
param1=1;
|
||||
}
|
||||
}
|
||||
else if(param.contains("wind"))
|
||||
{
|
||||
if(param.contains("direction") || param.contains("richting"))
|
||||
{
|
||||
param1=3;
|
||||
}
|
||||
else if(param.contains("chill"))
|
||||
{
|
||||
param1=4;
|
||||
}
|
||||
else
|
||||
{
|
||||
param1=2;
|
||||
}
|
||||
}
|
||||
else if(param.contains("rain") || param.contains("regen"))
|
||||
{
|
||||
param1=2;
|
||||
}
|
||||
else if(param.contains("druk") || param.contains("baro"))
|
||||
{
|
||||
param1=6;
|
||||
}
|
||||
else if(param.contains("next") || param.contains("volgend"))
|
||||
{
|
||||
param1 = currentScreen+1;
|
||||
}
|
||||
else if(param.contains("prev") || param.contains("vorig"))
|
||||
{
|
||||
param1 = currentScreen-1 < 0 ? periodsScreens.get(periodeNr).size()-1 : currentScreen - 1;
|
||||
}
|
||||
|
||||
if(param1==-1)
|
||||
{
|
||||
return notFound(true);
|
||||
}
|
||||
}
|
||||
setScreen(param1);
|
||||
displayMain();
|
||||
return "Scherm gezet";
|
||||
}
|
||||
}.start();
|
||||
}
|
||||
|
||||
/**
|
||||
* Start de animatie die speelt tijdens het opstarten en laden van het weerstation
|
||||
*
|
||||
* @param starter De timer die de animatie laat lopen
|
||||
*/
|
||||
public void startStartupAnimatie()
|
||||
{
|
||||
starter.scheduleAtFixedRate(new TimerTask()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
startup = true;
|
||||
|
||||
GUIboard.clearBottom();
|
||||
GUIboard.clearTop();
|
||||
GUIboard.clearLeft();
|
||||
GUIboard.clearRight();
|
||||
|
||||
char[] charray;
|
||||
|
||||
if(startupState)
|
||||
{
|
||||
charray = " Weerstation Breda\n Connecting".toCharArray();
|
||||
}
|
||||
else
|
||||
{
|
||||
charray = " Weerstation Breda\n Calculating".toCharArray();
|
||||
}
|
||||
|
||||
for(char ch : charray)
|
||||
{
|
||||
IO.writeShort(0x40, ch);
|
||||
}
|
||||
|
||||
int p = 1;
|
||||
for(int i=0; i<256;i++)
|
||||
{
|
||||
if(i<128)
|
||||
{
|
||||
IO.writeShort(0x42, 1 << 12 | i << 5 | 26);
|
||||
}
|
||||
else
|
||||
{
|
||||
IO.writeShort(0x42, 0 << 12 | i-128 << 5 | 26);
|
||||
}
|
||||
|
||||
if(i%42==0)
|
||||
{
|
||||
p = p << 1;
|
||||
if(p>32)
|
||||
{
|
||||
p=1;
|
||||
}
|
||||
for(int q=0x10; q<0x40; q+=0x02)
|
||||
{
|
||||
IO.writeShort(q, 0x100 | p);
|
||||
}
|
||||
}
|
||||
|
||||
IO.delay(4);
|
||||
}
|
||||
|
||||
startup = false;
|
||||
}
|
||||
}, 0, (128 + 1)*8);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stopt de animatie die speelt tijdens het opstarten en laden van het weerstation
|
||||
*/
|
||||
public void stopStartupAnimatie()
|
||||
{
|
||||
starter.cancel();
|
||||
}
|
||||
|
||||
/**
|
||||
* Start de animatie die speelt tijdens het laden op de achtergrond van het weerstation
|
||||
*/
|
||||
public void startLoadAnimatie()
|
||||
{
|
||||
animator.scheduleAtFixedRate(new TimerTask()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
load = true;
|
||||
for(int i=0; i<128;i++)
|
||||
{
|
||||
if(!graphIsDisplayed)
|
||||
{
|
||||
IO.writeShort(0x42, 1 << 12 | i << 5 | 31);
|
||||
}
|
||||
IO.delay(4);
|
||||
}
|
||||
|
||||
for(int i=0; i<128;i++)
|
||||
{
|
||||
if(!graphIsDisplayed)
|
||||
{
|
||||
IO.writeShort(0x42, 0 << 12 | i << 5 | 31);
|
||||
}
|
||||
IO.delay(4);
|
||||
}
|
||||
load = false;
|
||||
}
|
||||
}, 0, (128 + 1)*8);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stopt de animatie die speelt tijdens het laden op de achtergrond van het weerstation
|
||||
*/
|
||||
public void stopLoadAnimatie()
|
||||
{
|
||||
animator.cancel();
|
||||
}
|
||||
|
||||
public void createPeriods()
|
||||
{
|
||||
now = Calendar.getInstance();
|
||||
@@ -451,203 +904,6 @@ public class Weerstation{
|
||||
}
|
||||
}.start();
|
||||
}
|
||||
/**
|
||||
* Start de animatie die speelt tijdens het opstarten en laden van het weerstation
|
||||
*
|
||||
* @param starter De timer die de animatie laat lopen
|
||||
*/
|
||||
public void startStartupAnimatie()
|
||||
{
|
||||
starter.scheduleAtFixedRate(new TimerTask()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
startup = true;
|
||||
|
||||
GUIboard.clearBottom();
|
||||
GUIboard.clearTop();
|
||||
GUIboard.clearLeft();
|
||||
GUIboard.clearRight();
|
||||
|
||||
char[] charray;
|
||||
|
||||
if(startupState)
|
||||
{
|
||||
charray = " Weerstation Breda\n Connecting".toCharArray();
|
||||
}
|
||||
else
|
||||
{
|
||||
charray = " Weerstation Breda\n Calculating".toCharArray();
|
||||
}
|
||||
|
||||
for(char ch : charray)
|
||||
{
|
||||
IO.writeShort(0x40, ch);
|
||||
}
|
||||
|
||||
int p = 1;
|
||||
for(int i=0; i<256;i++)
|
||||
{
|
||||
if(i<128)
|
||||
{
|
||||
IO.writeShort(0x42, 1 << 12 | i << 5 | 26);
|
||||
}
|
||||
else
|
||||
{
|
||||
IO.writeShort(0x42, 0 << 12 | i-128 << 5 | 26);
|
||||
}
|
||||
|
||||
if(i%42==0)
|
||||
{
|
||||
p = p << 1;
|
||||
if(p>32)
|
||||
{
|
||||
p=1;
|
||||
}
|
||||
for(int q=0x10; q<0x40; q+=0x02)
|
||||
{
|
||||
IO.writeShort(q, 0x100 | p);
|
||||
}
|
||||
}
|
||||
|
||||
IO.delay(4);
|
||||
}
|
||||
|
||||
startup = false;
|
||||
}
|
||||
}, 0, (128 + 1)*8);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stopt de animatie die speelt tijdens het opstarten en laden van het weerstation
|
||||
*/
|
||||
public void stopStartupAnimatie()
|
||||
{
|
||||
starter.cancel();
|
||||
}
|
||||
|
||||
/**
|
||||
* Start de animatie die speelt tijdens het laden op de achtergrond van het weerstation
|
||||
*/
|
||||
public void startLoadAnimatie()
|
||||
{
|
||||
animator.scheduleAtFixedRate(new TimerTask()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
load = true;
|
||||
for(int i=0; i<128;i++)
|
||||
{
|
||||
if(!graphIsDisplayed)
|
||||
{
|
||||
IO.writeShort(0x42, 1 << 12 | i << 5 | 31);
|
||||
}
|
||||
IO.delay(4);
|
||||
}
|
||||
|
||||
for(int i=0; i<128;i++)
|
||||
{
|
||||
if(!graphIsDisplayed)
|
||||
{
|
||||
IO.writeShort(0x42, 0 << 12 | i << 5 | 31);
|
||||
}
|
||||
IO.delay(4);
|
||||
}
|
||||
load = false;
|
||||
}
|
||||
}, 0, (128 + 1)*8);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stopt de animatie die speelt tijdens het laden op de achtergrond van het weerstation
|
||||
*/
|
||||
public void stopLoadAnimatie()
|
||||
{
|
||||
animator.cancel();
|
||||
}
|
||||
|
||||
public void setScreen(int screen)
|
||||
{ //Set the next screen
|
||||
if (screen >= periodsScreens.get(periodeNr).size() || screen < 0)
|
||||
{
|
||||
currentScreen = 0;
|
||||
}else{
|
||||
currentScreen = screen;
|
||||
}
|
||||
}
|
||||
|
||||
public void setPeriod(int period)
|
||||
{ //Set the period
|
||||
if(period >= periodsScreens.size() || period < 0)
|
||||
{
|
||||
periodeNr = 0;
|
||||
}else{
|
||||
periodeNr = period;
|
||||
}
|
||||
setScreen(currentScreen);
|
||||
}
|
||||
|
||||
public void displayGraph()
|
||||
{
|
||||
if(!graphIsDisplayed)
|
||||
{
|
||||
Grootheid obj = periodsScreens.get(periodeNr).get(currentScreen);
|
||||
obj.displayGraph();
|
||||
graphIsDisplayed = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void displayMain()
|
||||
{
|
||||
Grootheid obj = periodsScreens.get(periodeNr).get(currentScreen);
|
||||
obj.display(periods.get(periodeNr).getName(), button1, button2, meting1.getBattLevel());
|
||||
graphIsDisplayed = false;
|
||||
}
|
||||
|
||||
public void console(){
|
||||
|
||||
new Thread("Console")
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
String voorvoegsel = "weerstation ~ $ ";
|
||||
String input;
|
||||
System.out.println("Welkom op de server sided application van weerstation Breda.");
|
||||
while(true){
|
||||
System.out.print(voorvoegsel);
|
||||
input = scanner.nextLine();
|
||||
System.out.println(parseCommand(input));
|
||||
}
|
||||
}
|
||||
public String parseCommand(String command){
|
||||
if(command.startsWith("/")){
|
||||
String split[] = command.split(" ");
|
||||
switch (split[0]){ //A command without parameters
|
||||
case "/help":
|
||||
return "/help: Laat dit scherm zien. \n/periode x: Zet de huidige periode op getal x \n/screen x: zet het huidige scherm op getal x\n ";
|
||||
}
|
||||
if(split.length == 2){ //A command with 1 parameter
|
||||
int param1;
|
||||
try{param1 = Integer.valueOf(command.split(" ")[1]);}catch (NumberFormatException e){
|
||||
return "Dit is geen geldig commando. Typ /help voor alle commando's";}
|
||||
|
||||
switch(split[0]){
|
||||
case "/periode":
|
||||
setPeriod(param1);
|
||||
displayMain();
|
||||
return "Periode gezet";
|
||||
case "/screen":
|
||||
setScreen(param1);
|
||||
displayMain();
|
||||
return "Screen gezet";
|
||||
}
|
||||
}
|
||||
}
|
||||
return "Dit is geen geldig commando. Typ /help voor alle commando's";
|
||||
}
|
||||
}.start();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user