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

Fork of MakeSequencer by yuki sato

Committer:
satoyuki1111
Date:
Wed Oct 17 01:09:47 2018 +0000
Revision:
4:1d7c50f17687
Parent:
3:09ee560a3007
v3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
satoyuki1111 0:359eba7592ca 1 /*
satoyuki1111 2:4fc4593498d7 2 sample
satoyuki1111 2:4fc4593498d7 3
satoyuki1111 2:4fc4593498d7 4 #include "mbed.h"
satoyuki1111 2:4fc4593498d7 5 #include "MakeSequencer.h"
satoyuki1111 2:4fc4593498d7 6
satoyuki1111 2:4fc4593498d7 7 //A row is from 1
satoyuki1111 0:359eba7592ca 8
satoyuki1111 0:359eba7592ca 9 LocalFileSystem local("local");
satoyuki1111 2:4fc4593498d7 10 int array[5] = {};
satoyuki1111 0:359eba7592ca 11
satoyuki1111 0:359eba7592ca 12 int main()
satoyuki1111 0:359eba7592ca 13 {
satoyuki1111 0:359eba7592ca 14 FILE *fp = fopen( "/local/out.txt", "r");
satoyuki1111 0:359eba7592ca 15 MakeSequencer code(fp);
satoyuki1111 4:1d7c50f17687 16 code.getGcode(1,sizeof(array)/sizeof(int),array); //getGcode(int row,int aSize, int* array)
satoyuki1111 2:4fc4593498d7 17 //array will get Gcode of a "int row" line
satoyuki1111 2:4fc4593498d7 18 for(int i = 0;i < sizeof(array)/sizeof(int);i++)
satoyuki1111 2:4fc4593498d7 19 printf("%d,",array[i]);
satoyuki1111 2:4fc4593498d7 20 printf("\n\r%d",code.getGcodeSize()); //getGcodeSize()
satoyuki1111 2:4fc4593498d7 21 //return Gcode row
satoyuki1111 0:359eba7592ca 22 }
satoyuki1111 0:359eba7592ca 23 */
satoyuki1111 0:359eba7592ca 24
satoyuki1111 0:359eba7592ca 25
satoyuki1111 0:359eba7592ca 26 #include "MakeSequencer.h"
satoyuki1111 0:359eba7592ca 27
satoyuki1111 0:359eba7592ca 28
satoyuki1111 0:359eba7592ca 29 MakeSequencer::MakeSequencer(FILE *fp)
satoyuki1111 0:359eba7592ca 30 {
satoyuki1111 0:359eba7592ca 31 _fp=fp;
satoyuki1111 0:359eba7592ca 32 FileOpen();
satoyuki1111 4:1d7c50f17687 33
satoyuki1111 0:359eba7592ca 34 }
satoyuki1111 0:359eba7592ca 35
satoyuki1111 0:359eba7592ca 36 bool MakeSequencer::FileOpen()
satoyuki1111 0:359eba7592ca 37 {
satoyuki1111 0:359eba7592ca 38 if ( _fp == NULL )
satoyuki1111 0:359eba7592ca 39 {
satoyuki1111 0:359eba7592ca 40 printf("Exception");
satoyuki1111 0:359eba7592ca 41 return false;
satoyuki1111 0:359eba7592ca 42 }
satoyuki1111 0:359eba7592ca 43 else
satoyuki1111 0:359eba7592ca 44 ReadGcode();
satoyuki1111 0:359eba7592ca 45
satoyuki1111 0:359eba7592ca 46 fclose(_fp);
satoyuki1111 0:359eba7592ca 47 return true;
satoyuki1111 0:359eba7592ca 48 }
satoyuki1111 0:359eba7592ca 49
satoyuki1111 2:4fc4593498d7 50 void MakeSequencer::getGcode(int row,int aSize, int* array)
satoyuki1111 0:359eba7592ca 51 {
satoyuki1111 2:4fc4593498d7 52 for(int i = 0;i < aSize;i++)
satoyuki1111 0:359eba7592ca 53 {
satoyuki1111 2:4fc4593498d7 54 array[i] = _data[i][row-1];
satoyuki1111 0:359eba7592ca 55 }
satoyuki1111 0:359eba7592ca 56 }
satoyuki1111 0:359eba7592ca 57
satoyuki1111 1:4ebb30d54be7 58 int MakeSequencer::getGcodeSize()
satoyuki1111 1:4ebb30d54be7 59 {
satoyuki1111 2:4fc4593498d7 60 return _codesize+1;
satoyuki1111 1:4ebb30d54be7 61 }
satoyuki1111 1:4ebb30d54be7 62
satoyuki1111 0:359eba7592ca 63 bool MakeSequencer::ReadGcode()
satoyuki1111 0:359eba7592ca 64 {
satoyuki1111 4:1d7c50f17687 65 //char * _buf = new char[BUF];
satoyuki1111 4:1d7c50f17687 66 char _buf[BUF];
satoyuki1111 4:1d7c50f17687 67 int *_tempnum = new int[ARRAY_EREMENT];
satoyuki1111 4:1d7c50f17687 68 char **_element = new char*[ARRAY_EREMENT];
satoyuki1111 4:1d7c50f17687 69 bool **_check = new bool*[ARRAY_EREMENT];
satoyuki1111 4:1d7c50f17687 70 for (int a = 0; a < ARRAY_EREMENT; a++)
satoyuki1111 4:1d7c50f17687 71 {
satoyuki1111 4:1d7c50f17687 72 _element[a] = new char[CODE_LENGTH];
satoyuki1111 4:1d7c50f17687 73 _check[a] = new bool[CODE_LENGTH];
satoyuki1111 4:1d7c50f17687 74 }
satoyuki1111 3:09ee560a3007 75 _ele = 0;
satoyuki1111 2:4fc4593498d7 76 for(int i = 0;fgets(_buf,sizeof(_buf), _fp) != NULL;i++)
satoyuki1111 0:359eba7592ca 77 {
satoyuki1111 2:4fc4593498d7 78 _codesize = i;
satoyuki1111 2:4fc4593498d7 79
satoyuki1111 0:359eba7592ca 80 if(i > CODE_LENGTH)
satoyuki1111 0:359eba7592ca 81 return false;
satoyuki1111 2:4fc4593498d7 82 else
satoyuki1111 2:4fc4593498d7 83 {
satoyuki1111 4:1d7c50f17687 84 string *_tempstr = new string[ARRAY_EREMENT];
satoyuki1111 3:09ee560a3007 85 _count = -1;
satoyuki1111 0:359eba7592ca 86
satoyuki1111 4:1d7c50f17687 87 for(int n = 0;n < ARRAY_EREMENT;n++)//bool array Initialize
satoyuki1111 2:4fc4593498d7 88 {
satoyuki1111 2:4fc4593498d7 89 for(int p = 0;p < CODE_LENGTH;p++)
satoyuki1111 2:4fc4593498d7 90 _check[n][p] = true;
satoyuki1111 2:4fc4593498d7 91 }
satoyuki1111 2:4fc4593498d7 92
satoyuki1111 2:4fc4593498d7 93 for(int n = 0;_buf[n] != '\0';n++)
satoyuki1111 0:359eba7592ca 94 {
satoyuki1111 2:4fc4593498d7 95 _char = _buf[n];
satoyuki1111 2:4fc4593498d7 96 if((_char >= 'a'&& _char <= 'z') || (_char >= 'A' && _char <= 'Z'))
satoyuki1111 2:4fc4593498d7 97 {
satoyuki1111 2:4fc4593498d7 98 _count++;
satoyuki1111 2:4fc4593498d7 99 if(_char != _element[_count][0] && i != 0)
satoyuki1111 2:4fc4593498d7 100 {
satoyuki1111 2:4fc4593498d7 101 for(int p = 0;p < _ele;p++)
satoyuki1111 2:4fc4593498d7 102 {
satoyuki1111 2:4fc4593498d7 103 if(_char == _element[p][0])
satoyuki1111 2:4fc4593498d7 104 {
satoyuki1111 2:4fc4593498d7 105 _element[p][i] = _char;
satoyuki1111 2:4fc4593498d7 106 _count = p;
satoyuki1111 2:4fc4593498d7 107 _check[p][i] = false;
satoyuki1111 2:4fc4593498d7 108 break;
satoyuki1111 2:4fc4593498d7 109 }
satoyuki1111 2:4fc4593498d7 110 }
satoyuki1111 2:4fc4593498d7 111 }
satoyuki1111 4:1d7c50f17687 112 else
satoyuki1111 4:1d7c50f17687 113 _element[_count][i] = _char;
satoyuki1111 2:4fc4593498d7 114 if(i == 0)
satoyuki1111 2:4fc4593498d7 115 _ele++;
satoyuki1111 2:4fc4593498d7 116 }
satoyuki1111 4:1d7c50f17687 117 else if(_char >= '0'&& _char <= '9' || _char <= '-')
satoyuki1111 2:4fc4593498d7 118 {
satoyuki1111 2:4fc4593498d7 119 _tempstr[_count] = _tempstr[_count] + _char;
satoyuki1111 2:4fc4593498d7 120 }
satoyuki1111 0:359eba7592ca 121
satoyuki1111 2:4fc4593498d7 122 else if('\n' || '\r')
satoyuki1111 2:4fc4593498d7 123 {
satoyuki1111 2:4fc4593498d7 124 }
satoyuki1111 2:4fc4593498d7 125 else
satoyuki1111 2:4fc4593498d7 126 return false;
satoyuki1111 2:4fc4593498d7 127 }
satoyuki1111 4:1d7c50f17687 128 printf("#(%d) ",i);
satoyuki1111 2:4fc4593498d7 129 for(int n = 0;n < _ele;n++)
satoyuki1111 2:4fc4593498d7 130 {
satoyuki1111 2:4fc4593498d7 131 _tempnum[n] = atoi(_tempstr[n].c_str());
satoyuki1111 3:09ee560a3007 132 _data[n][i] = (i != 0 && _check[n][i] && _element[n][i] != _element[n][0])
satoyuki1111 3:09ee560a3007 133 ? _data[n][i-1]
satoyuki1111 3:09ee560a3007 134 : _tempnum[n];
satoyuki1111 4:1d7c50f17687 135
satoyuki1111 4:1d7c50f17687 136 _element[n][i] = (i != 0 && _check[n][i] && _element[n][i] != _element[n][0])
satoyuki1111 4:1d7c50f17687 137 ? _element[n][0]
satoyuki1111 4:1d7c50f17687 138 : _element[n][i];
satoyuki1111 4:1d7c50f17687 139 printf("%c:%d",_element[n][i],_data[n][i]);
satoyuki1111 2:4fc4593498d7 140 }
satoyuki1111 4:1d7c50f17687 141 printf("\n\r");
satoyuki1111 4:1d7c50f17687 142 //delete[] _tempstr;
satoyuki1111 0:359eba7592ca 143 }
satoyuki1111 4:1d7c50f17687 144
satoyuki1111 0:359eba7592ca 145 }
satoyuki1111 4:1d7c50f17687 146 for (int a = 0; a < ARRAY_EREMENT; a++)
satoyuki1111 4:1d7c50f17687 147 {
satoyuki1111 4:1d7c50f17687 148 delete[] _data[a];
satoyuki1111 4:1d7c50f17687 149 delete[] _check[a];
satoyuki1111 4:1d7c50f17687 150 delete[] _element[a];
satoyuki1111 4:1d7c50f17687 151 }
satoyuki1111 4:1d7c50f17687 152 //delete[] _buf;
satoyuki1111 4:1d7c50f17687 153 //delete[] _data;
satoyuki1111 4:1d7c50f17687 154 delete[] _element;
satoyuki1111 4:1d7c50f17687 155 delete[] _check;
satoyuki1111 4:1d7c50f17687 156 delete[] _tempnum;
satoyuki1111 0:359eba7592ca 157 return true;
satoyuki1111 0:359eba7592ca 158 }