menu for accelerometer

Dependencies:   ADXL362 mbed

Files at this revision

API Documentation at this revision

Comitter:
mzpf46
Date:
Wed Nov 08 10:46:19 2017 +0000
Parent:
0:8d536d5c58c6
Commit message:
Publush;

Changed in this revision

menu_menu.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/menu_menu.cpp	Tue Nov 07 21:49:14 2017 +0000
+++ b/menu_menu.cpp	Wed Nov 08 10:46:19 2017 +0000
@@ -18,37 +18,101 @@
 int main()
 {
     FILE *samplesettings; //Create file with pointer
-
-    char res[100];
-    
-    matlabdata=pc.scanf("%s",res);
-    
-    while(1)
+    FILE *timesettings;
     
     
-    if(!strcmp(res,"1"))
+    char res[100];//string to store user command
+        
+    matlabdata=pc.scanf("%s",res);//Get user command from matlab
+   
+while(1)
+{    
+    if(!strcmp(res,"1")==0)//if user command in matlab is 1 write the sample settings into a file 
         {  
         myled1 = HIGH;
-        char N[1000];
-        pc.scanf("%s",&N);
+        char N[1000];//To store the number of samples which is received from the matlab
+        pc.scanf("%s\n",&N);//to get the number of  samples input from the matlab
         samplesettings = fopen("/local/samplesettings.txt", "w");//Open file for writing
-        fprintf(samplesettings,"%s",N); //Writes settings values onto file
-        fclose(samplesettings);
+        fprintf(samplesettings,"%s\n",N); //Writes settings values onto file
+        fclose(samplesettings);//close file
         break;
 
+
             }
-            else if(!strcmp(res,"2"))
+            else if(!strcmp(res,"2")==0)//If user command is 2 search the file for sample settings
             {
                         //Define variables for output
-                        char value1[100];
+                        char value1[1000];
                         samplesettings = fopen("/local/samplesettings.txt" , "r"); //Open file for reading
-                        fscanf(samplesettings,"%[^\n]", value1);
-                        pc.printf("%s", value1);
+                        fseek(samplesettings, 0 ,SEEK_SET); //Sets cursor to start of file
+                        fscanf(samplesettings,"%s\n", value1);//Scans fo the value of N
+                        pc.printf("%s\n", value1);//Prints the value of N
                         fclose(samplesettings); //Close file
+                        break;
+
                         }
-                        
-
-        else
-        pc.printf ("Error\n");  
-
+                        else if(!strcmp(res,"3")==0)//If user command recieved is 3 then write the time settings into a file
+                        {
+                                    char T[1000];//To store value of T recieved from matlab
+                                    pc.scanf("%s\n",&T);//To scan value of T from matlab
+                                    timesettings = fopen("/local/timesettings.txt", "w");//Open file for writing
+                                    fprintf(timesettings,"%s\n",T); //Writes settings values onto file
+                                    fclose(timesettings);//Close file
+                                    break;
+                                    
+                                    }
+                                    else if(!strcmp(res,"4")==0)//If 4 is recieved as a user command then read the time settings 
+                                    {
+                                    //Define variables for output
+                                    char value2[100];
+                                    samplesettings = fopen("/local/timesettings.txt" , "r"); //Open file for reading
+                                    fseek(timesettings, 0 ,SEEK_SET); //Sets cursor to start of file
+                                    fscanf(timesettings,"%s\n", value2);//Reads the time period from the file
+                                    pc.printf("%s\n", value2);//Outsputs the time period 
+                                    fclose(timesettings); //Close file
+                                    break; 
+                                    }
+                                    else if(!strcmp(res,"5")==0)//If the user command is 5 then we collect data 
+                                    {
+                                        //Define vaiables 
+                                        adxl362.init_spi();
+                                        adxl362.init_adxl362();
+                                        wait(0.1);
+                                        int8_t xdata, ydata, zdata;
+                                        for(int i=0; i<atoi(N); i++)
+                                        {
+                                            adxl362.ACC_GetXYZ8(&xdata,&ydata,&zdata);//Fetch readings from accelerometer
+                                            pc.printf("%+04d\n", xdata);
+                                            pc.printf("%+04d\n", ydata);
+                                            pc.printf("%+04d\n", zdata);
+                                            wait(atoi(T));
+                                            
+                                            //Open data file
+                                            FILE *data;
+                                            data = fopen("/local/data.txt", "w");
+                                            //Data collection loop using sample rate and number of samples 
+                                            for(int i=0; i<atoi(N); i++)
+                                            {
+                                                //Get accelerometer data
+                                                adxl362.ACC_GetXYZ8(&xdata,&ydata,&zdata);
+                                                //Print data to data file
+                                                fprintf(data, "%+04d", xdata);
+                                                fprintf(data, "%+04d", ydata);
+                                                fprintf(data, "%+04d", zdata);
+                                                //Attempt to print same data to MATLAB if connection is not null
+                                                if(pc != NULL)
+                                                {
+                                                    pc.printf("%+04d\n", xdata);
+                                                    pc.printf("%+04d\n", ydata);
+                                                    pc.printf("%+04d\n", zdata);
+                                                    }
+                                                    //Pause to ensure sample rate
+                                                    wait(atoi(T));
+                                                    }
+                                                    fclose(data);
+                                                    break;
+                                                    
+     }
+     }
+     }                                               
 }     
\ No newline at end of file