Proj 324 Final

Fork of ELEC351_Group_T by Plymouth ELEC351 Group T

Revision:
43:fb9faec1dc72
Parent:
42:ae1640bca2e1
Child:
44:e0eac2382810
diff -r ae1640bca2e1 -r fb9faec1dc72 main.cpp
--- a/main.cpp	Mon Jan 08 15:38:53 2018 +0000
+++ b/main.cpp	Mon Jan 08 16:49:44 2018 +0000
@@ -96,6 +96,24 @@
         }
     }
 }
+
+bool Decimal_Check(char Input[100])
+{
+    for(int x = 0; x < mailsize; x++)
+    {
+        if(Input[x] == '.'){return true;}
+    }
+    return false;   
+}
+
+int Decimal_Position(char Input[100])
+{
+    for(int x = 0; x < mailsize; x++)
+    {
+        if(Input[x] == '.'){return x;}
+    }    
+}
+
 void Network()
 {
     while(1)
@@ -525,13 +543,12 @@
             stringstream Number(ReadNumber);
             Number >> NumberToRead;
             
-            
             if(Log_Value == 1){cout<<"Getting Data"<<endl;}
             
             Data_Buffer_Lock.lock();//Lock data buffer due to critical section
             int Start_Address = Write_Pointer;
             Data_Buffer_Lock.unlock();//unLock data buffer due to critical section
-             
+            
             for(int x = (Start_Address - NumberToRead); x != Start_Address; x = x )
             {
                 if(x < 0){x = x + mailsize;}
@@ -651,13 +668,37 @@
         else if(input[0] == 'S' & input[1] == 'E' & input[2] == 'T' & input[3] == 'T' & input[4] == ' ')
         {
             
-            int NumberOfChars = 0; int ArrayAddress = 0; string SettNumber; int NumberToSett;
+            int NumberOfChars = 0; int ArrayAddress = 0; 
+            string SettNumber; float NumberToSett; 
+            int Post_Decimal_Count; int Decimal_Divider = 10; 
+            float Sample_Rate_Integer = 0; string Sample_Rate_Integer_String;
+            float Sample_Rate_Decimal = 0; string Sample_Rate_Decimal_String;
             while(input[ArrayAddress] != '\0'){NumberOfChars++; ArrayAddress++;}
-            for(int x=5; x < NumberOfChars; x++){SettNumber += input[x];}
-            stringstream Number(SettNumber);
-            Number >> NumberToSett;
+                     
+            if (Decimal_Check(input) == true)
+            {
+                for(int x = 5; x < Decimal_Position(input); x++){Sample_Rate_Integer_String += input[x];}
+                stringstream Number_1(Sample_Rate_Integer_String);
+                Number_1 >> Sample_Rate_Integer;
+        
+                for(int x = Decimal_Position(input) + 1; x < NumberOfChars; x++){Sample_Rate_Decimal_String += input[x];}
+                stringstream Number_2(Sample_Rate_Decimal_String);
+                Number_2 >> Sample_Rate_Decimal;
+                
+                for(int tens_power = 1; tens_power != NumberOfChars - Decimal_Position(input) - 1; tens_power++)
+                {
+                    Decimal_Divider = Decimal_Divider * 10;   
+                }
+                NumberToSett = Sample_Rate_Integer + (Sample_Rate_Decimal / float(Decimal_Divider));
+            }
+            else                        
+            {
+                for(int x=5; x < NumberOfChars; x++){SettNumber += input[x];}
+                stringstream Number_3(SettNumber);
+                Number_3 >> NumberToSett;
+            }
                
-            if(NumberToSett >= 1){Sample_Rate = NumberToSett;}
+            if(NumberToSett > 0){Sample_Rate = NumberToSett;}
              
             Sampling_Timer.detach();
             Console_Output_Timer.detach();
@@ -746,6 +787,7 @@
     LCD.Initialise();
     LCD.DDRAM_Address(0x00);
  
+    /*
     post();     //Power on Self Test
 
     //Initialise the SD card (this needs to move)
@@ -778,6 +820,7 @@
         errorCode(NETWORK_FATAL);   
     }
     //Last message before sampling begins
+    */
     LCD.Display_Clear();
     LCD.Write_String("READY     PLAYER");
     LCD.DDRAM_Address(0x40);
@@ -791,7 +834,7 @@
     t1.start(Sample);
     t2.start(SD_Card);
     t3.start(LCD_Output);
-    t4.start(Network);
+    //t4.start(Network);
     t5.start(Serial_Commands);
 
     //Main thread ID
@@ -804,12 +847,12 @@
     id3 = t3.gettid();
     id4 = t4.gettid();
     id5 = t5.gettid();
-
+    
     while(true) {
         if(onBoardSwitch == 1)
         {   
-            fclose(fp);//Close File
-            sd.deinit();//Close down
+            //fclose(fp);//Close File
+            //sd.deinit();//Close down
             LCD.Display_Clear();
             LCD.DDRAM_Address(0x00);
             LCD.Write_String("SD Card");
@@ -818,6 +861,7 @@
             LCD.DDRAM_Address(0x00);
             cout << "SD Card Unmounted" << endl;
         }
+        
         greenLED = 1;
         wait(0.5);
         greenLED = 0;