Code for Browonout Generator box

Committer:
el16ba
Date:
Mon Feb 17 12:52:32 2020 +0000
Revision:
6:3f5d21480f11
Parent:
5:a8297e5f4de1
Child:
7:fb8b01ec74a8
added in power-cycle loop that is exit able via serial commands

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