Reading Gcode in LocalFiileSystem and encodeing int array. but this program has bug.probably

Fork of MakeSequencer by yuki sato

Files at this revision

API Documentation at this revision

Comitter:
satoyuki1111
Date:
Wed Oct 17 01:09:47 2018 +0000
Parent:
3:09ee560a3007
Commit message:
v3

Changed in this revision

MakeSequencer.cpp Show annotated file Show diff for this revision Revisions of this file
MakeSequencer.h Show annotated file Show diff for this revision Revisions of this file
--- a/MakeSequencer.cpp	Thu Oct 11 11:23:53 2018 +0000
+++ b/MakeSequencer.cpp	Wed Oct 17 01:09:47 2018 +0000
@@ -13,7 +13,7 @@
 {
     FILE *fp = fopen( "/local/out.txt", "r");
     MakeSequencer code(fp);
-    code.getGcode(3,sizeof(array)/sizeof(int),array);        //getGcode(int row,int aSize, int* array)
+    code.getGcode(1,sizeof(array)/sizeof(int),array);        //getGcode(int row,int aSize, int* array)
                                                              //array will get Gcode of a "int row" line
     for(int i = 0;i < sizeof(array)/sizeof(int);i++)
         printf("%d,",array[i]);
@@ -30,6 +30,7 @@
 {
     _fp=fp;
     FileOpen();
+ 
 }
 
 bool MakeSequencer::FileOpen()
@@ -61,6 +62,16 @@
 
 bool MakeSequencer::ReadGcode()
 {
+    //char * _buf     = new char[BUF];
+    char _buf[BUF];
+    int  *_tempnum  = new int[ARRAY_EREMENT];
+    char **_element = new char*[ARRAY_EREMENT];
+    bool **_check   = new bool*[ARRAY_EREMENT];
+    for (int a = 0; a < ARRAY_EREMENT; a++) 
+    {
+        _element[a] = new char[CODE_LENGTH];
+        _check[a]   = new bool[CODE_LENGTH];
+    }
     _ele = 0;
     for(int i = 0;fgets(_buf,sizeof(_buf), _fp) != NULL;i++)
     {
@@ -70,10 +81,10 @@
             return false;
         else
         {
-            string _tempstr[ARRAY_EREMENT];
+            string *_tempstr = new string[ARRAY_EREMENT];
             _count = -1;
             
-            for(int n = 0;n < ARRAY_EREMENT;n++)
+            for(int n = 0;n < ARRAY_EREMENT;n++)//bool array Initialize
             {
                 for(int p = 0;p < CODE_LENGTH;p++)
                     _check[n][p] = true;
@@ -98,11 +109,12 @@
                             }
                         }
                     }
-                    _element[_count][i] = _char;
+                    else
+                        _element[_count][i] = _char;
                     if(i == 0)
                         _ele++;
                 }
-                else if(_char >= '0'&& _char <= '9')
+                else if(_char >= '0'&& _char <= '9' || _char <= '-')
                 {
                     _tempstr[_count] = _tempstr[_count] + _char;
                 }   
@@ -113,15 +125,34 @@
                 else
                     return false;
             }
-            
+            printf("#(%d) ",i);
             for(int n = 0;n < _ele;n++)
             {
                 _tempnum[n] = atoi(_tempstr[n].c_str());
                 _data[n][i] = (i != 0 && _check[n][i] && _element[n][i] != _element[n][0])
                             ? _data[n][i-1]
                             : _tempnum[n];
+                            
+                _element[n][i] = (i != 0 && _check[n][i] && _element[n][i] != _element[n][0])
+                            ? _element[n][0]
+                            : _element[n][i];
+                printf("%c:%d",_element[n][i],_data[n][i]);
             }
+            printf("\n\r");
+            //delete[] _tempstr;
         }
+        
     }
+    for (int a = 0; a < ARRAY_EREMENT; a++) 
+    {
+        delete[] _data[a];
+        delete[] _check[a];
+        delete[] _element[a];
+    }
+    //delete[] _buf;
+    //delete[] _data;
+    delete[] _element;
+    delete[] _check;
+    delete[] _tempnum;
     return true;
 }
\ No newline at end of file
--- a/MakeSequencer.h	Thu Oct 11 11:23:53 2018 +0000
+++ b/MakeSequencer.h	Wed Oct 17 01:09:47 2018 +0000
@@ -3,8 +3,9 @@
 
 #include "mbed.h"
 #include "string"
-#define CODE_LENGTH 100
-#define ARRAY_EREMENT 10
+#define CODE_LENGTH 30
+#define ARRAY_EREMENT 5
+#define BUF 256
 
 
 class MakeSequencer
@@ -14,20 +15,15 @@
     
     bool FileOpen();
     void getGcode(int _row,int aSize,int* _array);
+    int  getGcodeSize();
     bool ReadGcode();
-    int  getGcodeSize();
     
-    private:
-    char   _buf[256];
+    private: 
     int    _data[ARRAY_EREMENT][CODE_LENGTH];
     int    _codesize;
-    
-    int    _tempnum[ARRAY_EREMENT];
     int    _ele;
-    char   _element[ARRAY_EREMENT][CODE_LENGTH];
     char   _char;
     int    _count;
-    bool   _check[ARRAY_EREMENT][CODE_LENGTH];
     
     LocalFileSystem *_local;
     FILE *_fp;