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@3:b22580585b9c, 2020-04-27 (annotated)
- Committer:
- MarcelPortmann
- Date:
- Mon Apr 27 05:07:00 2020 +0000
- Revision:
- 3:b22580585b9c
- Parent:
- 1:33fdaabcdeda
memory incl.;
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 | 3:b22580585b9c | 72 | void teach::save(string name) |
MarcelPortmann | 3:b22580585b9c | 73 | { tr_name = name; |
MarcelPortmann | 3:b22580585b9c | 74 | store.ErstellenDatenblock(tr_name); |
MarcelPortmann | 3:b22580585b9c | 75 | process(); |
MarcelPortmann | 3:b22580585b9c | 76 | |
MarcelPortmann | 1:33fdaabcdeda | 77 | } |
MarcelPortmann | 1:33fdaabcdeda | 78 | |
MarcelPortmann | 1:33fdaabcdeda | 79 | void teach::stop(void) |
MarcelPortmann | 1:33fdaabcdeda | 80 | { |
MarcelPortmann | 1:33fdaabcdeda | 81 | |
MarcelPortmann | 0:ad924d8a2f98 | 82 | } |
MarcelPortmann | 0:ad924d8a2f98 | 83 | |
MarcelPortmann | 1:33fdaabcdeda | 84 | void teach::process(void) |
MarcelPortmann | 1:33fdaabcdeda | 85 | { |
MarcelPortmann | 1:33fdaabcdeda | 86 | int i=0, k=0, p=0, count=0,forward = 100000, backward = 100000; |
MarcelPortmann | 1:33fdaabcdeda | 87 | float tempsum[3] = {}; |
MarcelPortmann | 1:33fdaabcdeda | 88 | int max = data_vec.size(); |
MarcelPortmann | 0:ad924d8a2f98 | 89 | |
MarcelPortmann | 1:33fdaabcdeda | 90 | for(i=0; i<=max; i++) { // avrage starting Point |
MarcelPortmann | 1:33fdaabcdeda | 91 | if(data_vec[i].start) { |
MarcelPortmann | 1:33fdaabcdeda | 92 | tempsum[0] += data_vec[i].pos[0]; |
MarcelPortmann | 1:33fdaabcdeda | 93 | tempsum[1] += data_vec[i].pos[1]; |
MarcelPortmann | 1:33fdaabcdeda | 94 | tempsum[2] += data_vec[i].pos[2]; |
MarcelPortmann | 1:33fdaabcdeda | 95 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 96 | } |
MarcelPortmann | 1:33fdaabcdeda | 97 | } |
MarcelPortmann | 1:33fdaabcdeda | 98 | tempsum[0] = tempsum[0]/k; |
MarcelPortmann | 1:33fdaabcdeda | 99 | tempsum[1] = tempsum[1]/k; |
MarcelPortmann | 1:33fdaabcdeda | 100 | tempsum[2] = tempsum[2]/k; |
MarcelPortmann | 1:33fdaabcdeda | 101 | |
MarcelPortmann | 3:b22580585b9c | 102 | float empty[3] = {0,0,1}; // status: 000 standart point |
MarcelPortmann | 3:b22580585b9c | 103 | store.SpeichernPosition(tr_name,0,tempsum,empty,empty); // 001 start point |
MarcelPortmann | 3:b22580585b9c | 104 | // 010 end point |
MarcelPortmann | 1:33fdaabcdeda | 105 | |
MarcelPortmann | 1:33fdaabcdeda | 106 | i = 0, k = 0, tempsum[0] = 0, tempsum[1] = 0, tempsum[2] = 0; // reset counters |
MarcelPortmann | 1:33fdaabcdeda | 107 | |
MarcelPortmann | 1:33fdaabcdeda | 108 | for(i=0; i<=max; i++) { // avrage end Point |
MarcelPortmann | 1:33fdaabcdeda | 109 | if(data_vec[i].end) { |
MarcelPortmann | 1:33fdaabcdeda | 110 | tempsum[0] += data_vec[i].pos[0]; |
MarcelPortmann | 1:33fdaabcdeda | 111 | tempsum[1] += data_vec[i].pos[1]; |
MarcelPortmann | 1:33fdaabcdeda | 112 | tempsum[2] += data_vec[i].pos[2]; |
MarcelPortmann | 1:33fdaabcdeda | 113 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 114 | } |
MarcelPortmann | 1:33fdaabcdeda | 115 | } |
MarcelPortmann | 1:33fdaabcdeda | 116 | tempsum[0] = tempsum[0]/k; |
MarcelPortmann | 1:33fdaabcdeda | 117 | tempsum[1] = tempsum[1]/k; |
MarcelPortmann | 1:33fdaabcdeda | 118 | tempsum[2] = tempsum[2]/k; |
MarcelPortmann | 1:33fdaabcdeda | 119 | |
MarcelPortmann | 1:33fdaabcdeda | 120 | // save endpoint to memory |
MarcelPortmann | 1:33fdaabcdeda | 121 | |
MarcelPortmann | 1:33fdaabcdeda | 122 | i = 0, k = 0, tempsum[0] = 0, tempsum[1] = 0, tempsum[2] = 0; // reset counters |
MarcelPortmann | 1:33fdaabcdeda | 123 | |
MarcelPortmann | 1:33fdaabcdeda | 124 | for(i=0; i<=max; i++) { // forward point number |
MarcelPortmann | 1:33fdaabcdeda | 125 | |
MarcelPortmann | 1:33fdaabcdeda | 126 | while(!data_vec[k].end) { |
MarcelPortmann | 1:33fdaabcdeda | 127 | count++; |
MarcelPortmann | 1:33fdaabcdeda | 128 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 129 | } |
MarcelPortmann | 1:33fdaabcdeda | 130 | |
MarcelPortmann | 1:33fdaabcdeda | 131 | if(count<forward) { |
MarcelPortmann | 1:33fdaabcdeda | 132 | forward = count; |
MarcelPortmann | 1:33fdaabcdeda | 133 | } |
MarcelPortmann | 1:33fdaabcdeda | 134 | while(!data_vec[k].start) { |
MarcelPortmann | 1:33fdaabcdeda | 135 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 136 | } |
MarcelPortmann | 1:33fdaabcdeda | 137 | i = k; |
MarcelPortmann | 1:33fdaabcdeda | 138 | count = 0; |
MarcelPortmann | 1:33fdaabcdeda | 139 | |
MarcelPortmann | 1:33fdaabcdeda | 140 | } |
MarcelPortmann | 1:33fdaabcdeda | 141 | |
MarcelPortmann | 1:33fdaabcdeda | 142 | k = 0; |
MarcelPortmann | 1:33fdaabcdeda | 143 | for(i=0; i<=max; i++) { // backward point number |
MarcelPortmann | 1:33fdaabcdeda | 144 | |
MarcelPortmann | 1:33fdaabcdeda | 145 | while(!data_vec[k].end) { |
MarcelPortmann | 1:33fdaabcdeda | 146 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 147 | } |
MarcelPortmann | 1:33fdaabcdeda | 148 | |
MarcelPortmann | 1:33fdaabcdeda | 149 | while(!data_vec[k].start) { |
MarcelPortmann | 1:33fdaabcdeda | 150 | count++; |
MarcelPortmann | 1:33fdaabcdeda | 151 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 152 | } |
MarcelPortmann | 1:33fdaabcdeda | 153 | if(count<backward) { |
MarcelPortmann | 1:33fdaabcdeda | 154 | backward = count; |
MarcelPortmann | 1:33fdaabcdeda | 155 | } |
MarcelPortmann | 1:33fdaabcdeda | 156 | i = k; |
MarcelPortmann | 1:33fdaabcdeda | 157 | count = 0; |
MarcelPortmann | 1:33fdaabcdeda | 158 | |
MarcelPortmann | 0:ad924d8a2f98 | 159 | } |
MarcelPortmann | 1:33fdaabcdeda | 160 | |
MarcelPortmann | 1:33fdaabcdeda | 161 | k = 0; |
MarcelPortmann | 1:33fdaabcdeda | 162 | struct temp_arry forw[forward]; // temp array initialise and zerowing |
MarcelPortmann | 1:33fdaabcdeda | 163 | for(i=0; i<forward; i++) { |
MarcelPortmann | 1:33fdaabcdeda | 164 | forw[i].time=0; |
MarcelPortmann | 1:33fdaabcdeda | 165 | forw[i].pos[0]=0; |
MarcelPortmann | 1:33fdaabcdeda | 166 | forw[i].pos[1]=0; |
MarcelPortmann | 1:33fdaabcdeda | 167 | forw[i].pos[2]=0; |
MarcelPortmann | 1:33fdaabcdeda | 168 | } |
MarcelPortmann | 1:33fdaabcdeda | 169 | |
MarcelPortmann | 1:33fdaabcdeda | 170 | for(i=0; i<=max; i++) { // avrage forward points |
MarcelPortmann | 1:33fdaabcdeda | 171 | for(p=0; p<=forward; p++) { |
MarcelPortmann | 1:33fdaabcdeda | 172 | forw[p].time += data_vec[k].time; |
MarcelPortmann | 1:33fdaabcdeda | 173 | forw[p].pos[0] += data_vec[k].pos[0]; |
MarcelPortmann | 1:33fdaabcdeda | 174 | forw[p].pos[1] += data_vec[k].pos[1]; |
MarcelPortmann | 1:33fdaabcdeda | 175 | forw[p].pos[2] += data_vec[k].pos[2]; |
MarcelPortmann | 1:33fdaabcdeda | 176 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 177 | } |
MarcelPortmann | 1:33fdaabcdeda | 178 | |
MarcelPortmann | 1:33fdaabcdeda | 179 | while(!data_vec[k].start) { |
MarcelPortmann | 1:33fdaabcdeda | 180 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 181 | } |
MarcelPortmann | 1:33fdaabcdeda | 182 | i = k; |
MarcelPortmann | 1:33fdaabcdeda | 183 | count++; |
MarcelPortmann | 1:33fdaabcdeda | 184 | |
MarcelPortmann | 1:33fdaabcdeda | 185 | } |
MarcelPortmann | 1:33fdaabcdeda | 186 | for(i=0; i<=forward; i++) { |
MarcelPortmann | 1:33fdaabcdeda | 187 | forw[i].time = (forw[i].time)/count; |
MarcelPortmann | 1:33fdaabcdeda | 188 | forw[i].pos[0] = (forw[i].pos[0])/count; |
MarcelPortmann | 1:33fdaabcdeda | 189 | forw[i].pos[1] = (forw[i].pos[1])/count; |
MarcelPortmann | 1:33fdaabcdeda | 190 | forw[i].pos[2] = (forw[i].pos[2])/count; |
MarcelPortmann | 1:33fdaabcdeda | 191 | } |
MarcelPortmann | 1:33fdaabcdeda | 192 | count = 0; |
MarcelPortmann | 1:33fdaabcdeda | 193 | k = 0, i = 0, p = 0; // reset counters |
MarcelPortmann | 1:33fdaabcdeda | 194 | |
MarcelPortmann | 1:33fdaabcdeda | 195 | // Save forward way to memory |
MarcelPortmann | 1:33fdaabcdeda | 196 | |
MarcelPortmann | 1:33fdaabcdeda | 197 | struct temp_arry backw[backward]; // temp array initialise and zerowing |
MarcelPortmann | 1:33fdaabcdeda | 198 | for(i=0; i<backward; i++) { |
MarcelPortmann | 1:33fdaabcdeda | 199 | backw[i].time=0; |
MarcelPortmann | 1:33fdaabcdeda | 200 | backw[i].pos[0]=0; |
MarcelPortmann | 1:33fdaabcdeda | 201 | backw[i].pos[1]=0; |
MarcelPortmann | 1:33fdaabcdeda | 202 | backw[i].pos[2]=0; |
MarcelPortmann | 1:33fdaabcdeda | 203 | } |
MarcelPortmann | 1:33fdaabcdeda | 204 | |
MarcelPortmann | 1:33fdaabcdeda | 205 | for(i=0; i<=max; i++) { // avrage backward points |
MarcelPortmann | 1:33fdaabcdeda | 206 | |
MarcelPortmann | 1:33fdaabcdeda | 207 | while(!data_vec[k].end) { |
MarcelPortmann | 1:33fdaabcdeda | 208 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 209 | } |
MarcelPortmann | 1:33fdaabcdeda | 210 | |
MarcelPortmann | 1:33fdaabcdeda | 211 | for(p=0; p<=backward; p++) { |
MarcelPortmann | 1:33fdaabcdeda | 212 | backw[p].time += data_vec[k].time; |
MarcelPortmann | 1:33fdaabcdeda | 213 | backw[p].pos[0] += data_vec[k].pos[0]; |
MarcelPortmann | 1:33fdaabcdeda | 214 | backw[p].pos[1] += data_vec[k].pos[1]; |
MarcelPortmann | 1:33fdaabcdeda | 215 | backw[p].pos[2] += data_vec[k].pos[2]; |
MarcelPortmann | 1:33fdaabcdeda | 216 | k++; |
MarcelPortmann | 1:33fdaabcdeda | 217 | } |
MarcelPortmann | 1:33fdaabcdeda | 218 | i = k; |
MarcelPortmann | 1:33fdaabcdeda | 219 | count++; |
MarcelPortmann | 1:33fdaabcdeda | 220 | } |
MarcelPortmann | 1:33fdaabcdeda | 221 | |
MarcelPortmann | 1:33fdaabcdeda | 222 | for(i=0; i<=backward; i++) { |
MarcelPortmann | 1:33fdaabcdeda | 223 | backw[i].time = (backw[i].time)/count; |
MarcelPortmann | 1:33fdaabcdeda | 224 | backw[i].pos[0] = (backw[i].pos[0])/count; |
MarcelPortmann | 1:33fdaabcdeda | 225 | backw[i].pos[0] = (backw[i].pos[0])/count; |
MarcelPortmann | 1:33fdaabcdeda | 226 | backw[i].pos[0] = (backw[i].pos[0])/count; |
MarcelPortmann | 1:33fdaabcdeda | 227 | } |
MarcelPortmann | 1:33fdaabcdeda | 228 | count = 0; |
MarcelPortmann | 1:33fdaabcdeda | 229 | k = 0, i = 0, p = 0; // reset counters |
MarcelPortmann | 1:33fdaabcdeda | 230 | |
MarcelPortmann | 1:33fdaabcdeda | 231 | // save backward way to memory |
MarcelPortmann | 1:33fdaabcdeda | 232 | |
MarcelPortmann | 0:ad924d8a2f98 | 233 | } |
MarcelPortmann | 0:ad924d8a2f98 | 234 | |
MarcelPortmann | 1:33fdaabcdeda | 235 | void teach::temp_store() |
MarcelPortmann | 1:33fdaabcdeda | 236 | { |
MarcelPortmann | 1:33fdaabcdeda | 237 | |
MarcelPortmann | 0:ad924d8a2f98 | 238 | } |
MarcelPortmann | 0:ad924d8a2f98 | 239 | |
MarcelPortmann | 1:33fdaabcdeda | 240 | void teach::contr_sice() |
MarcelPortmann | 1:33fdaabcdeda | 241 | { |
MarcelPortmann | 1:33fdaabcdeda | 242 | if((data_vec.size()*sizeof(posdata)) >= MAX_SIZE) { |
MarcelPortmann | 1:33fdaabcdeda | 243 | // fehlermeldung oder speichern bei zu grossem temp speicher |
MarcelPortmann | 1:33fdaabcdeda | 244 | } |
MarcelPortmann | 0:ad924d8a2f98 | 245 | } |