浏览代码

Added checks to writeTo*Digits()

Kenneth van Ewijk 11 年之前
父节点
当前提交
7ddda721aa
共有 1 个文件被更改,包括 105 次插入63 次删除
  1. 105 63
      GUIboard.java

+ 105 - 63
GUIboard.java

@@ -3,68 +3,110 @@
 import java.util.ArrayList;
 
 public class GUIboard {
-	
+    
 
-	public static void writeUpperDigits(double number){
-		clearTop();
-		writeDigits(number, 0x10, 0x18);
-	}
-	
-	public static void writeLeftDigits(double number){
-		clearLeft();
-		writeDigits(number, 0x20, 0x24);
-	}
-	
-	public static void writeRightDigits(double number){
-		clearRight();
-		writeDigits(number, 0x30, 0x34);
-	}
-	
-	private static void writeDigits(double number, int firstSegment, int lastSegment){
-		number = Math.round(number * 100.0) / 100.0;
-		//Segments
-	     int segA = 0x01;
-	     int segB = 0x02;
-	     int segC = 0x04;
-	     int segD = 0x08;
-	     int segE = 0x10;
-	     int segF = 0x20;
-	     int segG = 0x40;
-	     int segDP = 0x80;
-	    
-	    //Digits
-	    int[] digits = {
-	    segA | segB | segC | segD | segE | segF,    //0
-	    segB | segC,                                //1
-	    segA | segB | segG | segE | segD,           //2
-	    segA | segB | segC | segG | segD,           //3
-	    segB | segC | segF | segG | segC,           //4
-	    segA | segF | segG | segC | segD,           //5
-	    segA | segF | segG | segC | segD | segE,    //6
-	    segA | segB | segC,                         //7
-	    segDP - 1,                                  //8
-	    segA | segF | segG | segC | segD | segB,    //9
-	    };
-	    
-		int digit = firstSegment;
-		String numberString = String.valueOf(number);; 
-		char numberSplit[] = numberString.toCharArray();
-		
-		for(int i = numberSplit.length-1; i >= 0; i--){	
-			if(numberSplit[i] == '.'){
-				IO.writeShort(digit, digits[(Character.getNumericValue(numberSplit[i - 1]))]|0x180);	//display a . with the next number
-				i--;
-			}else if(numberSplit[i] == '-'){
-				IO.writeShort(digit, 0x140);			//will display a -
-			}else{
-				IO.writeShort(digit, Character.getNumericValue(numberSplit[i]));
-			}
-			digit += 2;						 			//Next digits screen
-			if(digit > lastSegment){ 					//If there are more then max digits needed, it will stop.
-				break;
-			}
-		}
-	}
+    public static void writeUpperDigits(double number){
+        clearTop();
+        
+        int checkNumber = String.valueOf(Math.round(number)).length();
+        
+        if(checkNumber <= 5){
+            checkNumber = 5 - checkNumber > 0 ? 5 - checkNumber : 0;
+            number = number * Math.pow(10, checkNumber);
+            number = Math.round(number);
+            number = number / Math.pow(10, checkNumber);
+        }
+        else
+        {
+            number = 0;
+        }
+        
+        writeDigits(number, 0x10, 0x18);
+    }
+    
+    public static void writeLeftDigits(double number){
+        clearLeft();
+        
+        int checkNumber = String.valueOf(Math.round(number)).length();
+        
+        if(checkNumber <= 3){
+            checkNumber = 3 - checkNumber > 0 ? 3 - checkNumber : 0;
+            number = number * Math.pow(10, checkNumber);
+            number = Math.round(number);
+            number = number / Math.pow(10, checkNumber);
+        }
+        else
+        {
+            number = 0;
+        }
+        
+        writeDigits(number, 0x20, 0x24);
+    }
+    
+    public static void writeRightDigits(double number){
+        clearRight();
+        
+        int checkNumber = String.valueOf(Math.round(number)).length();
+        
+        if(checkNumber <= 3){
+            checkNumber = 3 - checkNumber > 0 ? 3 - checkNumber : 0;
+            number = number * Math.pow(10, checkNumber);
+            number = Math.round(number);
+            number = number / Math.pow(10, checkNumber);
+        }
+        else
+        {
+            number = 0;
+        }
+        
+        writeDigits(number, 0x30, 0x34);
+    }
+    
+    private static void writeDigits(double number, int firstSegment, int lastSegment){
+        number = Math.round(number * 100.0) / 100.0;
+        //Segments
+         int segA = 0x01;
+         int segB = 0x02;
+         int segC = 0x04;
+         int segD = 0x08;
+         int segE = 0x10;
+         int segF = 0x20;
+         int segG = 0x40;
+         int segDP = 0x80;
+        
+        //Digits
+        int[] digits = {
+        segA | segB | segC | segD | segE | segF,    //0
+        segB | segC,                                //1
+        segA | segB | segG | segE | segD,           //2
+        segA | segB | segC | segG | segD,           //3
+        segB | segC | segF | segG | segC,           //4
+        segA | segF | segG | segC | segD,           //5
+        segA | segF | segG | segC | segD | segE,    //6
+        segA | segB | segC,                         //7
+        segDP - 1,                                  //8
+        segA | segF | segG | segC | segD | segB,    //9
+        };
+        
+        int digit = firstSegment;
+        String numberString = String.valueOf(number);; 
+        char numberSplit[] = numberString.toCharArray();
+        
+        for(int i = numberSplit.length-1; i >= 0; i--){ 
+            if(numberSplit[i] == '.'){
+                IO.writeShort(digit, digits[(Character.getNumericValue(numberSplit[i - 1]))]|0x180);    //display a . with the next number
+                i--;
+            }else if(numberSplit[i] == '-'){
+                IO.writeShort(digit, 0x140);            //will display a -
+            }else{
+                IO.writeShort(digit, Character.getNumericValue(numberSplit[i]));
+            }
+            digit += 2;                                 //Next digits screen
+            if(digit > lastSegment){                    //If there are more then max digits needed, it will stop.
+                break;
+            }
+        }
+    }
 
     
     public static boolean writePageToMatrix(String regel1, String regel2, String regel3)
@@ -75,10 +117,10 @@ public class GUIboard {
             return false;
         }
         
-        String nav = "<   >  S";							//creates the navigation and will center it out to the right
+        String nav = "<   >  S";                            //creates the navigation and will center it out to the right
         
         for(int i=0; i < (12-regel3.length()); i++){
-        	nav = " " + nav;
+            nav = " " + nav;
         }
         char[] regel1CharArray = regel1.toCharArray();
         char[] regel2CharArray = regel2.toCharArray();