Code for Browonout Generator box

Committer:
el16ba
Date:
Mon Feb 17 16:16:19 2020 +0000
Revision:
10:a0212b37673b
Parent:
9:71eab0a4ceef
commenting

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el16ba 5:a8297e5f4de1 1
el16ba 5:a8297e5f4de1 2 //By Barnaby Ayriss
el16ba 5:a8297e5f4de1 3 //Owned by Buhler UK Ltd
el16ba 0:9dd5634b94f3 4
el16ba 0:9dd5634b94f3 5 #include "mbed.h"
el16ba 0:9dd5634b94f3 6 #include <string>
el16ba 0:9dd5634b94f3 7 #include <stdio.h>
el16ba 0:9dd5634b94f3 8 #include <stdlib.h>
el16ba 2:018630ec52d1 9 #include <FileHandle.h>
el16ba 2:018630ec52d1 10 #include <vector>
el16ba 4:44760dafcab7 11 #include <iostream>
el16ba 4:44760dafcab7 12 #include <cstdio>
el16ba 4:44760dafcab7 13 #include <cstdlib>
el16ba 0:9dd5634b94f3 14
el16ba 3:16478dd3d1f3 15 DigitalOut led1(LED1, 0);
el16ba 3:16478dd3d1f3 16 DigitalOut led2(LED2, 0);
el16ba 3:16478dd3d1f3 17 DigitalOut led3(LED3, 0);
el16ba 3:16478dd3d1f3 18 DigitalOut led4(LED4, 0);
el16ba 3:16478dd3d1f3 19 DigitalOut do21(p21, 0);
el16ba 2:018630ec52d1 20 InterruptIn di22(p22,PullDown); //removing di22 and its related calls and functions causes a major fault for unknown reasons so it has been left in dispite not being used.
el16ba 6:3f5d21480f11 21 Timeout toOn;
el16ba 6:3f5d21480f11 22 Timeout toOff;
el16ba 2:018630ec52d1 23 Ticker tickOn;
el16ba 2:018630ec52d1 24 Ticker tickOff;
el16ba 0:9dd5634b94f3 25
el16ba 0:9dd5634b94f3 26 Serial pc(USBTX, USBRX); // for PC debug
el16ba 0:9dd5634b94f3 27 LocalFileSystem fs("local");
el16ba 0:9dd5634b94f3 28
el16ba 2:018630ec52d1 29 #define NUMCONFIGPARAM 3
el16ba 0:9dd5634b94f3 30
el16ba 2:018630ec52d1 31 bool flg_start = 0;
el16ba 2:018630ec52d1 32 bool flg_END = false;
el16ba 6:3f5d21480f11 33 bool flg_loop0 = false;
el16ba 6:3f5d21480f11 34 bool flg_loop1 = false;
el16ba 2:018630ec52d1 35 long double configData[NUMCONFIGPARAM];
el16ba 2:018630ec52d1 36 string strData[NUMCONFIGPARAM];
el16ba 0:9dd5634b94f3 37
el16ba 3:16478dd3d1f3 38 //function prototypes
el16ba 3:16478dd3d1f3 39 void init();
el16ba 3:16478dd3d1f3 40 bool is_num_char(char c);
el16ba 3:16478dd3d1f3 41 bool print_config();
el16ba 3:16478dd3d1f3 42 void get_config_data();
el16ba 4:44760dafcab7 43 void power(char pwr = 0);
el16ba 4:44760dafcab7 44 void cycle_wait(long double tOn = configData[0], long double tOff = configData[2]);
el16ba 6:3f5d21480f11 45 void cycle_loopw(long double tOn = configData[0], long double tOff = configData[2]);
el16ba 5:a8297e5f4de1 46 string read_serial_input();
el16ba 5:a8297e5f4de1 47 bool is_num_str(string str);
el16ba 5:a8297e5f4de1 48 long double get_num_input();
el16ba 7:fb8b01ec74a8 49 void powerOn();
el16ba 7:fb8b01ec74a8 50 void powerOff();
el16ba 6:3f5d21480f11 51 void cycle_timeout(long double tOn = configData[0], long double tOff = configData[2]);
el16ba 6:3f5d21480f11 52 void cycle_loopto(long double tOn = configData[0], long double tOff = configData[2]);
el16ba 7:fb8b01ec74a8 53 void loop_tick ();
el16ba 6:3f5d21480f11 54 void cycle_looptick(long double tOn = configData[0], long double tOff = configData[2]);
el16ba 7:fb8b01ec74a8 55 void serial_mode();
el16ba 3:16478dd3d1f3 56
el16ba 3:16478dd3d1f3 57
el16ba 0:9dd5634b94f3 58 //returns if the given character is a number or decimal point character
el16ba 3:16478dd3d1f3 59 bool is_num_char(char c)
el16ba 0:9dd5634b94f3 60 {
el16ba 0:9dd5634b94f3 61 bool isChar = false;
el16ba 0:9dd5634b94f3 62 if((c >= '0' and c <= '9') or c == '.') {
el16ba 0:9dd5634b94f3 63 isChar = true;
el16ba 0:9dd5634b94f3 64 }
el16ba 0:9dd5634b94f3 65 return isChar;
el16ba 0:9dd5634b94f3 66 }
el16ba 0:9dd5634b94f3 67
el16ba 0:9dd5634b94f3 68 //From: https://os.mbed.com/questions/83075/Is-it-possible-to-read-a-small-text-file/
el16ba 0:9dd5634b94f3 69 //Reads config.txt from local drive
el16ba 3:16478dd3d1f3 70 bool print_config()
el16ba 0:9dd5634b94f3 71 {
el16ba 0:9dd5634b94f3 72 bool flg_error;
el16ba 3:16478dd3d1f3 73 pc.printf("Opening file 'config.txt'... ");
el16ba 0:9dd5634b94f3 74 FILE* fp = fopen("/local/config.txt", "r");
el16ba 3:16478dd3d1f3 75 pc.printf("%s\n\r", (!fp ? "Fail :(" : "OK"));
el16ba 4:44760dafcab7 76 pc.printf("\r\n==========\r\n");
el16ba 0:9dd5634b94f3 77 if (!fp) {
el16ba 0:9dd5634b94f3 78 error("error: %s (%d)\n", strerror(errno), -errno);
el16ba 0:9dd5634b94f3 79 flg_error = 1;
el16ba 0:9dd5634b94f3 80 }
el16ba 0:9dd5634b94f3 81 while (!feof(fp)) {
el16ba 0:9dd5634b94f3 82 int c = fgetc(fp);
el16ba 3:16478dd3d1f3 83 pc.printf("%c", c);
el16ba 0:9dd5634b94f3 84 }
el16ba 0:9dd5634b94f3 85
el16ba 0:9dd5634b94f3 86 fclose(fp);
el16ba 4:44760dafcab7 87 pc.printf("\r\n==========\r\n");
el16ba 0:9dd5634b94f3 88 return flg_error;
el16ba 0:9dd5634b94f3 89 }
el16ba 0:9dd5634b94f3 90
el16ba 0:9dd5634b94f3 91 //Reads reads and converts data from config file
el16ba 3:16478dd3d1f3 92 //Once a timed function (e.g. wait(), sleep_for(), ticker, timer e.t.c) is called opening another File pointer will cause the LPC1768 to crash with a Hard Fault.
el16ba 3:16478dd3d1f3 93 void get_config_data()
el16ba 0:9dd5634b94f3 94 {
el16ba 3:16478dd3d1f3 95 pc.printf("Get Config Data \r\n");
el16ba 2:018630ec52d1 96 char c; //Current character being read
el16ba 2:018630ec52d1 97 char strData_index = 0;
el16ba 2:018630ec52d1 98 char* pEnd;
el16ba 2:018630ec52d1 99 bool isReading = false;
el16ba 2:018630ec52d1 100 bool isNumChar;
el16ba 2:018630ec52d1 101 string currentStr;
el16ba 0:9dd5634b94f3 102 FILE* fp = fopen("/local/config.txt", "r");
el16ba 6:3f5d21480f11 103
el16ba 3:16478dd3d1f3 104 while (!feof(fp)) { //loop till end of file
el16ba 3:16478dd3d1f3 105
el16ba 0:9dd5634b94f3 106 c = fgetc(fp);
el16ba 3:16478dd3d1f3 107 isNumChar = is_num_char(c);
el16ba 3:16478dd3d1f3 108 if(isNumChar) { //at number character?
el16ba 2:018630ec52d1 109 currentStr.push_back(c);
el16ba 2:018630ec52d1 110 isReading = true;
el16ba 3:16478dd3d1f3 111 } else if(!isNumChar and isReading) { //at end of number string?
el16ba 2:018630ec52d1 112 isReading = false;
el16ba 2:018630ec52d1 113 strData[strData_index] = currentStr;
el16ba 2:018630ec52d1 114 configData[strData_index] = strtod(currentStr.c_str(), &pEnd);
el16ba 2:018630ec52d1 115 strData_index++;
el16ba 2:018630ec52d1 116 currentStr = "";
el16ba 2:018630ec52d1 117 }
el16ba 3:16478dd3d1f3 118 if (strData_index >= NUMCONFIGPARAM ) { //Read all nessesary data?
el16ba 2:018630ec52d1 119 break;
el16ba 2:018630ec52d1 120 }
el16ba 3:16478dd3d1f3 121
el16ba 3:16478dd3d1f3 122 }
el16ba 3:16478dd3d1f3 123 fclose(fp);
el16ba 3:16478dd3d1f3 124 pc.printf("Data: %Lf, %Lf, %Lf\r\n",configData[0],configData[1],configData[2]);
el16ba 3:16478dd3d1f3 125 }
el16ba 3:16478dd3d1f3 126
el16ba 5:a8297e5f4de1 127 //initialization function
el16ba 3:16478dd3d1f3 128 void init()
el16ba 3:16478dd3d1f3 129 {
el16ba 3:16478dd3d1f3 130 pc.printf("Initializing \r\n");
el16ba 3:16478dd3d1f3 131 do21 = 0;
el16ba 3:16478dd3d1f3 132 led1 = 0;
el16ba 3:16478dd3d1f3 133 pc.baud(9600);
el16ba 3:16478dd3d1f3 134 print_config();
el16ba 3:16478dd3d1f3 135 get_config_data();
el16ba 3:16478dd3d1f3 136 }
el16ba 3:16478dd3d1f3 137
el16ba 5:a8297e5f4de1 138 //Sets the pin to control te machines power and its representative LED
el16ba 4:44760dafcab7 139 void power(char pwr)
el16ba 3:16478dd3d1f3 140 {
el16ba 3:16478dd3d1f3 141 do21 = pwr;
el16ba 3:16478dd3d1f3 142 led1 = pwr;
el16ba 3:16478dd3d1f3 143 }
el16ba 3:16478dd3d1f3 144
el16ba 5:a8297e5f4de1 145 //runs a power cycle using sleep commands
el16ba 4:44760dafcab7 146 void cycle_wait(long double tOn, long double tOff)
el16ba 3:16478dd3d1f3 147 {
el16ba 3:16478dd3d1f3 148 power(1);
el16ba 3:16478dd3d1f3 149 ThisThread::sleep_for(tOn);
el16ba 3:16478dd3d1f3 150 power(0);
el16ba 3:16478dd3d1f3 151 ThisThread::sleep_for(tOff);
el16ba 3:16478dd3d1f3 152 power(1);
el16ba 3:16478dd3d1f3 153 }
el16ba 3:16478dd3d1f3 154
el16ba 5:a8297e5f4de1 155 //runs an infinate powercycle loop
el16ba 6:3f5d21480f11 156 void cycle_loopw(long double tOn, long double tOff)
el16ba 3:16478dd3d1f3 157 {
el16ba 3:16478dd3d1f3 158 while(1) {
el16ba 3:16478dd3d1f3 159 cycle_wait(tOn,tOff);
el16ba 0:9dd5634b94f3 160 }
el16ba 0:9dd5634b94f3 161 }
el16ba 0:9dd5634b94f3 162
el16ba 6:3f5d21480f11 163 // ouputs a string from the serial input using a
el16ba 4:44760dafcab7 164 string read_serial_input()
el16ba 4:44760dafcab7 165 {
el16ba 4:44760dafcab7 166 bool flg_read = true;
el16ba 4:44760dafcab7 167 char c;
el16ba 4:44760dafcab7 168 string str = "";
el16ba 4:44760dafcab7 169
el16ba 4:44760dafcab7 170 while(flg_read) {
el16ba 4:44760dafcab7 171 c = pc.getc();
el16ba 4:44760dafcab7 172 pc.putc(c);
el16ba 4:44760dafcab7 173 if(c == 8 or c == 127) { //If back space or delete remove last character
el16ba 4:44760dafcab7 174 str.pop_back();
el16ba 5:a8297e5f4de1 175 } else if (c == '\n') { //If new line character
el16ba 5:a8297e5f4de1 176 str.pop_back(); // removes return carriage character
el16ba 4:44760dafcab7 177 flg_read = false;
el16ba 4:44760dafcab7 178 break;
el16ba 5:a8297e5f4de1 179 // } else if(c < ' ') { //If none visible character, bar backspace or delete
el16ba 4:44760dafcab7 180 // flg_read = false;
el16ba 4:44760dafcab7 181 // break;
el16ba 4:44760dafcab7 182 } else {
el16ba 4:44760dafcab7 183 str.push_back(c);
el16ba 4:44760dafcab7 184 }
el16ba 4:44760dafcab7 185 }
el16ba 4:44760dafcab7 186 return str;
el16ba 4:44760dafcab7 187 }
el16ba 4:44760dafcab7 188
el16ba 5:a8297e5f4de1 189 //outputs if a string is comprised entirely of number characters
el16ba 4:44760dafcab7 190 bool is_num_str(string str)
el16ba 4:44760dafcab7 191 {
el16ba 4:44760dafcab7 192 bool isNumC = false;
el16ba 4:44760dafcab7 193 bool output = true;
el16ba 4:44760dafcab7 194 for(int i = 0; i < str.length(); i++) {
el16ba 4:44760dafcab7 195 isNumC = is_num_char(str[i]);
el16ba 4:44760dafcab7 196 if(!isNumC) {
el16ba 4:44760dafcab7 197 output = false;
el16ba 4:44760dafcab7 198 }
el16ba 4:44760dafcab7 199 }
el16ba 4:44760dafcab7 200 return output;
el16ba 4:44760dafcab7 201 }
el16ba 4:44760dafcab7 202
el16ba 5:a8297e5f4de1 203 //gets a string of only number characters from the serial input
el16ba 4:44760dafcab7 204 long double get_num_input()
el16ba 4:44760dafcab7 205 {
el16ba 4:44760dafcab7 206 long double output;
el16ba 4:44760dafcab7 207 bool flg_gotStr = false;
el16ba 4:44760dafcab7 208 string str_v = "";
el16ba 4:44760dafcab7 209 char* pEnd;
el16ba 4:44760dafcab7 210
el16ba 4:44760dafcab7 211 while(!flg_gotStr) {
el16ba 4:44760dafcab7 212 pc.puts("value: ");
el16ba 4:44760dafcab7 213 str_v = read_serial_input();
el16ba 4:44760dafcab7 214 if (is_num_str(str_v)) {
el16ba 4:44760dafcab7 215 output = strtod(str_v.c_str(), &pEnd);
el16ba 4:44760dafcab7 216 flg_gotStr = true;
el16ba 4:44760dafcab7 217 break;
el16ba 4:44760dafcab7 218 } else {
el16ba 4:44760dafcab7 219 pc.printf("entry contained non number characters please try again: \r\n");
el16ba 4:44760dafcab7 220 }
el16ba 4:44760dafcab7 221
el16ba 4:44760dafcab7 222 }
el16ba 4:44760dafcab7 223 return output;
el16ba 4:44760dafcab7 224 }
el16ba 4:44760dafcab7 225
el16ba 7:fb8b01ec74a8 226 //power on call back function, as callbacks donot support functions with parameters
el16ba 6:3f5d21480f11 227 void powerOn()
el16ba 6:3f5d21480f11 228 {
el16ba 6:3f5d21480f11 229 power(1);
el16ba 6:3f5d21480f11 230 flg_loop1 = true;
el16ba 6:3f5d21480f11 231 }
el16ba 7:fb8b01ec74a8 232
el16ba 7:fb8b01ec74a8 233 //power off call back function, as callbacks donot support functions with parameters
el16ba 6:3f5d21480f11 234 void powerOff()
el16ba 7:fb8b01ec74a8 235
el16ba 6:3f5d21480f11 236 {
el16ba 6:3f5d21480f11 237 power(0);
el16ba 6:3f5d21480f11 238 flg_loop0 = true;
el16ba 6:3f5d21480f11 239 }
el16ba 4:44760dafcab7 240
el16ba 6:3f5d21480f11 241
el16ba 6:3f5d21480f11 242 //powercycles the machine utilizing timouts for time keeping
el16ba 6:3f5d21480f11 243 void cycle_timeout(long double tOn, long double tOff)
el16ba 7:fb8b01ec74a8 244
el16ba 6:3f5d21480f11 245 {
el16ba 6:3f5d21480f11 246 long int t1,t2;
el16ba 8:8d47dafb7f11 247 toOn.detach();
el16ba 8:8d47dafb7f11 248 toOff.detach();
el16ba 8:8d47dafb7f11 249 t1 = tOn*1000;
el16ba 8:8d47dafb7f11 250 t2 = (tOff*1000) + t1;
el16ba 6:3f5d21480f11 251 flg_loop0 = false;
el16ba 6:3f5d21480f11 252 flg_loop1 = false;
el16ba 6:3f5d21480f11 253 power(1);
el16ba 6:3f5d21480f11 254 toOn.attach_us(&powerOff,t1);
el16ba 6:3f5d21480f11 255 toOff.attach_us(&powerOn,t2);
el16ba 6:3f5d21480f11 256 }
el16ba 6:3f5d21480f11 257
el16ba 6:3f5d21480f11 258 //powercycles the machine, utilizing timouts for time keeping
el16ba 6:3f5d21480f11 259 void cycle_loopto(long double tOn, long double tOff)
el16ba 6:3f5d21480f11 260 {
el16ba 6:3f5d21480f11 261 bool flg_lend = true;
el16ba 6:3f5d21480f11 262 string str = "";
el16ba 8:8d47dafb7f11 263 flg_loop0 = 0;
el16ba 8:8d47dafb7f11 264 flg_loop1 = 0;
el16ba 9:71eab0a4ceef 265
el16ba 8:8d47dafb7f11 266 cycle_timeout(tOn,tOff);
el16ba 6:3f5d21480f11 267 while(flg_lend) {
el16ba 10:a0212b37673b 268 led2 = !led2; //does not run without led2 flashing for unknown reasons
el16ba 6:3f5d21480f11 269 if(flg_loop0 and flg_loop1) {
el16ba 6:3f5d21480f11 270 cycle_timeout(tOn,tOff);
el16ba 6:3f5d21480f11 271 }
el16ba 6:3f5d21480f11 272 }
el16ba 6:3f5d21480f11 273 }
el16ba 6:3f5d21480f11 274
el16ba 6:3f5d21480f11 275 //call back function for cycle_looptick
el16ba 7:fb8b01ec74a8 276 void loop_tick ()
el16ba 7:fb8b01ec74a8 277 {
el16ba 6:3f5d21480f11 278 toOn.attach(&powerOn, (configData[2]/1000) );
el16ba 6:3f5d21480f11 279 powerOff();
el16ba 6:3f5d21480f11 280 flg_loop0 = 1;
el16ba 6:3f5d21480f11 281 }
el16ba 6:3f5d21480f11 282
el16ba 6:3f5d21480f11 283 //Allows the user to set the machine to powercycle and exit the loop via serial commands
el16ba 7:fb8b01ec74a8 284 //utilizes a ticker and a timeout for time keeping
el16ba 7:fb8b01ec74a8 285 void cycle_looptick(long double tOn, long double tOff)
el16ba 7:fb8b01ec74a8 286 {
el16ba 6:3f5d21480f11 287 long double t1,t2;
el16ba 6:3f5d21480f11 288 bool flg_exit = false;
el16ba 6:3f5d21480f11 289 string str;
el16ba 6:3f5d21480f11 290 t1 = tOn/1000;
el16ba 6:3f5d21480f11 291 t2 = (tOff/1000);
el16ba 6:3f5d21480f11 292 power(1);
el16ba 6:3f5d21480f11 293 tickOff.attach(&loop_tick, t1+t2);
el16ba 6:3f5d21480f11 294
el16ba 7:fb8b01ec74a8 295 while(!flg_exit) {
el16ba 7:fb8b01ec74a8 296 flg_loop0 = 0;
el16ba 7:fb8b01ec74a8 297 flg_loop1 = 0;
el16ba 7:fb8b01ec74a8 298 str = read_serial_input();
el16ba 7:fb8b01ec74a8 299 if (str == "end") {
el16ba 7:fb8b01ec74a8 300 tickOff.detach();
el16ba 8:8d47dafb7f11 301 toOn.detach();
el16ba 7:fb8b01ec74a8 302 pc.printf("loop ended\r\n");
el16ba 7:fb8b01ec74a8 303 power(1);
el16ba 7:fb8b01ec74a8 304 flg_exit = true;
el16ba 7:fb8b01ec74a8 305 break;
el16ba 7:fb8b01ec74a8 306 } else {
el16ba 7:fb8b01ec74a8 307 pc.printf("Unknown Command, enter \"end\" to end loop\r\n");
el16ba 7:fb8b01ec74a8 308 str = "";
el16ba 7:fb8b01ec74a8 309 }
el16ba 6:3f5d21480f11 310 }
el16ba 6:3f5d21480f11 311 }
el16ba 6:3f5d21480f11 312
el16ba 6:3f5d21480f11 313
el16ba 6:3f5d21480f11 314
el16ba 6:3f5d21480f11 315 // Allows the user to operate the LPC1768 via serial communications
el16ba 0:9dd5634b94f3 316 void serial_mode()
el16ba 0:9dd5634b94f3 317 {
el16ba 3:16478dd3d1f3 318 pc.printf("Serial Mode \r\n");
el16ba 0:9dd5634b94f3 319 bool flg_read = true;
el16ba 0:9dd5634b94f3 320 char c;
el16ba 4:44760dafcab7 321 string str_c = "";
el16ba 1:8cad7e957324 322
el16ba 3:16478dd3d1f3 323 while(flg_read) {
el16ba 4:44760dafcab7 324 str_c = read_serial_input();
el16ba 6:3f5d21480f11 325 if (str_c == "on") { // turns machine on
el16ba 4:44760dafcab7 326 power(1);
el16ba 5:a8297e5f4de1 327 pc.printf("power on\r\n");
el16ba 6:3f5d21480f11 328
el16ba 6:3f5d21480f11 329 } else if(str_c == "off") { // turns machine off
el16ba 4:44760dafcab7 330 power(0);
el16ba 5:a8297e5f4de1 331 pc.printf("power off\r\n");
el16ba 6:3f5d21480f11 332
el16ba 5:a8297e5f4de1 333 } else if(str_c == "cyclew") { // runs a powercycle
el16ba 4:44760dafcab7 334 cycle_wait();
el16ba 4:44760dafcab7 335 pc.printf("cycled \r\n");
el16ba 6:3f5d21480f11 336
el16ba 6:3f5d21480f11 337 } else if(str_c == "loopw") { // runs a continuous powercycle loop
el16ba 8:8d47dafb7f11 338 pc.printf("Looping. Restart unit to end loop \r\n");
el16ba 6:3f5d21480f11 339 cycle_loopw();
el16ba 6:3f5d21480f11 340
el16ba 6:3f5d21480f11 341 } else if (str_c == "cycleto") {
el16ba 6:3f5d21480f11 342 cycle_timeout();
el16ba 7:fb8b01ec74a8 343 while(flg_loop0 == 0 or flg_loop1 == 0) {
el16ba 6:3f5d21480f11 344 led2 = !led2;
el16ba 6:3f5d21480f11 345 ThisThread::sleep_for(100);
el16ba 6:3f5d21480f11 346 }
el16ba 6:3f5d21480f11 347 printf("cycleto finish\r\n");
el16ba 6:3f5d21480f11 348
el16ba 6:3f5d21480f11 349 } else if (str_c == "loopto") {
el16ba 8:8d47dafb7f11 350 pc.printf("starting loopto, Restart unit to end loop \r\n");
el16ba 6:3f5d21480f11 351 cycle_loopto();
el16ba 6:3f5d21480f11 352
el16ba 6:3f5d21480f11 353 } else if (str_c == "looptick") {
el16ba 6:3f5d21480f11 354 pc.printf("starting looptick \r\n");
el16ba 6:3f5d21480f11 355 cycle_looptick();
el16ba 7:fb8b01ec74a8 356
el16ba 5:a8297e5f4de1 357 } else if(str_c == "newval") { // cahnges cycle time values
el16ba 4:44760dafcab7 358 pc.printf("enter your new on and off times(ms)\r\n");
el16ba 4:44760dafcab7 359 pc.puts("Time on\r\n");
el16ba 4:44760dafcab7 360 configData[0] = get_num_input();
el16ba 6:3f5d21480f11 361 pc.puts("Time off\r\n");
el16ba 4:44760dafcab7 362 configData[2] = get_num_input();
el16ba 4:44760dafcab7 363 pc.printf("Data: %Lf, %Lf, %Lf\r\n",configData[0],configData[1],configData[2]);
el16ba 7:fb8b01ec74a8 364
el16ba 0:9dd5634b94f3 365 } else {
el16ba 6:3f5d21480f11 366 pc.printf("Unknown command: [%s], see README for commands \r\n", str_c.c_str());
el16ba 0:9dd5634b94f3 367 }
el16ba 4:44760dafcab7 368 str_c = "";
el16ba 0:9dd5634b94f3 369 }
el16ba 3:16478dd3d1f3 370
el16ba 0:9dd5634b94f3 371 }
el16ba 0:9dd5634b94f3 372
el16ba 0:9dd5634b94f3 373 int main()
el16ba 0:9dd5634b94f3 374 {
el16ba 0:9dd5634b94f3 375 init();
el16ba 4:44760dafcab7 376
el16ba 1:8cad7e957324 377 while(!flg_END) {
el16ba 3:16478dd3d1f3 378 switch((int)configData[1]) {
el16ba 3:16478dd3d1f3 379 case(1): //Cut the power to the machine once
el16ba 3:16478dd3d1f3 380 cycle_wait();
el16ba 3:16478dd3d1f3 381 pc.printf("cycled \r\n");
el16ba 3:16478dd3d1f3 382 break;
el16ba 1:8cad7e957324 383
el16ba 3:16478dd3d1f3 384 case(2): //Cut the power to the machine in a loop
el16ba 8:8d47dafb7f11 385 pc.printf("Beginning power cycle loop, to end loop press restart button \r\n");
el16ba 6:3f5d21480f11 386 cycle_loopw();
el16ba 3:16478dd3d1f3 387 break;
el16ba 3:16478dd3d1f3 388
el16ba 3:16478dd3d1f3 389 case(3): //Launch in serial command mode
el16ba 3:16478dd3d1f3 390 serial_mode();
el16ba 3:16478dd3d1f3 391 break;
el16ba 1:8cad7e957324 392 }
el16ba 3:16478dd3d1f3 393
el16ba 0:9dd5634b94f3 394 }
el16ba 0:9dd5634b94f3 395
el16ba 3:16478dd3d1f3 396 pc.printf("Program End \r\n");
el16ba 3:16478dd3d1f3 397
el16ba 0:9dd5634b94f3 398 return 0;
el16ba 3:16478dd3d1f3 399 }