Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed Teach memory
teach.cpp@1:33fdaabcdeda, 2020-04-21 (annotated)
- Committer:
- MarcelPortmann
- Date:
- Tue Apr 21 15:49:22 2020 +0000
- Revision:
- 1:33fdaabcdeda
- Parent:
- 0:ad924d8a2f98
- Child:
- 3:b22580585b9c
processes all data no implementation of memory
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MarcelPortmann | 0:ad924d8a2f98 | 1 | /* |
MarcelPortmann | 1:33fdaabcdeda | 2 | Hear cold stand a discription |
MarcelPortmann | 0:ad924d8a2f98 | 3 | |
MarcelPortmann | 0:ad924d8a2f98 | 4 | */ |
MarcelPortmann | 0:ad924d8a2f98 | 5 | |
MarcelPortmann | 0:ad924d8a2f98 | 6 | |
MarcelPortmann | 0:ad924d8a2f98 | 7 | #include "teach.h" |
MarcelPortmann | 0:ad924d8a2f98 | 8 | |
MarcelPortmann | 1:33fdaabcdeda | 9 | |
MarcelPortmann | 1:33fdaabcdeda | 10 | teach::teach(void) // constructor |
MarcelPortmann | 1:33fdaabcdeda | 11 | { |
MarcelPortmann | 1:33fdaabcdeda | 12 | |
MarcelPortmann | 1:33fdaabcdeda | 13 | lowcount = 0, highcount = 0; //sets startvalue |
MarcelPortmann | 1:33fdaabcdeda | 14 | data_vec.clear(); |
MarcelPortmann | 1:33fdaabcdeda | 15 | } |
MarcelPortmann | 1:33fdaabcdeda | 16 | |
MarcelPortmann | 1:33fdaabcdeda | 17 | void teach::setstart(float posx,float posy,float posz, int time) |
MarcelPortmann | 1:33fdaabcdeda | 18 | { |
MarcelPortmann | 1:33fdaabcdeda | 19 | lowcount = 0; |
MarcelPortmann | 1:33fdaabcdeda | 20 | |
MarcelPortmann | 1:33fdaabcdeda | 21 | temp.start = true; |
MarcelPortmann | 1:33fdaabcdeda | 22 | temp.end = false; |
MarcelPortmann | 1:33fdaabcdeda | 23 | temp.hi = highcount; |
MarcelPortmann | 1:33fdaabcdeda | 24 | temp.low = lowcount; |
MarcelPortmann | 1:33fdaabcdeda | 25 | temp.time = time; |
MarcelPortmann | 1:33fdaabcdeda | 26 | temp.pos[0] = posx; |
MarcelPortmann | 1:33fdaabcdeda | 27 | temp.pos[1] = posy; |
MarcelPortmann | 1:33fdaabcdeda | 28 | temp.pos[2] = posz; |
MarcelPortmann | 1:33fdaabcdeda | 29 | data_vec.push_back(temp); |
MarcelPortmann | 1:33fdaabcdeda | 30 | |
MarcelPortmann | 1:33fdaabcdeda | 31 | lowcount++; |
MarcelPortmann | 1:33fdaabcdeda | 32 | highcount++; |
MarcelPortmann | 1:33fdaabcdeda | 33 | |
MarcelPortmann | 1:33fdaabcdeda | 34 | contr_sice(); |
MarcelPortmann | 1:33fdaabcdeda | 35 | } |
MarcelPortmann | 1:33fdaabcdeda | 36 | |
MarcelPortmann | 1:33fdaabcdeda | 37 | void teach::setpoint(float posx,float posy,float posz, int time) |
MarcelPortmann | 1:33fdaabcdeda | 38 | { |
MarcelPortmann | 1:33fdaabcdeda | 39 | lowcount++; |
MarcelPortmann | 1:33fdaabcdeda | 40 | |
MarcelPortmann | 1:33fdaabcdeda | 41 | temp.start = false; |
MarcelPortmann | 1:33fdaabcdeda | 42 | temp.end = false; |
MarcelPortmann | 1:33fdaabcdeda | 43 | temp.hi = highcount; |
MarcelPortmann | 1:33fdaabcdeda | 44 | temp.low = lowcount; |
MarcelPortmann | 1:33fdaabcdeda | 45 | temp.time = time; |
MarcelPortmann | 1:33fdaabcdeda | 46 | temp.pos[0] = posx; |
MarcelPortmann | 1:33fdaabcdeda | 47 | temp.pos[1] = posy; |
MarcelPortmann | 1:33fdaabcdeda | 48 | temp.pos[2] = posz; |
MarcelPortmann | 1:33fdaabcdeda | 49 | data_vec.push_back(temp); |
MarcelPortmann | 1:33fdaabcdeda | 50 | |
MarcelPortmann | 1:33fdaabcdeda | 51 | contr_sice(); |
MarcelPortmann | 1:33fdaabcdeda | 52 | } |
MarcelPortmann | 1:33fdaabcdeda | 53 | |
MarcelPortmann | 1:33fdaabcdeda | 54 | void teach::setend(float posx,float posy,float posz, int time) |
MarcelPortmann | 1:33fdaabcdeda | 55 | { |
MarcelPortmann | 1:33fdaabcdeda | 56 | temp.start = false; |
MarcelPortmann | 1:33fdaabcdeda | 57 | temp.end = true; |
MarcelPortmann | 1:33fdaabcdeda | 58 | temp.hi = highcount; |
MarcelPortmann | 1:33fdaabcdeda | 59 | temp.low = lowcount; |
MarcelPortmann | 1:33fdaabcdeda | 60 | temp.time = time; |
MarcelPortmann | 1:33fdaabcdeda | 61 | temp.pos[0] = posx; |
MarcelPortmann | 1:33fdaabcdeda | 62 | temp.pos[1] = posy; |
MarcelPortmann | 1:33fdaabcdeda | 63 | temp.pos[2] = posz; |
MarcelPortmann | 1:33fdaabcdeda | 64 | data_vec.push_back(temp); |
MarcelPortmann | 1:33fdaabcdeda | 65 | |
MarcelPortmann | 1:33fdaabcdeda | 66 | lowcount = 0; |
MarcelPortmann | 1:33fdaabcdeda | 67 | highcount++; |
MarcelPortmann | 1:33fdaabcdeda | 68 | |
MarcelPortmann | 1:33fdaabcdeda | 69 | contr_sice(); |
MarcelPortmann | 1:33fdaabcdeda | 70 | } |
MarcelPortmann | 1:33fdaabcdeda | 71 | |
MarcelPortmann | 1:33fdaabcdeda | 72 | void teach::save(void) |
MarcelPortmann | 1:33fdaabcdeda | 73 | { |
MarcelPortmann | 1:33fdaabcdeda | 74 | //store data_vec to memory |
MarcelPortmann | 1:33fdaabcdeda | 75 | } |
MarcelPortmann | 1:33fdaabcdeda | 76 | |
MarcelPortmann | 1:33fdaabcdeda | 77 | void teach::stop(void) |
MarcelPortmann | 1:33fdaabcdeda | 78 | { |
MarcelPortmann | 1:33fdaabcdeda | 79 | |
MarcelPortmann | 0:ad924d8a2f98 | 80 | } |
MarcelPortmann | 0:ad924d8a2f98 | 81 | |
MarcelPortmann | 1:33fdaabcdeda | 82 | void teach::process(void) |
MarcelPortmann | 1:33fdaabcdeda | 83 | { |
MarcelPortmann | 1:33fdaabcdeda | 84 | int i=0, k=0, p=0, count=0,forward = 100000, backward = 100000; |
MarcelPortmann | 1:33fdaabcdeda | 85 | float tempsum[3] = {}; |
MarcelPortmann | 1:33fdaabcdeda | 86 | int max = data_vec.size(); |
MarcelPortmann | 0:ad924d8a2f98 | 87 | |
MarcelPortmann | 1:33fdaabcdeda | 88 | for(i=0; i<=max; i++) { // avrage starting Point |
MarcelPortmann | 1:33fdaabcdeda | 89 | if(data_vec[i].start) { |
MarcelPortmann | 1:33fdaabcdeda | 90 | tempsum[0] += data_vec[i].pos[0]; |
MarcelPortmann | 1:33fdaabcdeda | 91 | tempsum[1] += data_vec[i].pos[1]; |
MarcelPortmann | 1:33fdaabcdeda | 92 | tempsum[2] += data_vec[i].pos[2]; |
MarcelPortmann | 1:33fdaabcdeda | 93 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 94 | } |
MarcelPortmann | 1:33fdaabcdeda | 95 | } |
MarcelPortmann | 1:33fdaabcdeda | 96 | tempsum[0] = tempsum[0]/k; |
MarcelPortmann | 1:33fdaabcdeda | 97 | tempsum[1] = tempsum[1]/k; |
MarcelPortmann | 1:33fdaabcdeda | 98 | tempsum[2] = tempsum[2]/k; |
MarcelPortmann | 1:33fdaabcdeda | 99 | |
MarcelPortmann | 1:33fdaabcdeda | 100 | // save startpoint to memory |
MarcelPortmann | 1:33fdaabcdeda | 101 | |
MarcelPortmann | 1:33fdaabcdeda | 102 | i = 0, k = 0, tempsum[0] = 0, tempsum[1] = 0, tempsum[2] = 0; // reset counters |
MarcelPortmann | 1:33fdaabcdeda | 103 | |
MarcelPortmann | 1:33fdaabcdeda | 104 | for(i=0; i<=max; i++) { // avrage end Point |
MarcelPortmann | 1:33fdaabcdeda | 105 | if(data_vec[i].end) { |
MarcelPortmann | 1:33fdaabcdeda | 106 | tempsum[0] += data_vec[i].pos[0]; |
MarcelPortmann | 1:33fdaabcdeda | 107 | tempsum[1] += data_vec[i].pos[1]; |
MarcelPortmann | 1:33fdaabcdeda | 108 | tempsum[2] += data_vec[i].pos[2]; |
MarcelPortmann | 1:33fdaabcdeda | 109 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 110 | } |
MarcelPortmann | 1:33fdaabcdeda | 111 | } |
MarcelPortmann | 1:33fdaabcdeda | 112 | tempsum[0] = tempsum[0]/k; |
MarcelPortmann | 1:33fdaabcdeda | 113 | tempsum[1] = tempsum[1]/k; |
MarcelPortmann | 1:33fdaabcdeda | 114 | tempsum[2] = tempsum[2]/k; |
MarcelPortmann | 1:33fdaabcdeda | 115 | |
MarcelPortmann | 1:33fdaabcdeda | 116 | // save endpoint to memory |
MarcelPortmann | 1:33fdaabcdeda | 117 | |
MarcelPortmann | 1:33fdaabcdeda | 118 | i = 0, k = 0, tempsum[0] = 0, tempsum[1] = 0, tempsum[2] = 0; // reset counters |
MarcelPortmann | 1:33fdaabcdeda | 119 | |
MarcelPortmann | 1:33fdaabcdeda | 120 | for(i=0; i<=max; i++) { // forward point number |
MarcelPortmann | 1:33fdaabcdeda | 121 | |
MarcelPortmann | 1:33fdaabcdeda | 122 | while(!data_vec[k].end) { |
MarcelPortmann | 1:33fdaabcdeda | 123 | count++; |
MarcelPortmann | 1:33fdaabcdeda | 124 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 125 | } |
MarcelPortmann | 1:33fdaabcdeda | 126 | |
MarcelPortmann | 1:33fdaabcdeda | 127 | if(count<forward) { |
MarcelPortmann | 1:33fdaabcdeda | 128 | forward = count; |
MarcelPortmann | 1:33fdaabcdeda | 129 | } |
MarcelPortmann | 1:33fdaabcdeda | 130 | while(!data_vec[k].start) { |
MarcelPortmann | 1:33fdaabcdeda | 131 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 132 | } |
MarcelPortmann | 1:33fdaabcdeda | 133 | i = k; |
MarcelPortmann | 1:33fdaabcdeda | 134 | count = 0; |
MarcelPortmann | 1:33fdaabcdeda | 135 | |
MarcelPortmann | 1:33fdaabcdeda | 136 | } |
MarcelPortmann | 1:33fdaabcdeda | 137 | |
MarcelPortmann | 1:33fdaabcdeda | 138 | k = 0; |
MarcelPortmann | 1:33fdaabcdeda | 139 | for(i=0; i<=max; i++) { // backward point number |
MarcelPortmann | 1:33fdaabcdeda | 140 | |
MarcelPortmann | 1:33fdaabcdeda | 141 | while(!data_vec[k].end) { |
MarcelPortmann | 1:33fdaabcdeda | 142 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 143 | } |
MarcelPortmann | 1:33fdaabcdeda | 144 | |
MarcelPortmann | 1:33fdaabcdeda | 145 | while(!data_vec[k].start) { |
MarcelPortmann | 1:33fdaabcdeda | 146 | count++; |
MarcelPortmann | 1:33fdaabcdeda | 147 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 148 | } |
MarcelPortmann | 1:33fdaabcdeda | 149 | if(count<backward) { |
MarcelPortmann | 1:33fdaabcdeda | 150 | backward = count; |
MarcelPortmann | 1:33fdaabcdeda | 151 | } |
MarcelPortmann | 1:33fdaabcdeda | 152 | i = k; |
MarcelPortmann | 1:33fdaabcdeda | 153 | count = 0; |
MarcelPortmann | 1:33fdaabcdeda | 154 | |
MarcelPortmann | 0:ad924d8a2f98 | 155 | } |
MarcelPortmann | 1:33fdaabcdeda | 156 | |
MarcelPortmann | 1:33fdaabcdeda | 157 | k = 0; |
MarcelPortmann | 1:33fdaabcdeda | 158 | struct temp_arry forw[forward]; // temp array initialise and zerowing |
MarcelPortmann | 1:33fdaabcdeda | 159 | for(i=0; i<forward; i++) { |
MarcelPortmann | 1:33fdaabcdeda | 160 | forw[i].time=0; |
MarcelPortmann | 1:33fdaabcdeda | 161 | forw[i].pos[0]=0; |
MarcelPortmann | 1:33fdaabcdeda | 162 | forw[i].pos[1]=0; |
MarcelPortmann | 1:33fdaabcdeda | 163 | forw[i].pos[2]=0; |
MarcelPortmann | 1:33fdaabcdeda | 164 | } |
MarcelPortmann | 1:33fdaabcdeda | 165 | |
MarcelPortmann | 1:33fdaabcdeda | 166 | for(i=0; i<=max; i++) { // avrage forward points |
MarcelPortmann | 1:33fdaabcdeda | 167 | for(p=0; p<=forward; p++) { |
MarcelPortmann | 1:33fdaabcdeda | 168 | forw[p].time += data_vec[k].time; |
MarcelPortmann | 1:33fdaabcdeda | 169 | forw[p].pos[0] += data_vec[k].pos[0]; |
MarcelPortmann | 1:33fdaabcdeda | 170 | forw[p].pos[1] += data_vec[k].pos[1]; |
MarcelPortmann | 1:33fdaabcdeda | 171 | forw[p].pos[2] += data_vec[k].pos[2]; |
MarcelPortmann | 1:33fdaabcdeda | 172 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 173 | } |
MarcelPortmann | 1:33fdaabcdeda | 174 | |
MarcelPortmann | 1:33fdaabcdeda | 175 | while(!data_vec[k].start) { |
MarcelPortmann | 1:33fdaabcdeda | 176 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 177 | } |
MarcelPortmann | 1:33fdaabcdeda | 178 | i = k; |
MarcelPortmann | 1:33fdaabcdeda | 179 | count++; |
MarcelPortmann | 1:33fdaabcdeda | 180 | |
MarcelPortmann | 1:33fdaabcdeda | 181 | } |
MarcelPortmann | 1:33fdaabcdeda | 182 | for(i=0; i<=forward; i++) { |
MarcelPortmann | 1:33fdaabcdeda | 183 | forw[i].time = (forw[i].time)/count; |
MarcelPortmann | 1:33fdaabcdeda | 184 | forw[i].pos[0] = (forw[i].pos[0])/count; |
MarcelPortmann | 1:33fdaabcdeda | 185 | forw[i].pos[1] = (forw[i].pos[1])/count; |
MarcelPortmann | 1:33fdaabcdeda | 186 | forw[i].pos[2] = (forw[i].pos[2])/count; |
MarcelPortmann | 1:33fdaabcdeda | 187 | } |
MarcelPortmann | 1:33fdaabcdeda | 188 | count = 0; |
MarcelPortmann | 1:33fdaabcdeda | 189 | k = 0, i = 0, p = 0; // reset counters |
MarcelPortmann | 1:33fdaabcdeda | 190 | |
MarcelPortmann | 1:33fdaabcdeda | 191 | // Save forward way to memory |
MarcelPortmann | 1:33fdaabcdeda | 192 | |
MarcelPortmann | 1:33fdaabcdeda | 193 | struct temp_arry backw[backward]; // temp array initialise and zerowing |
MarcelPortmann | 1:33fdaabcdeda | 194 | for(i=0; i<backward; i++) { |
MarcelPortmann | 1:33fdaabcdeda | 195 | backw[i].time=0; |
MarcelPortmann | 1:33fdaabcdeda | 196 | backw[i].pos[0]=0; |
MarcelPortmann | 1:33fdaabcdeda | 197 | backw[i].pos[1]=0; |
MarcelPortmann | 1:33fdaabcdeda | 198 | backw[i].pos[2]=0; |
MarcelPortmann | 1:33fdaabcdeda | 199 | } |
MarcelPortmann | 1:33fdaabcdeda | 200 | |
MarcelPortmann | 1:33fdaabcdeda | 201 | for(i=0; i<=max; i++) { // avrage backward points |
MarcelPortmann | 1:33fdaabcdeda | 202 | |
MarcelPortmann | 1:33fdaabcdeda | 203 | while(!data_vec[k].end) { |
MarcelPortmann | 1:33fdaabcdeda | 204 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 205 | } |
MarcelPortmann | 1:33fdaabcdeda | 206 | |
MarcelPortmann | 1:33fdaabcdeda | 207 | for(p=0; p<=backward; p++) { |
MarcelPortmann | 1:33fdaabcdeda | 208 | backw[p].time += data_vec[k].time; |
MarcelPortmann | 1:33fdaabcdeda | 209 | backw[p].pos[0] += data_vec[k].pos[0]; |
MarcelPortmann | 1:33fdaabcdeda | 210 | backw[p].pos[1] += data_vec[k].pos[1]; |
MarcelPortmann | 1:33fdaabcdeda | 211 | backw[p].pos[2] += data_vec[k].pos[2]; |
MarcelPortmann | 1:33fdaabcdeda | 212 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 213 | } |
MarcelPortmann | 1:33fdaabcdeda | 214 | i = k; |
MarcelPortmann | 1:33fdaabcdeda | 215 | count++; |
MarcelPortmann | 1:33fdaabcdeda | 216 | } |
MarcelPortmann | 1:33fdaabcdeda | 217 | |
MarcelPortmann | 1:33fdaabcdeda | 218 | for(i=0; i<=backward; i++) { |
MarcelPortmann | 1:33fdaabcdeda | 219 | backw[i].time = (backw[i].time)/count; |
MarcelPortmann | 1:33fdaabcdeda | 220 | backw[i].pos[0] = (backw[i].pos[0])/count; |
MarcelPortmann | 1:33fdaabcdeda | 221 | backw[i].pos[0] = (backw[i].pos[0])/count; |
MarcelPortmann | 1:33fdaabcdeda | 222 | backw[i].pos[0] = (backw[i].pos[0])/count; |
MarcelPortmann | 1:33fdaabcdeda | 223 | } |
MarcelPortmann | 1:33fdaabcdeda | 224 | count = 0; |
MarcelPortmann | 1:33fdaabcdeda | 225 | k = 0, i = 0, p = 0; // reset counters |
MarcelPortmann | 1:33fdaabcdeda | 226 | |
MarcelPortmann | 1:33fdaabcdeda | 227 | // save backward way to memory |
MarcelPortmann | 1:33fdaabcdeda | 228 | |
MarcelPortmann | 0:ad924d8a2f98 | 229 | } |
MarcelPortmann | 0:ad924d8a2f98 | 230 | |
MarcelPortmann | 1:33fdaabcdeda | 231 | void teach::temp_store() |
MarcelPortmann | 1:33fdaabcdeda | 232 | { |
MarcelPortmann | 1:33fdaabcdeda | 233 | |
MarcelPortmann | 0:ad924d8a2f98 | 234 | } |
MarcelPortmann | 0:ad924d8a2f98 | 235 | |
MarcelPortmann | 1:33fdaabcdeda | 236 | void teach::contr_sice() |
MarcelPortmann | 1:33fdaabcdeda | 237 | { |
MarcelPortmann | 1:33fdaabcdeda | 238 | if((data_vec.size()*sizeof(posdata)) >= MAX_SIZE) { |
MarcelPortmann | 1:33fdaabcdeda | 239 | // fehlermeldung oder speichern bei zu grossem temp speicher |
MarcelPortmann | 1:33fdaabcdeda | 240 | } |
MarcelPortmann | 0:ad924d8a2f98 | 241 | } |