Reading Gcode in LocalFiileSystem and encodeing int array. but this program has bug.probably
Fork of MakeSequencer by
MakeSequencer.cpp@4:1d7c50f17687, 2018-10-17 (annotated)
- Committer:
- satoyuki1111
- Date:
- Wed Oct 17 01:09:47 2018 +0000
- Revision:
- 4:1d7c50f17687
- Parent:
- 3:09ee560a3007
v3
Who changed what in which revision?
User | Revision | Line number | New 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 | } |