rev.1

Dependencies:   RA8875 SDFileSystem mbed

Committer:
vnemera
Date:
Fri Feb 17 16:53:53 2017 +0000
Revision:
0:6ef3fd4921d7
rev.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vnemera 0:6ef3fd4921d7 1 // MW771 Laser Press HMI.
vnemera 0:6ef3fd4921d7 2 // V.Nemera, 10/07/2016, ver.1.0, C++
vnemera 0:6ef3fd4921d7 3 // CPU: mbed NXP LPC1768 (ARM Cortex-M3, 32bit, 90MHz)
vnemera 0:6ef3fd4921d7 4 //#pragma once
vnemera 0:6ef3fd4921d7 5 #include "mbed.h"
vnemera 0:6ef3fd4921d7 6 #include "RA8875.h"
vnemera 0:6ef3fd4921d7 7 #include "MyFont18x32.h"
vnemera 0:6ef3fd4921d7 8 #include "BPG_Arial08x08.h"
vnemera 0:6ef3fd4921d7 9 #include "BPG_Arial10x10.h"
vnemera 0:6ef3fd4921d7 10 #include "BPG_Arial20x20.h"
vnemera 0:6ef3fd4921d7 11 #include "BPG_Arial31x32.h"
vnemera 0:6ef3fd4921d7 12 #include "BPG_Arial63x63.h"
vnemera 0:6ef3fd4921d7 13 #include "SDFileSystem.h"
vnemera 0:6ef3fd4921d7 14 #include "stdint.h"
vnemera 0:6ef3fd4921d7 15 #include <string>
vnemera 0:6ef3fd4921d7 16 using std::string;
vnemera 0:6ef3fd4921d7 17
vnemera 0:6ef3fd4921d7 18 #include "main.h"
vnemera 0:6ef3fd4921d7 19 #include "comm.h"
vnemera 0:6ef3fd4921d7 20
vnemera 0:6ef3fd4921d7 21 int a7, b7, c7, d7;
vnemera 0:6ef3fd4921d7 22
vnemera 0:6ef3fd4921d7 23 DigitalOut led1(LED1);
vnemera 0:6ef3fd4921d7 24 DigitalOut led2(LED2);
vnemera 0:6ef3fd4921d7 25 DigitalOut led3(LED3);
vnemera 0:6ef3fd4921d7 26 DigitalOut led4(LED4);
vnemera 0:6ef3fd4921d7 27
vnemera 0:6ef3fd4921d7 28 int iLed;
vnemera 0:6ef3fd4921d7 29
vnemera 0:6ef3fd4921d7 30 Serial pc(USBTX, USBRX); // pc feedback
vnemera 0:6ef3fd4921d7 31
vnemera 0:6ef3fd4921d7 32 extern void main_cycle_add(void);
vnemera 0:6ef3fd4921d7 33 extern void initHMIio(void);
vnemera 0:6ef3fd4921d7 34 extern int SetLasComm(int icLC);
vnemera 0:6ef3fd4921d7 35 extern void flipRS(void);
vnemera 0:6ef3fd4921d7 36
vnemera 0:6ef3fd4921d7 37 // These two defines can be enabled, or commented out
vnemera 0:6ef3fd4921d7 38 #define BIG_SCREEN
vnemera 0:6ef3fd4921d7 39 //#define CAP_TOUCH
vnemera 0:6ef3fd4921d7 40 #define LCD_C 16 // color - bits per pixel
vnemera 0:6ef3fd4921d7 41
vnemera 0:6ef3fd4921d7 42 #ifdef CAP_TOUCH
vnemera 0:6ef3fd4921d7 43 RA8875 lcd(p5, p6, p7, p8, NC, p11,p12,p13, "tft"); // MOSI,MISO,SCK,/ChipSelect,/reset, SDA,SCL,/IRQ, name
vnemera 0:6ef3fd4921d7 44 #else
vnemera 0:6ef3fd4921d7 45 RA8875 lcd(p5, p6, p7, p8, NC, "tft"); //MOSI, MISO, SCK, /ChipSelect, /reset, name
vnemera 0:6ef3fd4921d7 46 //LocalFileSystem local ("sd"); // access to calibration file for resistive touch.
vnemera 0:6ef3fd4921d7 47 #endif
vnemera 0:6ef3fd4921d7 48
vnemera 0:6ef3fd4921d7 49 #define PC_BAUD 115200 // I like the serial communications to be fast
vnemera 0:6ef3fd4921d7 50
vnemera 0:6ef3fd4921d7 51 #ifdef BIG_SCREEN
vnemera 0:6ef3fd4921d7 52 #define LCD_W 800
vnemera 0:6ef3fd4921d7 53 #define LCD_H 480
vnemera 0:6ef3fd4921d7 54 #define DEF_RADIUS 50 // default radius of the fingerprint
vnemera 0:6ef3fd4921d7 55 #define BL_NORM 25 // Backlight Normal setting (0 to 255)
vnemera 0:6ef3fd4921d7 56 #else
vnemera 0:6ef3fd4921d7 57 #define LCD_W 480
vnemera 0:6ef3fd4921d7 58 #define LCD_H 272
vnemera 0:6ef3fd4921d7 59 #define DEF_RADIUS 20 // default radius of the fingerprint
vnemera 0:6ef3fd4921d7 60 #define BL_NORM 25 // Backlight Normal setting (0 to 255)
vnemera 0:6ef3fd4921d7 61 #endif
vnemera 0:6ef3fd4921d7 62
vnemera 0:6ef3fd4921d7 63 #define Gray (color_t)(RGB(187,187,187))
vnemera 0:6ef3fd4921d7 64
vnemera 0:6ef3fd4921d7 65 color_t fingerColor[5] = {Blue, Red, Green, Yellow, Magenta};
vnemera 0:6ef3fd4921d7 66 point_t last[5]; // space for tracking 5 touches
vnemera 0:6ef3fd4921d7 67 int layer = 0;
vnemera 0:6ef3fd4921d7 68
vnemera 0:6ef3fd4921d7 69
vnemera 0:6ef3fd4921d7 70 //SDFileSystem(mosi,miso,sclk,cs,name,cd, SwitchType, int hz);
vnemera 0:6ef3fd4921d7 71 SDFileSystem sd(p5, p6, p7, p29, "sd", p30, SDFileSystem::SWITCH_NEG_NO, 8000000);
vnemera 0:6ef3fd4921d7 72
vnemera 0:6ef3fd4921d7 73 int iPC;
vnemera 0:6ef3fd4921d7 74 char bufferNL[512];
vnemera 0:6ef3fd4921d7 75 //const char *rDr = "/";
vnemera 0:6ef3fd4921d7 76 char *rDr = "/";
vnemera 0:6ef3fd4921d7 77
vnemera 0:6ef3fd4921d7 78 Ticker tickRS; //rs232 pc, io, laser
vnemera 0:6ef3fd4921d7 79 timestamp_t tickTime = 2048; // ticker interval in microSec
vnemera 0:6ef3fd4921d7 80
vnemera 0:6ef3fd4921d7 81 //Timer IOwait; //timeout for IO controller RS232 connection
vnemera 0:6ef3fd4921d7 82 int usMeasure;
vnemera 0:6ef3fd4921d7 83
vnemera 0:6ef3fd4921d7 84 point_t lastTP;
vnemera 0:6ef3fd4921d7 85
vnemera 0:6ef3fd4921d7 86 const char *cPN[8];
vnemera 0:6ef3fd4921d7 87 const char *cWM[3];
vnemera 0:6ef3fd4921d7 88 //---------------------------------------------------------------------------------
vnemera 0:6ef3fd4921d7 89 TextBox txtBox[] = {
vnemera 0:6ef3fd4921d7 90 { 290, 15, 348, 57, 310, 20, Gray, Black, "1"},
vnemera 0:6ef3fd4921d7 91 { 350, 15, 408, 57, 370, 20, Gray, Black, "2"},
vnemera 0:6ef3fd4921d7 92 { 410, 15, 468, 57, 430, 20, Gray, Black, "3"},
vnemera 0:6ef3fd4921d7 93 { 470, 15, 528, 57, 490, 20, Gray, Black, "4"},
vnemera 0:6ef3fd4921d7 94 { 530, 15, 588, 57, 550, 20, Gray, Black, "5"},
vnemera 0:6ef3fd4921d7 95 { 590, 15, 648, 57, 610, 20, Gray, Black, "6"},
vnemera 0:6ef3fd4921d7 96 { 650, 15, 708, 57, 670, 20, Gray, Black, "7"},
vnemera 0:6ef3fd4921d7 97 { 710, 15, 768, 57, 730, 20, Gray, Black, "8"},
vnemera 0:6ef3fd4921d7 98 { 290, 70, 408, 112, 300, 75, Gray, Black, "Circle"},
vnemera 0:6ef3fd4921d7 99 { 410, 70, 528, 112, 420, 75, Gray, Black, "Eight"},
vnemera 0:6ef3fd4921d7 100 { 530, 70, 648, 112, 540, 75, Gray, Black, "Infinity"}
vnemera 0:6ef3fd4921d7 101 };
vnemera 0:6ef3fd4921d7 102 int TextBoxSize = 11;
vnemera 0:6ef3fd4921d7 103 int progNumber = 0; //program# 0..7
vnemera 0:6ef3fd4921d7 104 int wobbleMode = 0; //wobble mode
vnemera 0:6ef3fd4921d7 105 int Lmode = 0; //laser mode
vnemera 0:6ef3fd4921d7 106
vnemera 0:6ef3fd4921d7 107 ProgPar prPar[] = { //default (init) parameters
vnemera 0:6ef3fd4921d7 108 { 0, 10, 50, 0, 100, 100, 1, 4, 230, 500, 4},
vnemera 0:6ef3fd4921d7 109 { 0, 20, 80, 0, 200, 50, 2, 5, 200, 1000, 7},
vnemera 0:6ef3fd4921d7 110 { 0, 30, 90, 0, 400, 25, 3, 3, 100, 1500, 1},
vnemera 0:6ef3fd4921d7 111 { 0, 40, 100, 0, 500, 10, 4, 5, 50, 1600, 3},
vnemera 0:6ef3fd4921d7 112 { 1, 50, 70, 1, 100, 8, 1, 5, 250, 1100, 9},
vnemera 0:6ef3fd4921d7 113 { 1, 60, 100, 1, 200, 5, 2, 5, 180, 800, 5},
vnemera 0:6ef3fd4921d7 114 { 2, 70, 75, 1, 400, 10, 1, 3, 120, 600, 7},
vnemera 0:6ef3fd4921d7 115 { 2, 80, 85, 1, 500, 9, 3, 5, 240, 750, 21}
vnemera 0:6ef3fd4921d7 116 };
vnemera 0:6ef3fd4921d7 117 char nCh[] = {'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0'};
vnemera 0:6ef3fd4921d7 118
vnemera 0:6ef3fd4921d7 119 TextBoxR txtBoxR[] = {
vnemera 0:6ef3fd4921d7 120 { 290, 125, 380, 167, 10, 8, 320, 130, Gray, Black, "10"}, //LPbeg
vnemera 0:6ef3fd4921d7 121 { 470, 125, 560, 167, 10, 8, 500, 130, Gray, Black, "100"}, //LPend
vnemera 0:6ef3fd4921d7 122 { 650, 125, 768, 167, 10, 8, 660, 130, Gray, Black, "CW"}, //Lmode
vnemera 0:6ef3fd4921d7 123 { 290, 180, 380, 222, 10, 8, 320, 185, Gray, Black, "500"}, //Lfreq
vnemera 0:6ef3fd4921d7 124 { 470, 180, 560, 222, 10, 8, 500, 185, Gray, Black, "10"}, //Lpulse
vnemera 0:6ef3fd4921d7 125 { 290, 235, 380, 277, 10, 8, 320, 240, Gray, Black, "20"}, //amplBeg
vnemera 0:6ef3fd4921d7 126 { 470, 235, 560, 277, 10, 8, 500, 240, Gray, Black, "50"}, //amplEnd
vnemera 0:6ef3fd4921d7 127 { 290, 290, 380, 332, 10, 8, 320, 295, Gray, Black, "250"}, //wobFreq
vnemera 0:6ef3fd4921d7 128 { 290, 345, 380, 387, 10, 8, 310, 350, Gray, Black, "1500"}, //wobtime
vnemera 0:6ef3fd4921d7 129 { 470, 345, 560, 387, 10, 8, 500, 350, Gray, Black, "4"}, //amplNum
vnemera 0:6ef3fd4921d7 130 { 200, 410, 600, 452, 10, 8, 210, 415, Gray, Green, "R E A D Y"}, //status line
vnemera 0:6ef3fd4921d7 131 { 625, 253, 775, 343, 5, 3, 635, 283, Yellow, Black, " E D I T"}, //edit btn
vnemera 0:6ef3fd4921d7 132 { 625, 365, 775, 455, 5, 3, 635, 395, Yellow, Black, " M A I N"} //main btn
vnemera 0:6ef3fd4921d7 133 };
vnemera 0:6ef3fd4921d7 134 int TextBoxRSize = 13;
vnemera 0:6ef3fd4921d7 135 int numTPstatus = 10; // # txtBoxR[10] for status line
vnemera 0:6ef3fd4921d7 136 int numTPeditBtn = 11; // # txtBoxR[11] for edit btn
vnemera 0:6ef3fd4921d7 137 int numTPmainBtn = 12; // # txtBoxR[12] for main btn
vnemera 0:6ef3fd4921d7 138 int numTPvalBtn = 11; // # txtBoxR[11] for values btn
vnemera 0:6ef3fd4921d7 139 int numTPservBtn = 12; // # txtBoxR[12] for service btn
vnemera 0:6ef3fd4921d7 140 int numPrPar = 10; // # of integer programm parameters
vnemera 0:6ef3fd4921d7 141 int numLmode = 2; // # of Lmode parameter
vnemera 0:6ef3fd4921d7 142
vnemera 0:6ef3fd4921d7 143 int flagParChanged = 0;
vnemera 0:6ef3fd4921d7 144 int flagLrsConnected = 0;
vnemera 0:6ef3fd4921d7 145 int flagLcomProcess = 0;
vnemera 0:6ef3fd4921d7 146 int flagWeld = 0; //welding in progress
vnemera 0:6ef3fd4921d7 147 int TPmode = 0; //0-Operate mode, 1-Edit mode, 2-Service mode
vnemera 0:6ef3fd4921d7 148 int editBtnMode = 0; //0-edit, 1-set
vnemera 0:6ef3fd4921d7 149 int TPstatus = 0; //index Stat[]
vnemera 0:6ef3fd4921d7 150 char sTatus[32];
vnemera 0:6ef3fd4921d7 151
vnemera 0:6ef3fd4921d7 152 // Status reported by controller
vnemera 0:6ef3fd4921d7 153 TPstring Stat[] = {"R E A D Y", //status 0
vnemera 0:6ef3fd4921d7 154 "IO NOT READY", //status 1
vnemera 0:6ef3fd4921d7 155 "E-STOP ON", //status 2
vnemera 0:6ef3fd4921d7 156 "LASER POWER OFF", //status 3
vnemera 0:6ef3fd4921d7 157 "LASER NOT READY", //status 4
vnemera 0:6ef3fd4921d7 158 "LASER RS232 NOT READY", //status 5
vnemera 0:6ef3fd4921d7 159 "SHORT IO COMMAND", //status 6
vnemera 0:6ef3fd4921d7 160 "WRONG IO COMMAND", //status 7
vnemera 0:6ef3fd4921d7 161 "", //status 8
vnemera 0:6ef3fd4921d7 162 "", //status 9
vnemera 0:6ef3fd4921d7 163 "", //status 10 (do not change it)
vnemera 0:6ef3fd4921d7 164 "LASER DOES NOT ANSWER", //error 11
vnemera 0:6ef3fd4921d7 165 "LASER COMMAND ERROR", //error 12
vnemera 0:6ef3fd4921d7 166 "", //error 13
vnemera 0:6ef3fd4921d7 167 "", //status 14
vnemera 0:6ef3fd4921d7 168 "", //status 15
vnemera 0:6ef3fd4921d7 169 "READY FOR WELDING", //status 16
vnemera 0:6ef3fd4921d7 170 "WOBBLE HEAD INIT...", //status 17
vnemera 0:6ef3fd4921d7 171 "WOBBLE HEAD ERROR", //status 18
vnemera 0:6ef3fd4921d7 172 "IO CONTROLLER ERROR", //status 19
vnemera 0:6ef3fd4921d7 173 "WELDING IN PROGRESS..", //status 20
vnemera 0:6ef3fd4921d7 174 "", //status 21 (auto reset e-stop)
vnemera 0:6ef3fd4921d7 175 };
vnemera 0:6ef3fd4921d7 176 int indStat = 0;
vnemera 0:6ef3fd4921d7 177
vnemera 0:6ef3fd4921d7 178 // Errors reported by controller
vnemera 0:6ef3fd4921d7 179 TPstring fErr[] = {"Done!",
vnemera 0:6ef3fd4921d7 180 "Write error!",
vnemera 0:6ef3fd4921d7 181 "Failed to close file!",
vnemera 0:6ef3fd4921d7 182 "Failed to create file!",
vnemera 0:6ef3fd4921d7 183 "Failed to open file!",
vnemera 0:6ef3fd4921d7 184 "No card present!",
vnemera 0:6ef3fd4921d7 185 "Failed mount SD!"};
vnemera 0:6ef3fd4921d7 186 //Numpad screen label
vnemera 0:6ef3fd4921d7 187 TPstring Labels[] = {"Laser power [%] beg",
vnemera 0:6ef3fd4921d7 188 "Laser power [%] end",
vnemera 0:6ef3fd4921d7 189 "Laser mode",
vnemera 0:6ef3fd4921d7 190 "Laser frequency [Hz]",
vnemera 0:6ef3fd4921d7 191 "Laser pulse length [%]",
vnemera 0:6ef3fd4921d7 192 "Amplitude [0.1mm] beg.",
vnemera 0:6ef3fd4921d7 193 "Amplitude [0.1mm] end",
vnemera 0:6ef3fd4921d7 194 "Wobble frequency [Hz]",
vnemera 0:6ef3fd4921d7 195 "Welding time [mS]",
vnemera 0:6ef3fd4921d7 196 "# of amplitude steps",
vnemera 0:6ef3fd4921d7 197 "File p#"};
vnemera 0:6ef3fd4921d7 198 int LabelsIndex = 0;
vnemera 0:6ef3fd4921d7 199
vnemera 0:6ef3fd4921d7 200 TextBox txtBoxNP[] = {
vnemera 0:6ef3fd4921d7 201 { 656, 166, 776, 261, 706, 186, Gray, Black, "0"},
vnemera 0:6ef3fd4921d7 202 { 290, 360, 410, 455, 340, 380, Gray, Black, "1"},
vnemera 0:6ef3fd4921d7 203 { 412, 360, 532, 455, 462, 380, Gray, Black, "2"},
vnemera 0:6ef3fd4921d7 204 { 534, 360, 654, 455, 584, 380, Gray, Black, "3"},
vnemera 0:6ef3fd4921d7 205 { 290, 263, 410, 358, 340, 283, Gray, Black, "4"},
vnemera 0:6ef3fd4921d7 206 { 412, 263, 532, 358, 462, 283, Gray, Black, "5"},
vnemera 0:6ef3fd4921d7 207 { 534, 263, 654, 358, 584, 283, Gray, Black, "6"},
vnemera 0:6ef3fd4921d7 208 { 290, 166, 410, 261, 340, 186, Gray, Black, "7"},
vnemera 0:6ef3fd4921d7 209 { 412, 166, 532, 261, 462, 186, Gray, Black, "8"},
vnemera 0:6ef3fd4921d7 210 { 534, 166, 654, 261, 584, 186, Gray, Black, "9"},
vnemera 0:6ef3fd4921d7 211 { 656, 263, 776, 358, 706, 283, Gray, Black, "."},
vnemera 0:6ef3fd4921d7 212 { 656, 360, 776, 455, 680, 380, Gray, Black, "BACK"},
vnemera 0:6ef3fd4921d7 213 { 656, 69, 776, 164, 695, 89, Gray, Black, "OK"}
vnemera 0:6ef3fd4921d7 214 };
vnemera 0:6ef3fd4921d7 215 int TextBoxNPSize = 13;
vnemera 0:6ef3fd4921d7 216 int NPinp = 0;
vnemera 0:6ef3fd4921d7 217 bool flagNPinp = false;
vnemera 0:6ef3fd4921d7 218
vnemera 0:6ef3fd4921d7 219 int LPscreen = 0; //0-values, 1-numpad, 2-sevice, 3-main screen
vnemera 0:6ef3fd4921d7 220
vnemera 0:6ef3fd4921d7 221 TextBoxR txtBNP = { 300, 120, 640, 162, 10, 8, 320, 130, Gray, Black, ""};
vnemera 0:6ef3fd4921d7 222
vnemera 0:6ef3fd4921d7 223 MinMax miMa[] = {
vnemera 0:6ef3fd4921d7 224 { 0, 100}, //0-LPbeg
vnemera 0:6ef3fd4921d7 225 { 0, 100}, //1-LPend
vnemera 0:6ef3fd4921d7 226 { 0, 1}, //2
vnemera 0:6ef3fd4921d7 227 { 1, 1000}, //3-Lfreq
vnemera 0:6ef3fd4921d7 228 { 1, 100}, //4-Lpulse
vnemera 0:6ef3fd4921d7 229 { 0, 90}, //5-amplBeg
vnemera 0:6ef3fd4921d7 230 { 0, 90}, //6-amplEnd
vnemera 0:6ef3fd4921d7 231 { 1, 100}, //7-wFreq
vnemera 0:6ef3fd4921d7 232 { 1, 5000}, //8-wTime
vnemera 0:6ef3fd4921d7 233 { 1, 100}, //9-amplNum
vnemera 0:6ef3fd4921d7 234 { 0, 99} //10-file p#
vnemera 0:6ef3fd4921d7 235 };
vnemera 0:6ef3fd4921d7 236 int miMaSize = 9;
vnemera 0:6ef3fd4921d7 237
vnemera 0:6ef3fd4921d7 238 IOPar ioPar; //io controller parameters
vnemera 0:6ef3fd4921d7 239
vnemera 0:6ef3fd4921d7 240 //------service-------------------------
vnemera 0:6ef3fd4921d7 241 TextBoxR txtRServ[] = {
vnemera 0:6ef3fd4921d7 242 { 625, 365, 775, 455, 10, 8, 650, 395, Yellow, Black, "M A I N"}, //btn main
vnemera 0:6ef3fd4921d7 243 { 625, 276, 775, 346, 10, 8, 650, 296, Yellow, Black, "S A V E"}, //btn save
vnemera 0:6ef3fd4921d7 244 { 625, 196, 775, 266, 10, 8, 650, 216, Yellow, Black, "L O A D"}, //btn load
vnemera 0:6ef3fd4921d7 245 { 625, 116, 775, 186, 10, 8, 650, 136, Yellow, Black, " D I R"}, //btn dir
vnemera 0:6ef3fd4921d7 246 { 715, 26, 775, 86, 10, 8, 725, 40, Gray, Black, "0"}, //file #
vnemera 0:6ef3fd4921d7 247 };
vnemera 0:6ef3fd4921d7 248 int txtRServSize = 5;
vnemera 0:6ef3fd4921d7 249 int fileNum = 0;
vnemera 0:6ef3fd4921d7 250
vnemera 0:6ef3fd4921d7 251 TextBox txtBoxDir[] = {
vnemera 0:6ef3fd4921d7 252 { 20, 54, 400, 91, 25, 58, Gray, Black, " "},
vnemera 0:6ef3fd4921d7 253 { 20, 93, 400, 130, 25, 97, Gray, Black, " "},
vnemera 0:6ef3fd4921d7 254 { 20, 132, 400, 169, 25, 136, Gray, Black, " "},
vnemera 0:6ef3fd4921d7 255 { 20, 171, 400, 208, 25, 175, Gray, Black, " "},
vnemera 0:6ef3fd4921d7 256 { 20, 210, 400, 247, 25, 214, Gray, Black, " "},
vnemera 0:6ef3fd4921d7 257 { 20, 249, 400, 286, 25, 253, Gray, Black, " "},
vnemera 0:6ef3fd4921d7 258 { 20, 288, 400, 325, 25, 292, Gray, Black, " "},
vnemera 0:6ef3fd4921d7 259 { 20, 327, 400, 364, 25, 331, Gray, Black, " "},
vnemera 0:6ef3fd4921d7 260 { 20, 366, 400, 403, 25, 370, Gray, Black, " "}
vnemera 0:6ef3fd4921d7 261 };
vnemera 0:6ef3fd4921d7 262 int TextBoxDirSize = 9;
vnemera 0:6ef3fd4921d7 263
vnemera 0:6ef3fd4921d7 264 TextBoxR txtRdir[] = {
vnemera 0:6ef3fd4921d7 265 { 410, 20, 560, 110, 10, 8, 425, 48, Yellow, Black, "SPLASH"}, //btn splash
vnemera 0:6ef3fd4921d7 266 { 410, 210, 560, 300, 10, 8, 450, 238, Yellow, Black, " UP"}, //btn up
vnemera 0:6ef3fd4921d7 267 { 410, 310, 560, 400, 10, 8, 440, 338, Yellow, Black, " DOWN"}, //btn down
vnemera 0:6ef3fd4921d7 268 };
vnemera 0:6ef3fd4921d7 269 int txtRdirSize = 3;
vnemera 0:6ef3fd4921d7 270 //---------------------------------------------------------------------------------
vnemera 0:6ef3fd4921d7 271 void flipUS(void) {
vnemera 0:6ef3fd4921d7 272 NVIC_DisableIRQ(TIMER3_IRQn); //disable timer3 interrupt
vnemera 0:6ef3fd4921d7 273 flipRS();
vnemera 0:6ef3fd4921d7 274 LPC_TIM3->IR |= 1 << 0; // Clear MR0 interrupt flag
vnemera 0:6ef3fd4921d7 275 NVIC_EnableIRQ(TIMER3_IRQn); //enable timer3 interrupt
vnemera 0:6ef3fd4921d7 276 }
vnemera 0:6ef3fd4921d7 277
vnemera 0:6ef3fd4921d7 278 void writeTestFile(void)
vnemera 0:6ef3fd4921d7 279 {
vnemera 0:6ef3fd4921d7 280 //creating a 1MB test file <Test File.bin>
vnemera 0:6ef3fd4921d7 281 iPC = pc.printf("Write <Test File.bin> from %iB buffer", sizeof(bufferNL));
vnemera 0:6ef3fd4921d7 282 FileHandle* file = sd.open("Test File.bin", O_WRONLY | O_CREAT | O_TRUNC);
vnemera 0:6ef3fd4921d7 283 if (file != NULL) {
vnemera 0:6ef3fd4921d7 284 for (int i = 0; i < (1048576 / sizeof(bufferNL)); i++) {
vnemera 0:6ef3fd4921d7 285 if (file->write(bufferNL, sizeof(bufferNL)) != sizeof(bufferNL)) {
vnemera 0:6ef3fd4921d7 286 pc.printf("write error!\n");
vnemera 0:6ef3fd4921d7 287 return;
vnemera 0:6ef3fd4921d7 288 }
vnemera 0:6ef3fd4921d7 289 }
vnemera 0:6ef3fd4921d7 290 if (file->close())
vnemera 0:6ef3fd4921d7 291 pc.printf("failed to close file!\n");
vnemera 0:6ef3fd4921d7 292 else
vnemera 0:6ef3fd4921d7 293 pc.printf("done!\n");
vnemera 0:6ef3fd4921d7 294 } else {
vnemera 0:6ef3fd4921d7 295 printf("failed to create file!\n");
vnemera 0:6ef3fd4921d7 296 }
vnemera 0:6ef3fd4921d7 297 }
vnemera 0:6ef3fd4921d7 298
vnemera 0:6ef3fd4921d7 299 void readTestFile(void)
vnemera 0:6ef3fd4921d7 300 {
vnemera 0:6ef3fd4921d7 301 //read buffer from the 1MB file created by writeTest()
vnemera 0:6ef3fd4921d7 302 pc.printf("Read <Test File.bin> to %iB buffer.. ", sizeof(bufferNL));
vnemera 0:6ef3fd4921d7 303 FileHandle* file = sd.open("Test File.bin", O_RDONLY);
vnemera 0:6ef3fd4921d7 304 if (file != NULL) {
vnemera 0:6ef3fd4921d7 305 file->read(bufferNL, sizeof(bufferNL));
vnemera 0:6ef3fd4921d7 306 if (file->close())
vnemera 0:6ef3fd4921d7 307 pc.printf("failed to close file!\n");
vnemera 0:6ef3fd4921d7 308 else
vnemera 0:6ef3fd4921d7 309 pc.printf("done!\n");
vnemera 0:6ef3fd4921d7 310 }
vnemera 0:6ef3fd4921d7 311 else {
vnemera 0:6ef3fd4921d7 312 pc.printf("failed to open file!\n");
vnemera 0:6ef3fd4921d7 313 }
vnemera 0:6ef3fd4921d7 314 }
vnemera 0:6ef3fd4921d7 315
vnemera 0:6ef3fd4921d7 316 void fillTestBuffer(void){
vnemera 0:6ef3fd4921d7 317 for (int i = 0; i < 40; i++) {bufferNL[i] = (char)48;}
vnemera 0:6ef3fd4921d7 318 for (int i = 0; i < 440; i++) {bufferNL[i+40] = (char)49;}
vnemera 0:6ef3fd4921d7 319 for (int i = 0; i < 60; i++) {bufferNL[i+440] = (char)48;}
vnemera 0:6ef3fd4921d7 320
vnemera 0:6ef3fd4921d7 321 for (int i = 0; i < 10; i++) {
vnemera 0:6ef3fd4921d7 322 for (int j = 0; j < 50; j++) {
vnemera 0:6ef3fd4921d7 323 pc.printf("%c",bufferNL[i * 50 + j]);
vnemera 0:6ef3fd4921d7 324 }
vnemera 0:6ef3fd4921d7 325 pc.printf("\n");
vnemera 0:6ef3fd4921d7 326 }
vnemera 0:6ef3fd4921d7 327 }
vnemera 0:6ef3fd4921d7 328
vnemera 0:6ef3fd4921d7 329 int connectSD(void){
vnemera 0:6ef3fd4921d7 330 //Make sure a card is present
vnemera 0:6ef3fd4921d7 331 if (!sd.card_present()) {
vnemera 0:6ef3fd4921d7 332 pc.printf("\nNo card present!\n");
vnemera 0:6ef3fd4921d7 333 return 1;
vnemera 0:6ef3fd4921d7 334 }
vnemera 0:6ef3fd4921d7 335 //Try to mount the SD card
vnemera 0:6ef3fd4921d7 336 //pc.printf("\nMounting SD card..."); //%u", aaa);
vnemera 0:6ef3fd4921d7 337 if (sd.mount() != 0) {
vnemera 0:6ef3fd4921d7 338 pc.printf("failed mount SD!\n");
vnemera 0:6ef3fd4921d7 339 return 2;
vnemera 0:6ef3fd4921d7 340 }
vnemera 0:6ef3fd4921d7 341 //pc.printf("success!\n");
vnemera 0:6ef3fd4921d7 342 return 0;
vnemera 0:6ef3fd4921d7 343 }
vnemera 0:6ef3fd4921d7 344
vnemera 0:6ef3fd4921d7 345
vnemera 0:6ef3fd4921d7 346 void disconnectSD(void) {
vnemera 0:6ef3fd4921d7 347 sd.unmount();
vnemera 0:6ef3fd4921d7 348 }
vnemera 0:6ef3fd4921d7 349
vnemera 0:6ef3fd4921d7 350 void infoSD(void)
vnemera 0:6ef3fd4921d7 351 {
vnemera 0:6ef3fd4921d7 352 //Display the card type
vnemera 0:6ef3fd4921d7 353 pc.printf("\tCard type: ");
vnemera 0:6ef3fd4921d7 354 SDFileSystem::CardType cardType = sd.card_type();
vnemera 0:6ef3fd4921d7 355 if (cardType == SDFileSystem::CARD_NONE)
vnemera 0:6ef3fd4921d7 356 pc.printf("None\n");
vnemera 0:6ef3fd4921d7 357 else if (cardType == SDFileSystem::CARD_MMC)
vnemera 0:6ef3fd4921d7 358 pc.printf("MMC\n");
vnemera 0:6ef3fd4921d7 359 else if (cardType == SDFileSystem::CARD_SD)
vnemera 0:6ef3fd4921d7 360 pc.printf("SD\n");
vnemera 0:6ef3fd4921d7 361 else if (cardType == SDFileSystem::CARD_SDHC)
vnemera 0:6ef3fd4921d7 362 pc.printf("SDHC\n");
vnemera 0:6ef3fd4921d7 363 else
vnemera 0:6ef3fd4921d7 364 pc.printf("Unknown\n");
vnemera 0:6ef3fd4921d7 365 //Display the card capacity
vnemera 0:6ef3fd4921d7 366 pc.printf("\tSectors: %u\n", sd.disk_sectors());
vnemera 0:6ef3fd4921d7 367 pc.printf("\tCapacity: %.1fMB\n", sd.disk_sectors() / 2048.0);
vnemera 0:6ef3fd4921d7 368 }
vnemera 0:6ef3fd4921d7 369
vnemera 0:6ef3fd4921d7 370 bool readDirSD(char *pDr)
vnemera 0:6ef3fd4921d7 371 {
vnemera 0:6ef3fd4921d7 372 bool result = true;
vnemera 0:6ef3fd4921d7 373 DIR *dir;
vnemera 0:6ef3fd4921d7 374 struct dirent *ent;
vnemera 0:6ef3fd4921d7 375 //pc.printf("D- %i\n", pDr);
vnemera 0:6ef3fd4921d7 376 if ((dir = sd.opendir (pDr)) != NULL) {
vnemera 0:6ef3fd4921d7 377 // print all the files and directories within directory
vnemera 0:6ef3fd4921d7 378 while ((ent = readdir (dir)) != NULL) {
vnemera 0:6ef3fd4921d7 379 pc.printf("%s\r\n", ent->d_name);
vnemera 0:6ef3fd4921d7 380 }
vnemera 0:6ef3fd4921d7 381 closedir (dir);
vnemera 0:6ef3fd4921d7 382 } else {
vnemera 0:6ef3fd4921d7 383 // could not open directory
vnemera 0:6ef3fd4921d7 384 pc.printf("Could not open directory");
vnemera 0:6ef3fd4921d7 385 result = false;
vnemera 0:6ef3fd4921d7 386 }
vnemera 0:6ef3fd4921d7 387 return !result;
vnemera 0:6ef3fd4921d7 388 }
vnemera 0:6ef3fd4921d7 389
vnemera 0:6ef3fd4921d7 390 char dirName[40][40];
vnemera 0:6ef3fd4921d7 391 int indName = 0;
vnemera 0:6ef3fd4921d7 392 string dirS;
vnemera 0:6ef3fd4921d7 393
vnemera 0:6ef3fd4921d7 394 bool readDirHmiSD(char *pDr)
vnemera 0:6ef3fd4921d7 395 {
vnemera 0:6ef3fd4921d7 396 bool result = true;
vnemera 0:6ef3fd4921d7 397 DIR *dir;
vnemera 0:6ef3fd4921d7 398 struct dirent *ent;
vnemera 0:6ef3fd4921d7 399 if ((dir = sd.opendir (pDr)) != NULL) {
vnemera 0:6ef3fd4921d7 400 dirS.assign(pDr);
vnemera 0:6ef3fd4921d7 401 // copy all the files and directories within directory
vnemera 0:6ef3fd4921d7 402 indName = 0;
vnemera 0:6ef3fd4921d7 403 while ((ent = readdir (dir)) != NULL) {
vnemera 0:6ef3fd4921d7 404 strcpy(dirName[indName++], ent->d_name);
vnemera 0:6ef3fd4921d7 405 }
vnemera 0:6ef3fd4921d7 406 closedir (dir);
vnemera 0:6ef3fd4921d7 407 } else {
vnemera 0:6ef3fd4921d7 408 // could not open directory
vnemera 0:6ef3fd4921d7 409 pc.printf("Could not open directory");
vnemera 0:6ef3fd4921d7 410 result = false;
vnemera 0:6ef3fd4921d7 411 }
vnemera 0:6ef3fd4921d7 412 return !result;
vnemera 0:6ef3fd4921d7 413 }
vnemera 0:6ef3fd4921d7 414 //ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
vnemera 0:6ef3fd4921d7 415 int bufferPar[128];
vnemera 0:6ef3fd4921d7 416
vnemera 0:6ef3fd4921d7 417 void saveBufferPar(void){
vnemera 0:6ef3fd4921d7 418 //clean bufferPar[]
vnemera 0:6ef3fd4921d7 419 for (int i = 0; i < 128; i++) {
vnemera 0:6ef3fd4921d7 420 bufferPar[i] = 0;
vnemera 0:6ef3fd4921d7 421 }
vnemera 0:6ef3fd4921d7 422 //save parameters in bufferPar
vnemera 0:6ef3fd4921d7 423 for (int i = 0; i < 8; i++) {
vnemera 0:6ef3fd4921d7 424 bufferPar[i*16] = prPar[i].wMode;
vnemera 0:6ef3fd4921d7 425 bufferPar[i*16+1] = prPar[i].LPbeg;
vnemera 0:6ef3fd4921d7 426 bufferPar[i*16+2] = prPar[i].LPend;
vnemera 0:6ef3fd4921d7 427 bufferPar[i*16+3] = prPar[i].Lmode;
vnemera 0:6ef3fd4921d7 428 bufferPar[i*16+4] = prPar[i].Lfreq;
vnemera 0:6ef3fd4921d7 429 bufferPar[i*16+5] = prPar[i].Lpulse;
vnemera 0:6ef3fd4921d7 430 bufferPar[i*16+6] = prPar[i].amplBeg;
vnemera 0:6ef3fd4921d7 431 bufferPar[i*16+7] = prPar[i].amplEnd;
vnemera 0:6ef3fd4921d7 432 bufferPar[i*16+8] = prPar[i].wFreq;
vnemera 0:6ef3fd4921d7 433 bufferPar[i*16+9] = prPar[i].wTime;
vnemera 0:6ef3fd4921d7 434 bufferPar[i*16+10] = prPar[i].amplNum;
vnemera 0:6ef3fd4921d7 435 }
vnemera 0:6ef3fd4921d7 436 //print bufferPar
vnemera 0:6ef3fd4921d7 437 // /*
vnemera 0:6ef3fd4921d7 438 for (int j = 0; j < 8; j++) {pc.printf("%i ",bufferPar[j * 16]);}
vnemera 0:6ef3fd4921d7 439 pc.printf("wMode\n");
vnemera 0:6ef3fd4921d7 440 for (int j = 0; j < 8; j++) {pc.printf("%i ",bufferPar[j * 16+1]);}
vnemera 0:6ef3fd4921d7 441 pc.printf("LPbeg\n");
vnemera 0:6ef3fd4921d7 442 for (int j = 0; j < 8; j++) {pc.printf("%i ",bufferPar[j * 16+2]);}
vnemera 0:6ef3fd4921d7 443 pc.printf("LPend\n");
vnemera 0:6ef3fd4921d7 444 for (int j = 0; j < 8; j++) {pc.printf("%i ",bufferPar[j * 16+3]);}
vnemera 0:6ef3fd4921d7 445 pc.printf("Lmode\n");
vnemera 0:6ef3fd4921d7 446 for (int j = 0; j < 8; j++) {pc.printf("%i ",bufferPar[j * 16+4]);}
vnemera 0:6ef3fd4921d7 447 pc.printf("Lfreq\n");
vnemera 0:6ef3fd4921d7 448 for (int j = 0; j < 8; j++) {pc.printf("%i ",bufferPar[j * 16+5]);}
vnemera 0:6ef3fd4921d7 449 pc.printf("Lpulse\n");
vnemera 0:6ef3fd4921d7 450 for (int j = 0; j < 8; j++) {pc.printf("%i ",bufferPar[j * 16+6]);}
vnemera 0:6ef3fd4921d7 451 pc.printf("amplBeg\n");
vnemera 0:6ef3fd4921d7 452 for (int j = 0; j < 8; j++) {pc.printf("%i ",bufferPar[j * 16+7]);}
vnemera 0:6ef3fd4921d7 453 pc.printf("amplEnd\n");
vnemera 0:6ef3fd4921d7 454 for (int j = 0; j < 8; j++) {pc.printf("%i ",bufferPar[j * 16+8]);}
vnemera 0:6ef3fd4921d7 455 pc.printf("wFreq\n");
vnemera 0:6ef3fd4921d7 456 for (int j = 0; j < 8; j++) {pc.printf("%i ",bufferPar[j * 16+9]);}
vnemera 0:6ef3fd4921d7 457 pc.printf("wTime\n");
vnemera 0:6ef3fd4921d7 458 for (int j = 0; j < 8; j++) {pc.printf("%i ",bufferPar[j * 16+10]);}
vnemera 0:6ef3fd4921d7 459 pc.printf("amplNum\n");
vnemera 0:6ef3fd4921d7 460 for (int j = 0; j < 8; j++) {pc.printf("%i ",bufferPar[j * 16+11]);}
vnemera 0:6ef3fd4921d7 461 pc.printf("\n");
vnemera 0:6ef3fd4921d7 462 // */
vnemera 0:6ef3fd4921d7 463 }
vnemera 0:6ef3fd4921d7 464
vnemera 0:6ef3fd4921d7 465 void readBufferPar(void){
vnemera 0:6ef3fd4921d7 466 //save parameters in prPar
vnemera 0:6ef3fd4921d7 467 for (int i = 0; i < 8; i++) {
vnemera 0:6ef3fd4921d7 468 if(bufferPar[i*16] < 0) bufferPar[i*16] = 0;
vnemera 0:6ef3fd4921d7 469 if(bufferPar[i*16] > 2) bufferPar[i*16] = 2;
vnemera 0:6ef3fd4921d7 470 prPar[i].wMode = bufferPar[i*16];
vnemera 0:6ef3fd4921d7 471 if(bufferPar[i*16+1] < miMa[0].min) bufferPar[i*16+1] = miMa[0].min;
vnemera 0:6ef3fd4921d7 472 if(bufferPar[i*16+1] > miMa[0].max) bufferPar[i*16+1] = miMa[0].max;
vnemera 0:6ef3fd4921d7 473 prPar[i].LPbeg = bufferPar[i*16+1];
vnemera 0:6ef3fd4921d7 474 if(bufferPar[i*16+2] < miMa[1].min) bufferPar[i*16+2] = miMa[1].min;
vnemera 0:6ef3fd4921d7 475 if(bufferPar[i*16+2] > miMa[1].max) bufferPar[i*16+2] = miMa[1].max;
vnemera 0:6ef3fd4921d7 476 prPar[i].LPend = bufferPar[i*16+2];
vnemera 0:6ef3fd4921d7 477 if(bufferPar[i*16+3] < miMa[2].min) bufferPar[i*16+3] = miMa[2].min;
vnemera 0:6ef3fd4921d7 478 if(bufferPar[i*16+3] > miMa[2].max) bufferPar[i*16+3] = miMa[2].max;
vnemera 0:6ef3fd4921d7 479 prPar[i].Lmode = bufferPar[i*16+3];
vnemera 0:6ef3fd4921d7 480 if(bufferPar[i*16+4] < miMa[3].min) bufferPar[i*16+4] = miMa[3].min;
vnemera 0:6ef3fd4921d7 481 if(bufferPar[i*16+4] > miMa[3].max) bufferPar[i*16+4] = miMa[3].max;
vnemera 0:6ef3fd4921d7 482 prPar[i].Lfreq = bufferPar[i*16+4];
vnemera 0:6ef3fd4921d7 483 if(bufferPar[i*16+5] < miMa[4].min) bufferPar[i*16+5] = miMa[4].min;
vnemera 0:6ef3fd4921d7 484 if(bufferPar[i*16+5] > miMa[4].max) bufferPar[i*16+5] = miMa[4].max;
vnemera 0:6ef3fd4921d7 485 prPar[i].Lpulse = bufferPar[i*16+5];
vnemera 0:6ef3fd4921d7 486 if(bufferPar[i*16+6] < miMa[5].min) bufferPar[i*16+6] = miMa[5].min;
vnemera 0:6ef3fd4921d7 487 if(bufferPar[i*16+6] > miMa[5].max) bufferPar[i*16+6] = miMa[5].max;
vnemera 0:6ef3fd4921d7 488 prPar[i].amplBeg = bufferPar[i*16+6];
vnemera 0:6ef3fd4921d7 489 if(bufferPar[i*16+7] < miMa[6].min) bufferPar[i*16+7] = miMa[6].min;
vnemera 0:6ef3fd4921d7 490 if(bufferPar[i*16+7] > miMa[6].max) bufferPar[i*16+7] = miMa[6].max;
vnemera 0:6ef3fd4921d7 491 prPar[i].amplEnd = bufferPar[i*16+7];
vnemera 0:6ef3fd4921d7 492 if(bufferPar[i*16+8] < miMa[7].min) bufferPar[i*16+8] = miMa[7].min;
vnemera 0:6ef3fd4921d7 493 if(bufferPar[i*16+8] > miMa[7].max) bufferPar[i*16+8] = miMa[7].max;
vnemera 0:6ef3fd4921d7 494 prPar[i].wFreq = bufferPar[i*16+8];
vnemera 0:6ef3fd4921d7 495 if(bufferPar[i*16+9] < miMa[8].min) bufferPar[i*16+9] = miMa[8].min;
vnemera 0:6ef3fd4921d7 496 if(bufferPar[i*16+9] > miMa[8].max) bufferPar[i*16+9] = miMa[8].max;
vnemera 0:6ef3fd4921d7 497 prPar[i].wTime = bufferPar[i*16+9];
vnemera 0:6ef3fd4921d7 498 if(bufferPar[i*16+10] < miMa[9].min) bufferPar[i*16+10] = miMa[9].min;
vnemera 0:6ef3fd4921d7 499 if(bufferPar[i*16+10] > miMa[9].max) bufferPar[i*16+10] = miMa[9].max;
vnemera 0:6ef3fd4921d7 500 prPar[i].amplNum = bufferPar[i*16+10];
vnemera 0:6ef3fd4921d7 501 }
vnemera 0:6ef3fd4921d7 502 //print prPar
vnemera 0:6ef3fd4921d7 503 // /*
vnemera 0:6ef3fd4921d7 504 for (int j = 0; j < 8; j++) {pc.printf("%i ",prPar[j].wMode);}
vnemera 0:6ef3fd4921d7 505 pc.printf("wMode\n");
vnemera 0:6ef3fd4921d7 506 for (int j = 0; j < 8; j++) {pc.printf("%i ",prPar[j].LPbeg);}
vnemera 0:6ef3fd4921d7 507 pc.printf("LPbeg\n");
vnemera 0:6ef3fd4921d7 508 for (int j = 0; j < 8; j++) {pc.printf("%i ",prPar[j].LPend);}
vnemera 0:6ef3fd4921d7 509 pc.printf("LPend\n");
vnemera 0:6ef3fd4921d7 510 for (int j = 0; j < 8; j++) {pc.printf("%i ",prPar[j].Lmode);}
vnemera 0:6ef3fd4921d7 511 pc.printf("Lmode\n");
vnemera 0:6ef3fd4921d7 512 for (int j = 0; j < 8; j++) {pc.printf("%i ",prPar[j].Lfreq);}
vnemera 0:6ef3fd4921d7 513 pc.printf("Lfreq\n");
vnemera 0:6ef3fd4921d7 514 for (int j = 0; j < 8; j++) {pc.printf("%i ",prPar[j].Lpulse);}
vnemera 0:6ef3fd4921d7 515 pc.printf("Lpulse\n");
vnemera 0:6ef3fd4921d7 516 for (int j = 0; j < 8; j++) {pc.printf("%i ",prPar[j].amplBeg);}
vnemera 0:6ef3fd4921d7 517 pc.printf("amplBeg\n");
vnemera 0:6ef3fd4921d7 518 for (int j = 0; j < 8; j++) {pc.printf("%i ",prPar[j].amplEnd);}
vnemera 0:6ef3fd4921d7 519 pc.printf("amplEnd\n");
vnemera 0:6ef3fd4921d7 520 for (int j = 0; j < 8; j++) {pc.printf("%i ",prPar[j].wFreq);}
vnemera 0:6ef3fd4921d7 521 pc.printf("wFreq\n");
vnemera 0:6ef3fd4921d7 522 for (int j = 0; j < 8; j++) {pc.printf("%i ",prPar[j].wTime);}
vnemera 0:6ef3fd4921d7 523 pc.printf("wTime\n");
vnemera 0:6ef3fd4921d7 524 for (int j = 0; j < 8; j++) {pc.printf("%i ",prPar[j].amplNum);}
vnemera 0:6ef3fd4921d7 525 pc.printf("amplNum\n");
vnemera 0:6ef3fd4921d7 526 // */
vnemera 0:6ef3fd4921d7 527 }
vnemera 0:6ef3fd4921d7 528
vnemera 0:6ef3fd4921d7 529 char fileN[20];
vnemera 0:6ef3fd4921d7 530 int errOK;
vnemera 0:6ef3fd4921d7 531
vnemera 0:6ef3fd4921d7 532 int wrFile(char *fName)
vnemera 0:6ef3fd4921d7 533 {
vnemera 0:6ef3fd4921d7 534 errOK = connectSD();
vnemera 0:6ef3fd4921d7 535 if(errOK == 0) {
vnemera 0:6ef3fd4921d7 536 FileHandle* file = sd.open(fName, O_WRONLY | O_CREAT | O_TRUNC);
vnemera 0:6ef3fd4921d7 537 if (file != NULL) {
vnemera 0:6ef3fd4921d7 538 if (file->write(bufferPar, sizeof(bufferPar)) != sizeof(bufferPar)) {
vnemera 0:6ef3fd4921d7 539 pc.printf("write error!\n");
vnemera 0:6ef3fd4921d7 540 errOK = 1;
vnemera 0:6ef3fd4921d7 541 }
vnemera 0:6ef3fd4921d7 542 if (file->close()) {
vnemera 0:6ef3fd4921d7 543 pc.printf("failed to close file!\n");
vnemera 0:6ef3fd4921d7 544 errOK = 2;
vnemera 0:6ef3fd4921d7 545 }
vnemera 0:6ef3fd4921d7 546 else {
vnemera 0:6ef3fd4921d7 547 pc.printf("done!\n");
vnemera 0:6ef3fd4921d7 548 errOK = 0;
vnemera 0:6ef3fd4921d7 549 }
vnemera 0:6ef3fd4921d7 550 }
vnemera 0:6ef3fd4921d7 551 else {
vnemera 0:6ef3fd4921d7 552 printf("failed to create file!\n");
vnemera 0:6ef3fd4921d7 553 errOK = 3;
vnemera 0:6ef3fd4921d7 554 }
vnemera 0:6ef3fd4921d7 555 disconnectSD();
vnemera 0:6ef3fd4921d7 556 }
vnemera 0:6ef3fd4921d7 557 else {errOK = errOK + 4;}
vnemera 0:6ef3fd4921d7 558 return errOK;
vnemera 0:6ef3fd4921d7 559 }
vnemera 0:6ef3fd4921d7 560
vnemera 0:6ef3fd4921d7 561 int writeIniFile(void)
vnemera 0:6ef3fd4921d7 562 {
vnemera 0:6ef3fd4921d7 563 for (int i = 0; i < 128; i++) {bufferPar[i] = 0;} //clean bufferPar[]
vnemera 0:6ef3fd4921d7 564 bufferPar[0] = fileNum;
vnemera 0:6ef3fd4921d7 565 bufferPar[1] = progNumber;
vnemera 0:6ef3fd4921d7 566
vnemera 0:6ef3fd4921d7 567 sprintf(fileN, "p.ini");
vnemera 0:6ef3fd4921d7 568 pc.printf("%s\n", fileN);
vnemera 0:6ef3fd4921d7 569
vnemera 0:6ef3fd4921d7 570 int resp = wrFile(fileN);
vnemera 0:6ef3fd4921d7 571 return resp;
vnemera 0:6ef3fd4921d7 572 }
vnemera 0:6ef3fd4921d7 573
vnemera 0:6ef3fd4921d7 574 int writeParFile(int numP)
vnemera 0:6ef3fd4921d7 575 {
vnemera 0:6ef3fd4921d7 576 saveBufferPar();
vnemera 0:6ef3fd4921d7 577
vnemera 0:6ef3fd4921d7 578 sprintf(fileN, "p%i.par", numP);
vnemera 0:6ef3fd4921d7 579 pc.printf("%s\n", fileN);
vnemera 0:6ef3fd4921d7 580
vnemera 0:6ef3fd4921d7 581 int resp = wrFile(fileN);
vnemera 0:6ef3fd4921d7 582 if(resp == 0) {resp = writeIniFile();}
vnemera 0:6ef3fd4921d7 583 return resp;
vnemera 0:6ef3fd4921d7 584 }
vnemera 0:6ef3fd4921d7 585
vnemera 0:6ef3fd4921d7 586 int rdFile(char *fName)
vnemera 0:6ef3fd4921d7 587 {
vnemera 0:6ef3fd4921d7 588 errOK = connectSD();
vnemera 0:6ef3fd4921d7 589 if(errOK == 0) {
vnemera 0:6ef3fd4921d7 590 FileHandle* file = sd.open(fName, O_RDONLY);
vnemera 0:6ef3fd4921d7 591 if (file != NULL) {
vnemera 0:6ef3fd4921d7 592 file->read(bufferPar, sizeof(bufferPar));
vnemera 0:6ef3fd4921d7 593 if (file->close()) {
vnemera 0:6ef3fd4921d7 594 pc.printf("failed to close file!\n");
vnemera 0:6ef3fd4921d7 595 errOK = 2;
vnemera 0:6ef3fd4921d7 596 }
vnemera 0:6ef3fd4921d7 597 else {
vnemera 0:6ef3fd4921d7 598 pc.printf("done!\n");
vnemera 0:6ef3fd4921d7 599 errOK = 0;
vnemera 0:6ef3fd4921d7 600 }
vnemera 0:6ef3fd4921d7 601 }
vnemera 0:6ef3fd4921d7 602 else {
vnemera 0:6ef3fd4921d7 603 pc.printf("failed to open file!\n");
vnemera 0:6ef3fd4921d7 604 errOK = 4;
vnemera 0:6ef3fd4921d7 605 }
vnemera 0:6ef3fd4921d7 606 disconnectSD();
vnemera 0:6ef3fd4921d7 607 }
vnemera 0:6ef3fd4921d7 608 else {errOK = errOK + 4;}
vnemera 0:6ef3fd4921d7 609 return errOK;
vnemera 0:6ef3fd4921d7 610 }
vnemera 0:6ef3fd4921d7 611
vnemera 0:6ef3fd4921d7 612 int readParFile(int numP)
vnemera 0:6ef3fd4921d7 613 {
vnemera 0:6ef3fd4921d7 614 sprintf(fileN, "p%i.par", numP);
vnemera 0:6ef3fd4921d7 615 pc.printf("%s\n", fileN);
vnemera 0:6ef3fd4921d7 616
vnemera 0:6ef3fd4921d7 617 int resp = rdFile(fileN);
vnemera 0:6ef3fd4921d7 618 if(resp == 0) {
vnemera 0:6ef3fd4921d7 619 readBufferPar();
vnemera 0:6ef3fd4921d7 620 resp = writeIniFile();
vnemera 0:6ef3fd4921d7 621 }
vnemera 0:6ef3fd4921d7 622 return resp;
vnemera 0:6ef3fd4921d7 623 }
vnemera 0:6ef3fd4921d7 624
vnemera 0:6ef3fd4921d7 625 void readIniFile(void)
vnemera 0:6ef3fd4921d7 626 {
vnemera 0:6ef3fd4921d7 627 sprintf(fileN, "p.ini");
vnemera 0:6ef3fd4921d7 628 pc.printf("%s\n", fileN);
vnemera 0:6ef3fd4921d7 629
vnemera 0:6ef3fd4921d7 630 int resp = rdFile(fileN);
vnemera 0:6ef3fd4921d7 631 if(resp == 0) {
vnemera 0:6ef3fd4921d7 632 if(bufferPar[0] < miMa[10].min) bufferPar[0] = miMa[10].min;
vnemera 0:6ef3fd4921d7 633 if(bufferPar[0] > miMa[10].max) bufferPar[0] = miMa[10].max;
vnemera 0:6ef3fd4921d7 634 fileNum = bufferPar[0];
vnemera 0:6ef3fd4921d7 635 if(bufferPar[1] < 1) bufferPar[1] = 1;
vnemera 0:6ef3fd4921d7 636 if(bufferPar[1] > 8) bufferPar[1] = 8;
vnemera 0:6ef3fd4921d7 637 progNumber = bufferPar[1];
vnemera 0:6ef3fd4921d7 638 resp = readParFile(fileNum);
vnemera 0:6ef3fd4921d7 639 }
vnemera 0:6ef3fd4921d7 640 }
vnemera 0:6ef3fd4921d7 641 //ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
vnemera 0:6ef3fd4921d7 642
vnemera 0:6ef3fd4921d7 643 //---------------------------------------------
vnemera 0:6ef3fd4921d7 644 // When drawing a "fingerprint" under the touch point - the RA8875
vnemera 0:6ef3fd4921d7 645 // cannot draw an object partially off-screen, so this shrinks the
vnemera 0:6ef3fd4921d7 646 // fingerprint as the touch approaches the edge of the screen.
vnemera 0:6ef3fd4921d7 647 //
vnemera 0:6ef3fd4921d7 648 int ComputeRadius(point_t p)
vnemera 0:6ef3fd4921d7 649 {
vnemera 0:6ef3fd4921d7 650 int radius = DEF_RADIUS;
vnemera 0:6ef3fd4921d7 651
vnemera 0:6ef3fd4921d7 652 if (p.x < radius)
vnemera 0:6ef3fd4921d7 653 radius = p.x;
vnemera 0:6ef3fd4921d7 654 else if (LCD_W - p.x < radius)
vnemera 0:6ef3fd4921d7 655 radius = LCD_W - p.x;
vnemera 0:6ef3fd4921d7 656 if (p.y < radius)
vnemera 0:6ef3fd4921d7 657 radius = p.y;
vnemera 0:6ef3fd4921d7 658 else if (LCD_H - p.y < radius)
vnemera 0:6ef3fd4921d7 659 radius = LCD_H - p.y;
vnemera 0:6ef3fd4921d7 660 return radius;
vnemera 0:6ef3fd4921d7 661 }
vnemera 0:6ef3fd4921d7 662
vnemera 0:6ef3fd4921d7 663 // Calibrate the resistive touch screen, and store the data on the local file system.
vnemera 0:6ef3fd4921d7 664 void CalibrateTS(void)
vnemera 0:6ef3fd4921d7 665 {
vnemera 0:6ef3fd4921d7 666 tpMatrix_t matrix;
vnemera 0:6ef3fd4921d7 667 RetCode_t r;
vnemera 0:6ef3fd4921d7 668 Timer testperiod;
vnemera 0:6ef3fd4921d7 669
vnemera 0:6ef3fd4921d7 670 r = lcd.TouchPanelCalibrate("Calibrate the touch panel", &matrix);
vnemera 0:6ef3fd4921d7 671 if (r == noerror) {
vnemera 0:6ef3fd4921d7 672 if (connectSD() == 0) {
vnemera 0:6ef3fd4921d7 673 FileHandle* fh = sd.open("tpcal.cfg", O_WRONLY | O_CREAT | O_TRUNC);
vnemera 0:6ef3fd4921d7 674 if (fh) {
vnemera 0:6ef3fd4921d7 675 if (fh->write(&matrix, sizeof(tpMatrix_t)) != sizeof(tpMatrix_t))
vnemera 0:6ef3fd4921d7 676 {
vnemera 0:6ef3fd4921d7 677 pc.printf("write error!\n");
vnemera 0:6ef3fd4921d7 678 }
vnemera 0:6ef3fd4921d7 679 if (fh->close()) pc.printf("failed to close file!\n");
vnemera 0:6ef3fd4921d7 680 }
vnemera 0:6ef3fd4921d7 681 else printf("failed to create tpcal.cfg file!\n");
vnemera 0:6ef3fd4921d7 682 }
vnemera 0:6ef3fd4921d7 683 }
vnemera 0:6ef3fd4921d7 684 else printf("error TP Calibrate: %d\r\n", r);
vnemera 0:6ef3fd4921d7 685 disconnectSD();
vnemera 0:6ef3fd4921d7 686 pc.printf("TS ok\n");
vnemera 0:6ef3fd4921d7 687 lcd.cls();
vnemera 0:6ef3fd4921d7 688 }
vnemera 0:6ef3fd4921d7 689
vnemera 0:6ef3fd4921d7 690 // Try to load a previous resistive touch screen calibration from storage. If it
vnemera 0:6ef3fd4921d7 691 // doesn't exist, activate the touch screen calibration process.
vnemera 0:6ef3fd4921d7 692 void InitTS(void)
vnemera 0:6ef3fd4921d7 693 {
vnemera 0:6ef3fd4921d7 694 tpMatrix_t matrix;
vnemera 0:6ef3fd4921d7 695 if (connectSD() == 0) {
vnemera 0:6ef3fd4921d7 696 FileHandle* fh = sd.open("tpcal.cfg", O_RDONLY);
vnemera 0:6ef3fd4921d7 697 if (fh) {
vnemera 0:6ef3fd4921d7 698 if (fh->read(&matrix, sizeof(tpMatrix_t)) != sizeof(tpMatrix_t))
vnemera 0:6ef3fd4921d7 699 {
vnemera 0:6ef3fd4921d7 700 pc.printf("read error!\n");
vnemera 0:6ef3fd4921d7 701 //return;
vnemera 0:6ef3fd4921d7 702 if (fh->close()) pc.printf("failed to close file!\n");
vnemera 0:6ef3fd4921d7 703 }
vnemera 0:6ef3fd4921d7 704 else
vnemera 0:6ef3fd4921d7 705 {
vnemera 0:6ef3fd4921d7 706 lcd.TouchPanelSetMatrix(&matrix);
vnemera 0:6ef3fd4921d7 707 if (fh->close()) pc.printf("failed to close file!\n");
vnemera 0:6ef3fd4921d7 708 disconnectSD();
vnemera 0:6ef3fd4921d7 709 pc.printf("ok\n");
vnemera 0:6ef3fd4921d7 710 return;
vnemera 0:6ef3fd4921d7 711 }
vnemera 0:6ef3fd4921d7 712 }
vnemera 0:6ef3fd4921d7 713 else printf("failed to open tpcal.cfg file!\n");
vnemera 0:6ef3fd4921d7 714 }
vnemera 0:6ef3fd4921d7 715 disconnectSD();
vnemera 0:6ef3fd4921d7 716 CalibrateTS();
vnemera 0:6ef3fd4921d7 717 }
vnemera 0:6ef3fd4921d7 718
vnemera 0:6ef3fd4921d7 719 //-------------------------------------------------------
vnemera 0:6ef3fd4921d7 720 void lcd800x480Init(void)
vnemera 0:6ef3fd4921d7 721 {
vnemera 0:6ef3fd4921d7 722 lcd.init(LCD_W,LCD_H,LCD_C);
vnemera 0:6ef3fd4921d7 723 //lcd.init();
vnemera 0:6ef3fd4921d7 724 lcd.Backlight(0.5f);
vnemera 0:6ef3fd4921d7 725 //lcd.Backlight_u8(BL_NORM);
vnemera 0:6ef3fd4921d7 726
vnemera 0:6ef3fd4921d7 727 lcd.foreground(RGB(255,255,0));
vnemera 0:6ef3fd4921d7 728 lcd.background(RGB(0,0,0));
vnemera 0:6ef3fd4921d7 729
vnemera 0:6ef3fd4921d7 730 lcd.SelectUserFont(BPG_Arial08x08);
vnemera 0:6ef3fd4921d7 731 lcd.puts(300, 0, "www.ipgphotonics.com\r\n");
vnemera 0:6ef3fd4921d7 732
vnemera 0:6ef3fd4921d7 733 lcd.SelectUserFont(BPG_Arial31x32);
vnemera 0:6ef3fd4921d7 734
vnemera 0:6ef3fd4921d7 735 lastTP.x = 0;
vnemera 0:6ef3fd4921d7 736 lastTP.y = 0;
vnemera 0:6ef3fd4921d7 737 }
vnemera 0:6ef3fd4921d7 738
vnemera 0:6ef3fd4921d7 739 void showTPstatus(int k)
vnemera 0:6ef3fd4921d7 740 {
vnemera 0:6ef3fd4921d7 741 int i = numTPstatus;
vnemera 0:6ef3fd4921d7 742 lcd.fillroundrect(txtBoxR[i].x1, txtBoxR[i].y1, txtBoxR[i].x2, txtBoxR[i].y2, txtBoxR[i].r1, txtBoxR[i].r2, txtBoxR[i].color);
vnemera 0:6ef3fd4921d7 743 lcd.foreground(txtBoxR[i].textColor);
vnemera 0:6ef3fd4921d7 744 lcd.background(txtBoxR[i].color);
vnemera 0:6ef3fd4921d7 745
vnemera 0:6ef3fd4921d7 746 lcd.puts(txtBoxR[i].textX, txtBoxR[i].textY, " ");
vnemera 0:6ef3fd4921d7 747 lcd.puts(txtBoxR[i].textX, txtBoxR[i].textY, Stat[k]);
vnemera 0:6ef3fd4921d7 748 //pc.printf("q%i\n", k);
vnemera 0:6ef3fd4921d7 749 }
vnemera 0:6ef3fd4921d7 750
vnemera 0:6ef3fd4921d7 751 void showTPeditBtn(int k)
vnemera 0:6ef3fd4921d7 752 {
vnemera 0:6ef3fd4921d7 753 int i = numTPeditBtn;
vnemera 0:6ef3fd4921d7 754 lcd.fillroundrect(txtBoxR[i].x1, txtBoxR[i].y1, txtBoxR[i].x2, txtBoxR[i].y2, txtBoxR[i].r1, txtBoxR[i].r2, txtBoxR[i].color);
vnemera 0:6ef3fd4921d7 755 lcd.foreground(txtBoxR[i].textColor);
vnemera 0:6ef3fd4921d7 756 lcd.background(txtBoxR[i].color);
vnemera 0:6ef3fd4921d7 757
vnemera 0:6ef3fd4921d7 758 if(k == 0) {lcd.puts(txtBoxR[i].textX, txtBoxR[i].textY, " E D I T");}
vnemera 0:6ef3fd4921d7 759 else {lcd.puts(txtBoxR[i].textX, txtBoxR[i].textY, " S E T");}
vnemera 0:6ef3fd4921d7 760 }
vnemera 0:6ef3fd4921d7 761
vnemera 0:6ef3fd4921d7 762 void showTPmainBtn(void)
vnemera 0:6ef3fd4921d7 763 {
vnemera 0:6ef3fd4921d7 764 int i = numTPmainBtn;
vnemera 0:6ef3fd4921d7 765 lcd.fillroundrect(txtBoxR[i].x1, txtBoxR[i].y1, txtBoxR[i].x2, txtBoxR[i].y2, txtBoxR[i].r1, txtBoxR[i].r2, txtBoxR[i].color);
vnemera 0:6ef3fd4921d7 766 lcd.foreground(txtBoxR[i].textColor);
vnemera 0:6ef3fd4921d7 767 lcd.background(txtBoxR[i].color);
vnemera 0:6ef3fd4921d7 768
vnemera 0:6ef3fd4921d7 769 lcd.puts(txtBoxR[i].textX, txtBoxR[i].textY, " M A I N");
vnemera 0:6ef3fd4921d7 770 }
vnemera 0:6ef3fd4921d7 771
vnemera 0:6ef3fd4921d7 772 void showTPvalBtn(void)
vnemera 0:6ef3fd4921d7 773 {
vnemera 0:6ef3fd4921d7 774 int i = numTPvalBtn;
vnemera 0:6ef3fd4921d7 775 lcd.fillroundrect(txtBoxR[i].x1, txtBoxR[i].y1, txtBoxR[i].x2, txtBoxR[i].y2, txtBoxR[i].r1, txtBoxR[i].r2, txtBoxR[i].color);
vnemera 0:6ef3fd4921d7 776 lcd.foreground(txtBoxR[i].textColor);
vnemera 0:6ef3fd4921d7 777 lcd.background(txtBoxR[i].color);
vnemera 0:6ef3fd4921d7 778
vnemera 0:6ef3fd4921d7 779 lcd.puts(txtBoxR[i].textX, txtBoxR[i].textY, " VALUES");
vnemera 0:6ef3fd4921d7 780 }
vnemera 0:6ef3fd4921d7 781
vnemera 0:6ef3fd4921d7 782 void showTPservBtn(void)
vnemera 0:6ef3fd4921d7 783 {
vnemera 0:6ef3fd4921d7 784 int i = numTPservBtn;
vnemera 0:6ef3fd4921d7 785 lcd.fillroundrect(txtBoxR[i].x1, txtBoxR[i].y1, txtBoxR[i].x2, txtBoxR[i].y2, txtBoxR[i].r1, txtBoxR[i].r2, txtBoxR[i].color);
vnemera 0:6ef3fd4921d7 786 lcd.foreground(txtBoxR[i].textColor);
vnemera 0:6ef3fd4921d7 787 lcd.background(txtBoxR[i].color);
vnemera 0:6ef3fd4921d7 788
vnemera 0:6ef3fd4921d7 789 lcd.puts(txtBoxR[i].textX, txtBoxR[i].textY, "SERVICE");
vnemera 0:6ef3fd4921d7 790 }
vnemera 0:6ef3fd4921d7 791
vnemera 0:6ef3fd4921d7 792 void showProgNum(int i)
vnemera 0:6ef3fd4921d7 793 {
vnemera 0:6ef3fd4921d7 794 //pc.printf("%i\n", i);
vnemera 0:6ef3fd4921d7 795 if((i >= 0) && (i < 8)) { //&& (i != progNumber) ) {
vnemera 0:6ef3fd4921d7 796 //pc.printf(":\n");
vnemera 0:6ef3fd4921d7 797 lcd.fillrect(txtBox[progNumber].x1, txtBox[progNumber].y1, txtBox[progNumber].x2, txtBox[progNumber].y2, txtBox[progNumber].color);
vnemera 0:6ef3fd4921d7 798 lcd.foreground(txtBox[progNumber].textColor);
vnemera 0:6ef3fd4921d7 799 lcd.background(txtBox[progNumber].color);
vnemera 0:6ef3fd4921d7 800 lcd.puts(txtBox[progNumber].textX, txtBox[progNumber].textY, txtBox[progNumber].text);
vnemera 0:6ef3fd4921d7 801
vnemera 0:6ef3fd4921d7 802 lcd.fillrect(txtBox[i].x1, txtBox[i].y1, txtBox[i].x2, txtBox[i].y2, Green);
vnemera 0:6ef3fd4921d7 803 lcd.foreground(txtBox[i].textColor);
vnemera 0:6ef3fd4921d7 804 lcd.background(Green);
vnemera 0:6ef3fd4921d7 805 lcd.puts(txtBox[i].textX, txtBox[i].textY, txtBox[i].text);
vnemera 0:6ef3fd4921d7 806 progNumber = i;
vnemera 0:6ef3fd4921d7 807 }
vnemera 0:6ef3fd4921d7 808 }
vnemera 0:6ef3fd4921d7 809
vnemera 0:6ef3fd4921d7 810 void showWobMode(int i)
vnemera 0:6ef3fd4921d7 811 {
vnemera 0:6ef3fd4921d7 812 if((i >= 0) && (i < 3)) {
vnemera 0:6ef3fd4921d7 813 //pc.printf(";\n");
vnemera 0:6ef3fd4921d7 814 int k;
vnemera 0:6ef3fd4921d7 815 k = wobbleMode + 8;
vnemera 0:6ef3fd4921d7 816 lcd.fillrect(txtBox[k].x1, txtBox[k].y1, txtBox[k].x2, txtBox[k].y2, txtBox[k].color);
vnemera 0:6ef3fd4921d7 817 lcd.foreground(txtBox[k].textColor);
vnemera 0:6ef3fd4921d7 818 lcd.background(txtBox[k].color);
vnemera 0:6ef3fd4921d7 819 lcd.puts(txtBox[k].textX, txtBox[k].textY, txtBox[k].text);
vnemera 0:6ef3fd4921d7 820 k = i + 8;
vnemera 0:6ef3fd4921d7 821 lcd.fillrect(txtBox[k].x1, txtBox[k].y1, txtBox[k].x2, txtBox[k].y2, Green);
vnemera 0:6ef3fd4921d7 822 lcd.foreground(txtBox[k].textColor);
vnemera 0:6ef3fd4921d7 823 lcd.background(Green);
vnemera 0:6ef3fd4921d7 824 lcd.puts(txtBox[k].textX, txtBox[k].textY, txtBox[k].text);
vnemera 0:6ef3fd4921d7 825 wobbleMode = i;
vnemera 0:6ef3fd4921d7 826 }
vnemera 0:6ef3fd4921d7 827 }
vnemera 0:6ef3fd4921d7 828
vnemera 0:6ef3fd4921d7 829 void showWobParam(int i)
vnemera 0:6ef3fd4921d7 830 {
vnemera 0:6ef3fd4921d7 831 showWobMode(i);
vnemera 0:6ef3fd4921d7 832 prPar[progNumber].wMode = i;
vnemera 0:6ef3fd4921d7 833 }
vnemera 0:6ef3fd4921d7 834
vnemera 0:6ef3fd4921d7 835 void showProgParam(int k)
vnemera 0:6ef3fd4921d7 836 {
vnemera 0:6ef3fd4921d7 837 showProgNum(k);
vnemera 0:6ef3fd4921d7 838 //fill round text boxes (TextBoxR)
vnemera 0:6ef3fd4921d7 839 showWobMode(prPar[progNumber].wMode);
vnemera 0:6ef3fd4921d7 840 for(int i = 0; i < numPrPar; i++) {
vnemera 0:6ef3fd4921d7 841 lcd.fillroundrect(txtBoxR[i].x1, txtBoxR[i].y1, txtBoxR[i].x2, txtBoxR[i].y2, txtBoxR[i].r1, txtBoxR[i].r2, txtBoxR[i].color);
vnemera 0:6ef3fd4921d7 842 lcd.foreground(txtBoxR[i].textColor);
vnemera 0:6ef3fd4921d7 843 lcd.background(txtBoxR[i].color);
vnemera 0:6ef3fd4921d7 844 if (i == 2) {
vnemera 0:6ef3fd4921d7 845 if(prPar[progNumber].Lmode == 0) {
vnemera 0:6ef3fd4921d7 846 lcd.puts(txtBoxR[i].textX, txtBoxR[i].textY, "CW");
vnemera 0:6ef3fd4921d7 847 if(Lmode == 1) {
vnemera 0:6ef3fd4921d7 848 Lmode = 0;
vnemera 0:6ef3fd4921d7 849 if(SetLasComm(33) == 1) {TPstatus = 5;} //DPM -disable pulse mode
vnemera 0:6ef3fd4921d7 850 else {
vnemera 0:6ef3fd4921d7 851 if(SetLasComm( 1) == 1) {TPstatus = 5;} //STA -read laser status
vnemera 0:6ef3fd4921d7 852 else TPstatus = 0;
vnemera 0:6ef3fd4921d7 853 }
vnemera 0:6ef3fd4921d7 854 }
vnemera 0:6ef3fd4921d7 855 }
vnemera 0:6ef3fd4921d7 856 else if(prPar[progNumber].Lmode == 1) {
vnemera 0:6ef3fd4921d7 857 lcd.puts(txtBoxR[i].textX, txtBoxR[i].textY, "PULSE");
vnemera 0:6ef3fd4921d7 858 if(Lmode == 0) {
vnemera 0:6ef3fd4921d7 859 Lmode = 1;
vnemera 0:6ef3fd4921d7 860 if(SetLasComm(32) == 1) {TPstatus = 5;} //EPM -enable pulse mode
vnemera 0:6ef3fd4921d7 861 else {
vnemera 0:6ef3fd4921d7 862 if(SetLasComm( 1) == 1) {TPstatus = 5;} //STA -read laser status
vnemera 0:6ef3fd4921d7 863 else TPstatus = 0;
vnemera 0:6ef3fd4921d7 864 }
vnemera 0:6ef3fd4921d7 865 }
vnemera 0:6ef3fd4921d7 866 }
vnemera 0:6ef3fd4921d7 867 }
vnemera 0:6ef3fd4921d7 868 else {
vnemera 0:6ef3fd4921d7 869 switch (i) {
vnemera 0:6ef3fd4921d7 870 case 0: {sprintf(txtBoxR[0].text, "%i", prPar[progNumber].LPbeg); break;}
vnemera 0:6ef3fd4921d7 871 case 1: {sprintf(txtBoxR[1].text, "%i", prPar[progNumber].LPend); break;}
vnemera 0:6ef3fd4921d7 872 case 3: {sprintf(txtBoxR[3].text, "%i", prPar[progNumber].Lfreq); break;}
vnemera 0:6ef3fd4921d7 873 case 4: {sprintf(txtBoxR[4].text, "%i", prPar[progNumber].Lpulse); break;}
vnemera 0:6ef3fd4921d7 874 case 5: {sprintf(txtBoxR[5].text, "%i", prPar[progNumber].amplBeg); break;}
vnemera 0:6ef3fd4921d7 875 case 6: {sprintf(txtBoxR[6].text, "%i", prPar[progNumber].amplEnd); break;}
vnemera 0:6ef3fd4921d7 876 case 7: {sprintf(txtBoxR[7].text, "%i", prPar[progNumber].wFreq); break;}
vnemera 0:6ef3fd4921d7 877 case 8: {sprintf(txtBoxR[8].text, "%i", prPar[progNumber].wTime); break;}
vnemera 0:6ef3fd4921d7 878 case 9: {sprintf(txtBoxR[9].text, "%i", prPar[progNumber].amplNum); break;}
vnemera 0:6ef3fd4921d7 879 }
vnemera 0:6ef3fd4921d7 880 lcd.puts(txtBoxR[i].textX, txtBoxR[i].textY, txtBoxR[i].text);
vnemera 0:6ef3fd4921d7 881 }
vnemera 0:6ef3fd4921d7 882 }
vnemera 0:6ef3fd4921d7 883 }
vnemera 0:6ef3fd4921d7 884
vnemera 0:6ef3fd4921d7 885 void lcd800x480main(int a)
vnemera 0:6ef3fd4921d7 886 {
vnemera 0:6ef3fd4921d7 887 lcd.roundrect( 2,10, 798,478, 10,8, Yellow); //full screen
vnemera 0:6ef3fd4921d7 888 lcd.fillroundrect(3,11, 797,477, 8,6, Black); //do full screen black
vnemera 0:6ef3fd4921d7 889 lcd.roundrect( 620,360, 780,460, 10,8, Yellow); //around btn edit
vnemera 0:6ef3fd4921d7 890 lcd.roundrect( 620,248, 780,348, 10,8, Yellow); //around btn service
vnemera 0:6ef3fd4921d7 891 lcd.roundrect( 5,62, 615,405, 10,8, Yellow); //picture screen
vnemera 0:6ef3fd4921d7 892
vnemera 0:6ef3fd4921d7 893 lcd.foreground(Yellow);
vnemera 0:6ef3fd4921d7 894 lcd.background(Black);
vnemera 0:6ef3fd4921d7 895 lcd.puts(100, 20, "Program #");
vnemera 0:6ef3fd4921d7 896 lcd.puts(20, 415, "STATUS:");
vnemera 0:6ef3fd4921d7 897
vnemera 0:6ef3fd4921d7 898 //fill text boxes (TextBox)
vnemera 0:6ef3fd4921d7 899 for(int i = 0; i < 8; i++) {
vnemera 0:6ef3fd4921d7 900 lcd.fillrect(txtBox[i].x1, txtBox[i].y1, txtBox[i].x2, txtBox[i].y2, txtBox[i].color);
vnemera 0:6ef3fd4921d7 901 lcd.foreground(txtBox[i].textColor);
vnemera 0:6ef3fd4921d7 902 lcd.background(txtBox[i].color);
vnemera 0:6ef3fd4921d7 903 lcd.puts(txtBox[i].textX, txtBox[i].textY, txtBox[i].text);
vnemera 0:6ef3fd4921d7 904 }
vnemera 0:6ef3fd4921d7 905 showProgNum(a);
vnemera 0:6ef3fd4921d7 906 //fill round text boxes (TextBoxR)
vnemera 0:6ef3fd4921d7 907
vnemera 0:6ef3fd4921d7 908 }
vnemera 0:6ef3fd4921d7 909
vnemera 0:6ef3fd4921d7 910 void lcd800x480val(int a)
vnemera 0:6ef3fd4921d7 911 {
vnemera 0:6ef3fd4921d7 912 lcd.roundrect( 2,10, 798,478, 10,8, Yellow); //full screen
vnemera 0:6ef3fd4921d7 913 lcd.fillroundrect(3,11, 797,477, 8,6, Black); //do full screen black
vnemera 0:6ef3fd4921d7 914 lcd.roundrect( 620,360, 780,460, 10,8, Yellow); //around btn edit
vnemera 0:6ef3fd4921d7 915 lcd.roundrect( 620,248, 780,348, 10,8, Yellow); //around btn service
vnemera 0:6ef3fd4921d7 916
vnemera 0:6ef3fd4921d7 917 lcd.foreground(Yellow);
vnemera 0:6ef3fd4921d7 918 lcd.background(Black);
vnemera 0:6ef3fd4921d7 919 lcd.puts(10, 20, "Program #");
vnemera 0:6ef3fd4921d7 920 lcd.puts(10, 75, "Wobble mode");
vnemera 0:6ef3fd4921d7 921 lcd.puts(10, 130, "Laser power [%] beg");
vnemera 0:6ef3fd4921d7 922 lcd.puts(390, 130, " end");
vnemera 0:6ef3fd4921d7 923 lcd.puts(570, 130, "mode");
vnemera 0:6ef3fd4921d7 924 lcd.puts(10, 185, "Laser freq.[Hz]");
vnemera 0:6ef3fd4921d7 925 lcd.puts(390, 185, "Pulse");
vnemera 0:6ef3fd4921d7 926 lcd.puts(575, 185, "[%]");
vnemera 0:6ef3fd4921d7 927 lcd.puts(10, 240, "Size [0.1mm] beg.");
vnemera 0:6ef3fd4921d7 928 lcd.puts(390, 240, " end");
vnemera 0:6ef3fd4921d7 929 lcd.puts(10, 295, "Wobble freq.[Hz]");
vnemera 0:6ef3fd4921d7 930 lcd.puts(10, 350, "Welding time [mS]");
vnemera 0:6ef3fd4921d7 931 lcd.puts(390, 350, "Steps");
vnemera 0:6ef3fd4921d7 932 lcd.puts(20, 415, "STATUS:");
vnemera 0:6ef3fd4921d7 933
vnemera 0:6ef3fd4921d7 934 //fill text boxes (TextBox)
vnemera 0:6ef3fd4921d7 935 for(int i = 0; i < TextBoxSize; i++) {
vnemera 0:6ef3fd4921d7 936 lcd.fillrect(txtBox[i].x1, txtBox[i].y1, txtBox[i].x2, txtBox[i].y2, txtBox[i].color);
vnemera 0:6ef3fd4921d7 937 lcd.foreground(txtBox[i].textColor);
vnemera 0:6ef3fd4921d7 938 lcd.background(txtBox[i].color);
vnemera 0:6ef3fd4921d7 939 lcd.puts(txtBox[i].textX, txtBox[i].textY, txtBox[i].text);
vnemera 0:6ef3fd4921d7 940 }
vnemera 0:6ef3fd4921d7 941 //fill round text boxes (TextBoxR)
vnemera 0:6ef3fd4921d7 942 showProgParam(a);
vnemera 0:6ef3fd4921d7 943 }
vnemera 0:6ef3fd4921d7 944
vnemera 0:6ef3fd4921d7 945 void lcd800x480NP(int k)
vnemera 0:6ef3fd4921d7 946 {
vnemera 0:6ef3fd4921d7 947 lcd.roundrect( 285,65, 781,460, 10,8, Yellow);
vnemera 0:6ef3fd4921d7 948 lcd.fillroundrect(288,68, 776,455, 5,3, Black);
vnemera 0:6ef3fd4921d7 949
vnemera 0:6ef3fd4921d7 950 lcd.foreground(Yellow);
vnemera 0:6ef3fd4921d7 951 lcd.background(Black);
vnemera 0:6ef3fd4921d7 952 lcd.puts(300, 75, Labels[k]);
vnemera 0:6ef3fd4921d7 953
vnemera 0:6ef3fd4921d7 954 //fill text boxes (TextBox)
vnemera 0:6ef3fd4921d7 955 for(int i = 0; i < TextBoxNPSize; i++) {
vnemera 0:6ef3fd4921d7 956 lcd.fillrect(txtBoxNP[i].x1, txtBoxNP[i].y1, txtBoxNP[i].x2, txtBoxNP[i].y2, txtBoxNP[i].color);
vnemera 0:6ef3fd4921d7 957 lcd.foreground(txtBoxNP[i].textColor);
vnemera 0:6ef3fd4921d7 958 lcd.background(txtBoxNP[i].color);
vnemera 0:6ef3fd4921d7 959 lcd.puts(txtBoxNP[i].textX, txtBoxNP[i].textY, txtBoxNP[i].text);
vnemera 0:6ef3fd4921d7 960 }
vnemera 0:6ef3fd4921d7 961 //fill round text box
vnemera 0:6ef3fd4921d7 962 lcd.fillroundrect(txtBNP.x1, txtBNP.y1, txtBNP.x2, txtBNP.y2, txtBNP.r1, txtBNP.r2, txtBNP.color);
vnemera 0:6ef3fd4921d7 963 lcd.foreground(txtBNP.textColor);
vnemera 0:6ef3fd4921d7 964 lcd.background(txtBNP.color);
vnemera 0:6ef3fd4921d7 965 *txtBNP.text = '\0';
vnemera 0:6ef3fd4921d7 966 lcd.puts(txtBNP.textX, txtBNP.textY, txtBNP.text);
vnemera 0:6ef3fd4921d7 967 }
vnemera 0:6ef3fd4921d7 968
vnemera 0:6ef3fd4921d7 969 void lcd800x480Serv(void)
vnemera 0:6ef3fd4921d7 970 {
vnemera 0:6ef3fd4921d7 971 lcd.roundrect( 2,10, 798,478, 10,8, Yellow); //full screen
vnemera 0:6ef3fd4921d7 972 lcd.fillroundrect(3,11, 797,477, 8,6, Black); //do full screen black
vnemera 0:6ef3fd4921d7 973 lcd.roundrect( 620,360, 780,460, 10,8, Yellow); //around main btn
vnemera 0:6ef3fd4921d7 974 lcd.roundrect( 620,20, 780,348, 10,8, Yellow); //around file btns
vnemera 0:6ef3fd4921d7 975 lcd.roundrect( 20,418, 600,460, 10,8, Yellow); //around status line
vnemera 0:6ef3fd4921d7 976
vnemera 0:6ef3fd4921d7 977 lcd.foreground(Yellow);
vnemera 0:6ef3fd4921d7 978 lcd.background(Black);
vnemera 0:6ef3fd4921d7 979 lcd.puts(623, 40, "File p#");
vnemera 0:6ef3fd4921d7 980
vnemera 0:6ef3fd4921d7 981 //fill round text box
vnemera 0:6ef3fd4921d7 982 int i;
vnemera 0:6ef3fd4921d7 983 i = txtRServSize-1;
vnemera 0:6ef3fd4921d7 984 sprintf(txtRServ[i].text, "%i", fileNum);
vnemera 0:6ef3fd4921d7 985 for(i = 0; i < txtRServSize; i++) {
vnemera 0:6ef3fd4921d7 986 lcd.fillroundrect(txtRServ[i].x1, txtRServ[i].y1, txtRServ[i].x2, txtRServ[i].y2, txtRServ[i].r1, txtRServ[i].r2, txtRServ[i].color);
vnemera 0:6ef3fd4921d7 987 lcd.foreground(txtRServ[i].textColor);
vnemera 0:6ef3fd4921d7 988 lcd.background(txtRServ[i].color);
vnemera 0:6ef3fd4921d7 989 lcd.puts(txtRServ[i].textX, txtRServ[i].textY, txtRServ[i].text);
vnemera 0:6ef3fd4921d7 990 }
vnemera 0:6ef3fd4921d7 991 }
vnemera 0:6ef3fd4921d7 992
vnemera 0:6ef3fd4921d7 993 void lcd800x480dirB(void)
vnemera 0:6ef3fd4921d7 994 {
vnemera 0:6ef3fd4921d7 995 lcd.fillrect(20, 15, 565, 405, Black);
vnemera 0:6ef3fd4921d7 996 }
vnemera 0:6ef3fd4921d7 997
vnemera 0:6ef3fd4921d7 998 void lcd800x480dir(char *pDr)
vnemera 0:6ef3fd4921d7 999 {
vnemera 0:6ef3fd4921d7 1000 int i;
vnemera 0:6ef3fd4921d7 1001
vnemera 0:6ef3fd4921d7 1002 lcd.fillrect(20, 15, 565, 405, Black); //clean area
vnemera 0:6ef3fd4921d7 1003 lcd.roundrect(20,15, 400,52, 10,8, Yellow); //around dir name
vnemera 0:6ef3fd4921d7 1004 lcd.roundrect(405,15, 565,405, 10,8, Yellow); //around buttons
vnemera 0:6ef3fd4921d7 1005
vnemera 0:6ef3fd4921d7 1006 lcd.foreground(Yellow);
vnemera 0:6ef3fd4921d7 1007 lcd.background(Black);
vnemera 0:6ef3fd4921d7 1008 lcd.puts(25, 19, rDr);
vnemera 0:6ef3fd4921d7 1009
vnemera 0:6ef3fd4921d7 1010 //fill round text box
vnemera 0:6ef3fd4921d7 1011 for(i = 0; i < txtRdirSize; i++) {
vnemera 0:6ef3fd4921d7 1012 lcd.fillroundrect(txtRdir[i].x1, txtRdir[i].y1, txtRdir[i].x2, txtRdir[i].y2, txtRdir[i].r1, txtRdir[i].r2, txtRdir[i].color);
vnemera 0:6ef3fd4921d7 1013 lcd.foreground(txtRdir[i].textColor);
vnemera 0:6ef3fd4921d7 1014 lcd.background(txtRdir[i].color);
vnemera 0:6ef3fd4921d7 1015 lcd.puts(txtRdir[i].textX, txtRdir[i].textY, txtRdir[i].text);
vnemera 0:6ef3fd4921d7 1016 }
vnemera 0:6ef3fd4921d7 1017 //fill text boxes (TextBox)
vnemera 0:6ef3fd4921d7 1018 for(i = 0; i < TextBoxDirSize; i++) {
vnemera 0:6ef3fd4921d7 1019 lcd.fillrect(txtBoxDir[i].x1, txtBoxDir[i].y1, txtBoxDir[i].x2, txtBoxDir[i].y2, txtBoxDir[i].color);
vnemera 0:6ef3fd4921d7 1020 lcd.foreground(txtBoxDir[i].textColor);
vnemera 0:6ef3fd4921d7 1021 lcd.background(txtBoxDir[i].color);
vnemera 0:6ef3fd4921d7 1022 //lcd.puts(txtBoxDir[i].textX, txtBoxDir[i].textY, txtBoxDir[i].text);
vnemera 0:6ef3fd4921d7 1023 }
vnemera 0:6ef3fd4921d7 1024 }
vnemera 0:6ef3fd4921d7 1025
vnemera 0:6ef3fd4921d7 1026 void showMain(int i) {
vnemera 0:6ef3fd4921d7 1027 lcd800x480main(i);
vnemera 0:6ef3fd4921d7 1028 showTPvalBtn();
vnemera 0:6ef3fd4921d7 1029 showTPservBtn();
vnemera 0:6ef3fd4921d7 1030 showTPstatus(TPstatus);
vnemera 0:6ef3fd4921d7 1031 LPscreen = 3;
vnemera 0:6ef3fd4921d7 1032 }
vnemera 0:6ef3fd4921d7 1033
vnemera 0:6ef3fd4921d7 1034 void showVal(int i) {
vnemera 0:6ef3fd4921d7 1035 lcd800x480val(i);
vnemera 0:6ef3fd4921d7 1036 showTPeditBtn(editBtnMode);
vnemera 0:6ef3fd4921d7 1037 showTPmainBtn();
vnemera 0:6ef3fd4921d7 1038 showTPstatus(TPstatus);
vnemera 0:6ef3fd4921d7 1039 }
vnemera 0:6ef3fd4921d7 1040
vnemera 0:6ef3fd4921d7 1041 void showNP(int i) {
vnemera 0:6ef3fd4921d7 1042 lcd800x480NP(i);
vnemera 0:6ef3fd4921d7 1043 }
vnemera 0:6ef3fd4921d7 1044
vnemera 0:6ef3fd4921d7 1045 void showService(void) {
vnemera 0:6ef3fd4921d7 1046 lcd800x480Serv();
vnemera 0:6ef3fd4921d7 1047 }
vnemera 0:6ef3fd4921d7 1048
vnemera 0:6ef3fd4921d7 1049 void statServErr(int stS) {
vnemera 0:6ef3fd4921d7 1050 lcd.foreground(Gray);
vnemera 0:6ef3fd4921d7 1051 lcd.background(Black);
vnemera 0:6ef3fd4921d7 1052 lcd.puts(30, 423, " ");
vnemera 0:6ef3fd4921d7 1053 lcd.puts(30, 423, Stat[stS]);
vnemera 0:6ef3fd4921d7 1054 }
vnemera 0:6ef3fd4921d7 1055
vnemera 0:6ef3fd4921d7 1056 void statServ(int stS) {
vnemera 0:6ef3fd4921d7 1057 lcd.foreground(Gray);
vnemera 0:6ef3fd4921d7 1058 lcd.background(Black);
vnemera 0:6ef3fd4921d7 1059 lcd.puts(30, 423, " ");
vnemera 0:6ef3fd4921d7 1060 lcd.puts(30, 423, fErr[stS]);
vnemera 0:6ef3fd4921d7 1061 }
vnemera 0:6ef3fd4921d7 1062
vnemera 0:6ef3fd4921d7 1063 void dirOpenHmi(char *pDr) {
vnemera 0:6ef3fd4921d7 1064 if(connectSD() == 0) {
vnemera 0:6ef3fd4921d7 1065 readDirHmiSD(pDr);
vnemera 0:6ef3fd4921d7 1066 }
vnemera 0:6ef3fd4921d7 1067 disconnectSD();
vnemera 0:6ef3fd4921d7 1068
vnemera 0:6ef3fd4921d7 1069 lcd800x480dir(rDr);
vnemera 0:6ef3fd4921d7 1070 if(indName > 9) {
vnemera 0:6ef3fd4921d7 1071 for(int i=0; i<9; i++) {
vnemera 0:6ef3fd4921d7 1072 lcd.puts(txtBoxDir[i].textX, txtBoxDir[i].textY, dirName[i]);
vnemera 0:6ef3fd4921d7 1073 }
vnemera 0:6ef3fd4921d7 1074 }
vnemera 0:6ef3fd4921d7 1075 else {
vnemera 0:6ef3fd4921d7 1076 for(int i=0; i<indName; i++) {
vnemera 0:6ef3fd4921d7 1077 lcd.puts(txtBoxDir[i].textX, txtBoxDir[i].textY, dirName[i]);
vnemera 0:6ef3fd4921d7 1078 }
vnemera 0:6ef3fd4921d7 1079 }
vnemera 0:6ef3fd4921d7 1080 for(int i=0; i<indName; i++) {
vnemera 0:6ef3fd4921d7 1081 pc.printf("%s\n", dirName[i]);
vnemera 0:6ef3fd4921d7 1082 }
vnemera 0:6ef3fd4921d7 1083 pc.printf(">>%i\n", indName);
vnemera 0:6ef3fd4921d7 1084 }
vnemera 0:6ef3fd4921d7 1085
vnemera 0:6ef3fd4921d7 1086 int flagDirOpen = 0;
vnemera 0:6ef3fd4921d7 1087
vnemera 0:6ef3fd4921d7 1088 void btnServ(int k) {
vnemera 0:6ef3fd4921d7 1089 int retSt;
vnemera 0:6ef3fd4921d7 1090 switch (k) {
vnemera 0:6ef3fd4921d7 1091 case 0: //btn main
vnemera 0:6ef3fd4921d7 1092 showMain(progNumber);
vnemera 0:6ef3fd4921d7 1093 LPscreen = 3; //main screen
vnemera 0:6ef3fd4921d7 1094 pc.printf("\n>");
vnemera 0:6ef3fd4921d7 1095 break;
vnemera 0:6ef3fd4921d7 1096 case 1: //btn save
vnemera 0:6ef3fd4921d7 1097 retSt = writeParFile(fileNum);
vnemera 0:6ef3fd4921d7 1098 statServ(retSt);
vnemera 0:6ef3fd4921d7 1099 pc.printf("\ns>%i ", retSt);
vnemera 0:6ef3fd4921d7 1100 break;
vnemera 0:6ef3fd4921d7 1101 case 2: //btn load
vnemera 0:6ef3fd4921d7 1102 retSt = readParFile(fileNum);
vnemera 0:6ef3fd4921d7 1103 statServ(retSt);
vnemera 0:6ef3fd4921d7 1104 pc.printf("\nl>%i ", retSt);
vnemera 0:6ef3fd4921d7 1105 flagParChanged = 0;
vnemera 0:6ef3fd4921d7 1106 break;
vnemera 0:6ef3fd4921d7 1107 case 3: //btn dir
vnemera 0:6ef3fd4921d7 1108 if(flagDirOpen ==0) {
vnemera 0:6ef3fd4921d7 1109 flagDirOpen = 1;
vnemera 0:6ef3fd4921d7 1110 dirOpenHmi(rDr);
vnemera 0:6ef3fd4921d7 1111 }
vnemera 0:6ef3fd4921d7 1112 else {
vnemera 0:6ef3fd4921d7 1113 flagDirOpen = 0;
vnemera 0:6ef3fd4921d7 1114 lcd800x480dirB();
vnemera 0:6ef3fd4921d7 1115 }
vnemera 0:6ef3fd4921d7 1116 break;
vnemera 0:6ef3fd4921d7 1117 case 4: //txtBox file#
vnemera 0:6ef3fd4921d7 1118 showNP(10);
vnemera 0:6ef3fd4921d7 1119 LabelsIndex = 10;
vnemera 0:6ef3fd4921d7 1120 NPinp = 0;
vnemera 0:6ef3fd4921d7 1121 flagNPinp = false;
vnemera 0:6ef3fd4921d7 1122 LPscreen = 1; //LP screen
vnemera 0:6ef3fd4921d7 1123
vnemera 0:6ef3fd4921d7 1124 pc.printf("\nf ");
vnemera 0:6ef3fd4921d7 1125 break;
vnemera 0:6ef3fd4921d7 1126 }
vnemera 0:6ef3fd4921d7 1127 }
vnemera 0:6ef3fd4921d7 1128 /*
vnemera 0:6ef3fd4921d7 1129 RetCode_t showBitmap(loc_t x, loc_t y, uint32_t fileOffset, FILE * Image)
vnemera 0:6ef3fd4921d7 1130 {
vnemera 0:6ef3fd4921d7 1131 BITMAPINFOHEADER BMP_Info;
vnemera 0:6ef3fd4921d7 1132 RGBQUAD * colorPalette = NULL;
vnemera 0:6ef3fd4921d7 1133 int colorCount;
vnemera 0:6ef3fd4921d7 1134 uint8_t * lineBuffer = NULL;
vnemera 0:6ef3fd4921d7 1135 color_t * pixelBuffer = NULL;
vnemera 0:6ef3fd4921d7 1136 uint16_t BPP_t;
vnemera 0:6ef3fd4921d7 1137 dim_t PixelWidth, PixelHeight;
vnemera 0:6ef3fd4921d7 1138 unsigned int i, offset;
vnemera 0:6ef3fd4921d7 1139 int padd,j;
vnemera 0:6ef3fd4921d7 1140
vnemera 0:6ef3fd4921d7 1141 // Now, Read the bitmap info header
vnemera 0:6ef3fd4921d7 1142 Image->read(&BMP_Info, sizeof(BMP_Info));
vnemera 0:6ef3fd4921d7 1143 HexDump0("BMP_Info", (uint8_t *)&BMP_Info, sizeof(BMP_Info));
vnemera 0:6ef3fd4921d7 1144 BPP_t = BMP_Info.biBitCount;
vnemera 0:6ef3fd4921d7 1145 pc.printf("biBitCount %04X", BPP_t);
vnemera 0:6ef3fd4921d7 1146 if (BPP_t != 1 && BPP_t != 4 && BPP_t != 8 && BPP_t != 16 && BPP_t != 24) { // Support 4, 8, 16, 24-bits per pixel
vnemera 0:6ef3fd4921d7 1147 Image->close();
vnemera 0:6ef3fd4921d7 1148 pc.printf("not_supported_format");
vnemera 0:6ef3fd4921d7 1149 return(not_supported_format);
vnemera 0:6ef3fd4921d7 1150 }
vnemera 0:6ef3fd4921d7 1151 if (BMP_Info.biCompression != 0) { // Only the "no comporession" option is supported.
vnemera 0:6ef3fd4921d7 1152 Image->close();
vnemera 0:6ef3fd4921d7 1153 pc.printf("not_supported_format");
vnemera 0:6ef3fd4921d7 1154 return(not_supported_format);
vnemera 0:6ef3fd4921d7 1155 }
vnemera 0:6ef3fd4921d7 1156 PixelHeight = BMP_Info.biHeight;
vnemera 0:6ef3fd4921d7 1157 PixelWidth = BMP_Info.biWidth;
vnemera 0:6ef3fd4921d7 1158 pc.printf("(%d,%d) (%d,%d) (%d,%d)", x,y, PixelWidth,PixelHeight, width(), height());
vnemera 0:6ef3fd4921d7 1159 if (PixelHeight > 340 || PixelWidth > 608 {
vnemera 0:6ef3fd4921d7 1160 Image->close();
vnemera 0:6ef3fd4921d7 1161 pc.printf("image_too_big");
vnemera 0:6ef3fd4921d7 1162 return(image_too_big);
vnemera 0:6ef3fd4921d7 1163 }
vnemera 0:6ef3fd4921d7 1164 if (BMP_Info.biBitCount <= 8) {
vnemera 0:6ef3fd4921d7 1165 int paletteSize;
vnemera 0:6ef3fd4921d7 1166 // Read the color palette
vnemera 0:6ef3fd4921d7 1167 colorCount = 1 << BMP_Info.biBitCount;
vnemera 0:6ef3fd4921d7 1168 paletteSize = sizeof(RGBQUAD) * colorCount;
vnemera 0:6ef3fd4921d7 1169 colorPalette = (RGBQUAD *)malloc(paletteSize);
vnemera 0:6ef3fd4921d7 1170 if (colorPalette == NULL) {
vnemera 0:6ef3fd4921d7 1171 Image->close();
vnemera 0:6ef3fd4921d7 1172 pc.printf("not_enough_ram");
vnemera 0:6ef3fd4921d7 1173 return(not_enough_ram);
vnemera 0:6ef3fd4921d7 1174 }
vnemera 0:6ef3fd4921d7 1175 Image->read(colorPalette, paletteSize);
vnemera 0:6ef3fd4921d7 1176 HexDump0("Color Palette", (uint8_t *)colorPalette, paletteSize);
vnemera 0:6ef3fd4921d7 1177 }
vnemera 0:6ef3fd4921d7 1178
vnemera 0:6ef3fd4921d7 1179 int lineBufSize = ((BPP_t * PixelWidth + 7)/8);
vnemera 0:6ef3fd4921d7 1180 pc.printf("BPP_t %d, PixelWidth %d, lineBufSize %d", BPP_t, PixelWidth, lineBufSize);
vnemera 0:6ef3fd4921d7 1181 lineBuffer = (uint8_t *)malloc(lineBufSize);
vnemera 0:6ef3fd4921d7 1182 if (lineBuffer == NULL) {
vnemera 0:6ef3fd4921d7 1183 free(colorPalette);
vnemera 0:6ef3fd4921d7 1184 fclose(Image);
vnemera 0:6ef3fd4921d7 1185 return(not_enough_ram);
vnemera 0:6ef3fd4921d7 1186 }
vnemera 0:6ef3fd4921d7 1187 pixelBuffer = (color_t *)malloc(PixelWidth * sizeof(color_t));
vnemera 0:6ef3fd4921d7 1188 if (pixelBuffer == NULL) {
vnemera 0:6ef3fd4921d7 1189 free(lineBuffer);
vnemera 0:6ef3fd4921d7 1190 if (colorPalette)
vnemera 0:6ef3fd4921d7 1191 free(colorPalette);
vnemera 0:6ef3fd4921d7 1192 Image->close();
vnemera 0:6ef3fd4921d7 1193 pc.printf("not_enough_ram");
vnemera 0:6ef3fd4921d7 1194 return(not_enough_ram);
vnemera 0:6ef3fd4921d7 1195 }
vnemera 0:6ef3fd4921d7 1196
vnemera 0:6ef3fd4921d7 1197 padd = (lineBufSize % 4);
vnemera 0:6ef3fd4921d7 1198 if (padd)
vnemera 0:6ef3fd4921d7 1199 padd = 4 - padd;
vnemera 0:6ef3fd4921d7 1200
vnemera 0:6ef3fd4921d7 1201 // Define window for top to bottom and left to right so writing auto-wraps
vnemera 0:6ef3fd4921d7 1202 rect_t restore = windowrect;
vnemera 0:6ef3fd4921d7 1203 window(x,y, PixelWidth,PixelHeight);
vnemera 0:6ef3fd4921d7 1204 SetGraphicsCursor(x, y);
vnemera 0:6ef3fd4921d7 1205 //StartGraphicsStream
vnemera 0:6ef3fd4921d7 1206 WriteCommand(0x40,0x00); // Graphics write mode
vnemera 0:6ef3fd4921d7 1207 WriteCommand(0x02); // Prepare for streaming data
vnemera 0:6ef3fd4921d7 1208
vnemera 0:6ef3fd4921d7 1209 //start_data = BMP_Info.bfOffBits;
vnemera 0:6ef3fd4921d7 1210 //HexDump("Raw Data", (uint8_t *)&start_data, 32);
vnemera 0:6ef3fd4921d7 1211 pc.printf("(%d,%d) (%d,%d), [%d,%d]", x,y, PixelWidth,PixelHeight, lineBufSize, padd);
vnemera 0:6ef3fd4921d7 1212 for (j = PixelHeight - 1; j >= 0; j--) { //Lines bottom up
vnemera 0:6ef3fd4921d7 1213 offset = fileOffset + j * (lineBufSize + padd); // start of line
vnemera 0:6ef3fd4921d7 1214 //fseek(Image, offset, SEEK_SET);
vnemera 0:6ef3fd4921d7 1215 Image->read(lineBuffer, lineBufSize); // read a line - slow !
vnemera 0:6ef3fd4921d7 1216 //INFO("offset: %6X", offset);
vnemera 0:6ef3fd4921d7 1217 //HexDump("Line", lineBuffer, lineBufSize);
vnemera 0:6ef3fd4921d7 1218 for (i = 0; i < PixelWidth; i++) { // copy pixel data to TFT
vnemera 0:6ef3fd4921d7 1219 if (BPP_t == 1) {
vnemera 0:6ef3fd4921d7 1220 uint8_t dPix = lineBuffer[i/8];
vnemera 0:6ef3fd4921d7 1221 uint8_t bMask = 0x80 >> (i % 8);
vnemera 0:6ef3fd4921d7 1222 uint8_t bit = (bMask & dPix) ? 0 : 1;
vnemera 0:6ef3fd4921d7 1223 //INFO("%02X & %02X ? => %02X", dPix, bMask, bit);
vnemera 0:6ef3fd4921d7 1224 pixelBuffer[i] = RGBQuadToRGB16(colorPalette, bit);
vnemera 0:6ef3fd4921d7 1225 } else if (BPP_t == 4) {
vnemera 0:6ef3fd4921d7 1226 uint8_t dPix = lineBuffer[i/2];
vnemera 0:6ef3fd4921d7 1227 if ((i & 1) == 0)
vnemera 0:6ef3fd4921d7 1228 dPix >>= 4;
vnemera 0:6ef3fd4921d7 1229 dPix &= 0x0F;
vnemera 0:6ef3fd4921d7 1230 pixelBuffer[i] = RGBQuadToRGB16(colorPalette, dPix);
vnemera 0:6ef3fd4921d7 1231 } else if (BPP_t == 8) {
vnemera 0:6ef3fd4921d7 1232 pixelBuffer[i] = RGBQuadToRGB16(colorPalette, lineBuffer[i]);
vnemera 0:6ef3fd4921d7 1233 } else if (BPP_t == 16) {
vnemera 0:6ef3fd4921d7 1234 pixelBuffer[i] = lineBuffer[i];
vnemera 0:6ef3fd4921d7 1235 } else if (BPP_t == 24) {
vnemera 0:6ef3fd4921d7 1236 color_t color;
vnemera 0:6ef3fd4921d7 1237 color = RGB(lineBuffer[i*3+2], lineBuffer[i*3+1], lineBuffer[i*3+0]);
vnemera 0:6ef3fd4921d7 1238 pixelBuffer[i] = color;
vnemera 0:6ef3fd4921d7 1239 }
vnemera 0:6ef3fd4921d7 1240 }
vnemera 0:6ef3fd4921d7 1241 pixelStream(pixelBuffer, PixelWidth, x, y++);
vnemera 0:6ef3fd4921d7 1242 }
vnemera 0:6ef3fd4921d7 1243 window(restore);
vnemera 0:6ef3fd4921d7 1244 free(pixelBuffer); // don't leak memory
vnemera 0:6ef3fd4921d7 1245 free(lineBuffer);
vnemera 0:6ef3fd4921d7 1246 if (colorPalette)
vnemera 0:6ef3fd4921d7 1247 free(colorPalette);
vnemera 0:6ef3fd4921d7 1248 return (noerror);
vnemera 0:6ef3fd4921d7 1249 }
vnemera 0:6ef3fd4921d7 1250
vnemera 0:6ef3fd4921d7 1251 static void HexDump0(const char * title, const uint8_t * p, int count)
vnemera 0:6ef3fd4921d7 1252 {
vnemera 0:6ef3fd4921d7 1253 int i;
vnemera 0:6ef3fd4921d7 1254 char buf[100] = "0000: ";
vnemera 0:6ef3fd4921d7 1255
vnemera 0:6ef3fd4921d7 1256 if (*title)
vnemera 0:6ef3fd4921d7 1257 for (i=0; i<count; ) {
vnemera 0:6ef3fd4921d7 1258 sprintf(buf + strlen(buf), "%02X ", *(p+i));
vnemera 0:6ef3fd4921d7 1259 if ((++i & 0x0F) == 0x00) {
vnemera 0:6ef3fd4921d7 1260 if (i < count)
vnemera 0:6ef3fd4921d7 1261 sprintf(buf, "%04X: ", i);
vnemera 0:6ef3fd4921d7 1262 else
vnemera 0:6ef3fd4921d7 1263 buf[0] = '\0';
vnemera 0:6ef3fd4921d7 1264 }
vnemera 0:6ef3fd4921d7 1265 }
vnemera 0:6ef3fd4921d7 1266 }
vnemera 0:6ef3fd4921d7 1267
vnemera 0:6ef3fd4921d7 1268 void showPic(void) {
vnemera 0:6ef3fd4921d7 1269 const char Name_BMP[] = "/local/48027224.bmp";
vnemera 0:6ef3fd4921d7 1270
vnemera 0:6ef3fd4921d7 1271 if (connectSD() == 0) {
vnemera 0:6ef3fd4921d7 1272 FileHandle* fh = sd.open(Name_BMP, O_RDONLY);
vnemera 0:6ef3fd4921d7 1273 if (fh) {
vnemera 0:6ef3fd4921d7 1274 if (fh->read(&BMP_Header, sizeof(BMP_Header)) != sizeof(BMP_Header))
vnemera 0:6ef3fd4921d7 1275 {
vnemera 0:6ef3fd4921d7 1276 pc.printf("read error!\n");
vnemera 0:6ef3fd4921d7 1277 if (fh->close()) pc.printf("failed to close file!\n");
vnemera 0:6ef3fd4921d7 1278 }
vnemera 0:6ef3fd4921d7 1279 else
vnemera 0:6ef3fd4921d7 1280 {
vnemera 0:6ef3fd4921d7 1281 pc.printf("bfType %04X", BMP_Header.bfType);
vnemera 0:6ef3fd4921d7 1282 HexDump0("BMP_Header", (uint8_t *)&BMP_Header, sizeof(BMP_Header));
vnemera 0:6ef3fd4921d7 1283 if (BMP_Header.bfType != BF_TYPE) {
vnemera 0:6ef3fd4921d7 1284 fh->close();
vnemera 0:6ef3fd4921d7 1285 pc.printf("not_bmp_format");
vnemera 0:6ef3fd4921d7 1286 }
vnemera 0:6ef3fd4921d7 1287 pc.printf("bfOffits %04X", BMP_Header.bfOffBits);
vnemera 0:6ef3fd4921d7 1288 RetCode_t rt = showBitmap(5, 62, BMP_Header.bfOffBits, fh);
vnemera 0:6ef3fd4921d7 1289 pc.printf("==%i\n", rt);
vnemera 0:6ef3fd4921d7 1290 if (fh->close()) pc.printf("failed to close file!\n");
vnemera 0:6ef3fd4921d7 1291 }
vnemera 0:6ef3fd4921d7 1292 }
vnemera 0:6ef3fd4921d7 1293 else {
vnemera 0:6ef3fd4921d7 1294 pc.printf("file_not_found");
vnemera 0:6ef3fd4921d7 1295 }
vnemera 0:6ef3fd4921d7 1296 }
vnemera 0:6ef3fd4921d7 1297 disconnectSD();
vnemera 0:6ef3fd4921d7 1298
vnemera 0:6ef3fd4921d7 1299
vnemera 0:6ef3fd4921d7 1300 char fqfn[50];
vnemera 0:6ef3fd4921d7 1301 int i = 0;
vnemera 0:6ef3fd4921d7 1302
vnemera 0:6ef3fd4921d7 1303 if (fh->read(&matrix, sizeof(tpMatrix_t)) != sizeof(tpMatrix_t))
vnemera 0:6ef3fd4921d7 1304 {
vnemera 0:6ef3fd4921d7 1305 pc.printf("read error!\n");
vnemera 0:6ef3fd4921d7 1306 //return;
vnemera 0:6ef3fd4921d7 1307 if (fh->close()) pc.printf("failed to close file!\n");
vnemera 0:6ef3fd4921d7 1308 }
vnemera 0:6ef3fd4921d7 1309 else
vnemera 0:6ef3fd4921d7 1310 {
vnemera 0:6ef3fd4921d7 1311 lcd.TouchPanelSetMatrix(&matrix);
vnemera 0:6ef3fd4921d7 1312 if (fh->close()) pc.printf("failed to close file!\n");
vnemera 0:6ef3fd4921d7 1313 disconnectSD();
vnemera 0:6ef3fd4921d7 1314 pc.printf("ok\n");
vnemera 0:6ef3fd4921d7 1315 return;
vnemera 0:6ef3fd4921d7 1316 }
vnemera 0:6ef3fd4921d7 1317 }
vnemera 0:6ef3fd4921d7 1318 else printf("failed to open tpcal.cfg file!\n");
vnemera 0:6ef3fd4921d7 1319 }
vnemera 0:6ef3fd4921d7 1320 disconnectSD();
vnemera 0:6ef3fd4921d7 1321
vnemera 0:6ef3fd4921d7 1322
vnemera 0:6ef3fd4921d7 1323 INFO("Screen Capture... ");
vnemera 0:6ef3fd4921d7 1324 for (i=1; i< 100; i++) {
vnemera 0:6ef3fd4921d7 1325 snprintf(fqfn, sizeof(fqfn), "/local/Screen%02d.bmp", i);
vnemera 0:6ef3fd4921d7 1326 FILE * fh = fopen(fqfn, "rb");
vnemera 0:6ef3fd4921d7 1327 if (!fh) {
vnemera 0:6ef3fd4921d7 1328 lcd.PrintScreen(0,0,lcd.width(),lcd.height(),fqfn);
vnemera 0:6ef3fd4921d7 1329 INFO(" as /local/Screen%02d.bmp", i);
vnemera 0:6ef3fd4921d7 1330 return i;
vnemera 0:6ef3fd4921d7 1331 } else {
vnemera 0:6ef3fd4921d7 1332 fclose(fh); // close this and try the next
vnemera 0:6ef3fd4921d7 1333 }
vnemera 0:6ef3fd4921d7 1334 }
vnemera 0:6ef3fd4921d7 1335 return 0;
vnemera 0:6ef3fd4921d7 1336
vnemera 0:6ef3fd4921d7 1337 RetCode_t r = lcd.PrintScreen(5,62,615,405,"/sd/local/48027224.bmp");
vnemera 0:6ef3fd4921d7 1338 }
vnemera 0:6ef3fd4921d7 1339 */
vnemera 0:6ef3fd4921d7 1340 LocalFileSystem local("local");
vnemera 0:6ef3fd4921d7 1341 void showPic(void) {
vnemera 0:6ef3fd4921d7 1342 RetCode_t r = lcd.RenderImageFile(8, 66, "/local/Rio24.bmp");
vnemera 0:6ef3fd4921d7 1343 }
vnemera 0:6ef3fd4921d7 1344
vnemera 0:6ef3fd4921d7 1345 int indDirFirst = 0;
vnemera 0:6ef3fd4921d7 1346 int indDirCheck = 0;
vnemera 0:6ef3fd4921d7 1347
vnemera 0:6ef3fd4921d7 1348 void btnDir(int k) {
vnemera 0:6ef3fd4921d7 1349 int nn = indName;
vnemera 0:6ef3fd4921d7 1350 switch (k) {
vnemera 0:6ef3fd4921d7 1351 case 0: //btn splash
vnemera 0:6ef3fd4921d7 1352 showMain(progNumber);
vnemera 0:6ef3fd4921d7 1353 LPscreen = 3; //main screen
vnemera 0:6ef3fd4921d7 1354
vnemera 0:6ef3fd4921d7 1355 showPic();
vnemera 0:6ef3fd4921d7 1356
vnemera 0:6ef3fd4921d7 1357 break;
vnemera 0:6ef3fd4921d7 1358 case 1: //btn up
vnemera 0:6ef3fd4921d7 1359 if(nn > 9) {
vnemera 0:6ef3fd4921d7 1360 lcd800x480dir(rDr);
vnemera 0:6ef3fd4921d7 1361 if((indDirFirst) > 8) indDirFirst = indDirFirst - 8;
vnemera 0:6ef3fd4921d7 1362 else indDirFirst = 0;
vnemera 0:6ef3fd4921d7 1363 for(int i=0; i<9; i++) {
vnemera 0:6ef3fd4921d7 1364 lcd.puts(txtBoxDir[i].textX, txtBoxDir[i].textY, dirName[indDirFirst + i]);
vnemera 0:6ef3fd4921d7 1365 }
vnemera 0:6ef3fd4921d7 1366 }
vnemera 0:6ef3fd4921d7 1367 break;
vnemera 0:6ef3fd4921d7 1368 case 2: //btn down
vnemera 0:6ef3fd4921d7 1369 if(nn > 9) {
vnemera 0:6ef3fd4921d7 1370 lcd800x480dir(rDr);
vnemera 0:6ef3fd4921d7 1371 if((nn - indDirFirst) > 16) indDirFirst = indDirFirst + 8;
vnemera 0:6ef3fd4921d7 1372 else indDirFirst = nn - 9;
vnemera 0:6ef3fd4921d7 1373 for(int i=0; i<9; i++) {
vnemera 0:6ef3fd4921d7 1374 lcd.puts(txtBoxDir[i].textX, txtBoxDir[i].textY, dirName[indDirFirst + i]);
vnemera 0:6ef3fd4921d7 1375 }
vnemera 0:6ef3fd4921d7 1376 }
vnemera 0:6ef3fd4921d7 1377 break;
vnemera 0:6ef3fd4921d7 1378 }
vnemera 0:6ef3fd4921d7 1379 }
vnemera 0:6ef3fd4921d7 1380
vnemera 0:6ef3fd4921d7 1381 int indDirText = 0;
vnemera 0:6ef3fd4921d7 1382 char ccD[40];
vnemera 0:6ef3fd4921d7 1383
vnemera 0:6ef3fd4921d7 1384 void btnDirText(int k) {
vnemera 0:6ef3fd4921d7 1385 int nn = indDirText - 1;
vnemera 0:6ef3fd4921d7 1386
vnemera 0:6ef3fd4921d7 1387 if(indDirText != 0) {
vnemera 0:6ef3fd4921d7 1388 lcd.fillrect(txtBoxDir[nn].x1, txtBoxDir[nn].y1, txtBoxDir[nn].x2, txtBoxDir[nn].y2, txtBoxDir[nn].color);
vnemera 0:6ef3fd4921d7 1389 lcd.foreground(txtBoxDir[nn].textColor);
vnemera 0:6ef3fd4921d7 1390 lcd.background(txtBoxDir[nn].color);
vnemera 0:6ef3fd4921d7 1391 lcd.puts(txtBoxDir[nn].textX, txtBoxDir[nn].textY, dirName[indDirFirst + nn]);
vnemera 0:6ef3fd4921d7 1392 }
vnemera 0:6ef3fd4921d7 1393 indDirText = k + 1;
vnemera 0:6ef3fd4921d7 1394 nn = k;
vnemera 0:6ef3fd4921d7 1395 lcd.fillrect(txtBoxDir[k].x1, txtBoxDir[k].y1, txtBoxDir[k].x2, txtBoxDir[k].y2, Yellow);
vnemera 0:6ef3fd4921d7 1396 lcd.foreground(txtBoxDir[k].textColor);
vnemera 0:6ef3fd4921d7 1397 lcd.background(Yellow);
vnemera 0:6ef3fd4921d7 1398 lcd.puts(txtBoxDir[k].textX, txtBoxDir[k].textY, dirName[indDirFirst + k]);
vnemera 0:6ef3fd4921d7 1399
vnemera 0:6ef3fd4921d7 1400 if (strchr(dirName[indDirFirst + k], '.') == NULL) {
vnemera 0:6ef3fd4921d7 1401 //pc.printf("<%s>", dirName[indDirFirst + k]);
vnemera 0:6ef3fd4921d7 1402 dirS.append(dirName[indDirFirst + k]);
vnemera 0:6ef3fd4921d7 1403 //pc.printf("<%s>", dirS.c_str());
vnemera 0:6ef3fd4921d7 1404 strcpy(&ccD[0], dirS.c_str());
vnemera 0:6ef3fd4921d7 1405 //pc.printf("<%s>", ccD);
vnemera 0:6ef3fd4921d7 1406 dirOpenHmi(ccD);
vnemera 0:6ef3fd4921d7 1407 // clean directory
vnemera 0:6ef3fd4921d7 1408 for(int i =indName; i<40; i++) {
vnemera 0:6ef3fd4921d7 1409 strcpy(&dirName[indName++][0], " ");
vnemera 0:6ef3fd4921d7 1410 }
vnemera 0:6ef3fd4921d7 1411
vnemera 0:6ef3fd4921d7 1412 }
vnemera 0:6ef3fd4921d7 1413 }
vnemera 0:6ef3fd4921d7 1414
vnemera 0:6ef3fd4921d7 1415 void txtBoxNPadd(int i) {
vnemera 0:6ef3fd4921d7 1416 if(i < 10) {
vnemera 0:6ef3fd4921d7 1417 NPinp =10 * NPinp + i;
vnemera 0:6ef3fd4921d7 1418 if(NPinp > miMa[LabelsIndex].max) {NPinp = miMa[LabelsIndex].max;}
vnemera 0:6ef3fd4921d7 1419
vnemera 0:6ef3fd4921d7 1420 lcd.fillroundrect(txtBNP.x1, txtBNP.y1, txtBNP.x2, txtBNP.y2, txtBNP.r1, txtBNP.r2, txtBNP.color);
vnemera 0:6ef3fd4921d7 1421 lcd.foreground(txtBNP.textColor);
vnemera 0:6ef3fd4921d7 1422 lcd.background(txtBNP.color);
vnemera 0:6ef3fd4921d7 1423 sprintf(txtBNP.text, "%i", NPinp);
vnemera 0:6ef3fd4921d7 1424 lcd.puts(txtBNP.textX, txtBNP.textY, txtBNP.text);
vnemera 0:6ef3fd4921d7 1425 flagNPinp = true;
vnemera 0:6ef3fd4921d7 1426 }
vnemera 0:6ef3fd4921d7 1427 if(i == 11) {
vnemera 0:6ef3fd4921d7 1428 lcd.fillroundrect(txtBNP.x1, txtBNP.y1, txtBNP.x2, txtBNP.y2, txtBNP.r1, txtBNP.r2, txtBNP.color);
vnemera 0:6ef3fd4921d7 1429 lcd.foreground(txtBNP.textColor);
vnemera 0:6ef3fd4921d7 1430 lcd.background(txtBNP.color);
vnemera 0:6ef3fd4921d7 1431 NPinp = NPinp / 10;
vnemera 0:6ef3fd4921d7 1432 if(NPinp == 0) {
vnemera 0:6ef3fd4921d7 1433 lcd.puts(txtBNP.textX, txtBNP.textY, "");
vnemera 0:6ef3fd4921d7 1434 flagNPinp = false;
vnemera 0:6ef3fd4921d7 1435 }
vnemera 0:6ef3fd4921d7 1436 else {
vnemera 0:6ef3fd4921d7 1437 sprintf(txtBNP.text, "%i", NPinp);
vnemera 0:6ef3fd4921d7 1438 lcd.puts(txtBNP.textX, txtBNP.textY, txtBNP.text);
vnemera 0:6ef3fd4921d7 1439 }
vnemera 0:6ef3fd4921d7 1440 }
vnemera 0:6ef3fd4921d7 1441 if(i == 12) {
vnemera 0:6ef3fd4921d7 1442 if(TPmode == 1) {
vnemera 0:6ef3fd4921d7 1443 if(flagNPinp == true) {
vnemera 0:6ef3fd4921d7 1444 if(NPinp < miMa[LabelsIndex].min) {NPinp = miMa[LabelsIndex].min;}
vnemera 0:6ef3fd4921d7 1445 switch (LabelsIndex) {
vnemera 0:6ef3fd4921d7 1446 case 0: {prPar[progNumber].LPbeg = NPinp; break;}
vnemera 0:6ef3fd4921d7 1447 case 1: {prPar[progNumber].LPend = NPinp; break;}
vnemera 0:6ef3fd4921d7 1448 case 3: {prPar[progNumber].Lfreq = NPinp; break;}
vnemera 0:6ef3fd4921d7 1449 case 4: {prPar[progNumber].Lpulse = NPinp; break;}
vnemera 0:6ef3fd4921d7 1450 case 5: {prPar[progNumber].amplBeg = NPinp; break;}
vnemera 0:6ef3fd4921d7 1451 case 6: {prPar[progNumber].amplEnd = NPinp; break;}
vnemera 0:6ef3fd4921d7 1452 case 7: {prPar[progNumber].wFreq = NPinp; break;}
vnemera 0:6ef3fd4921d7 1453 case 8: {prPar[progNumber].wTime = NPinp; break;}
vnemera 0:6ef3fd4921d7 1454 case 9: {prPar[progNumber].amplNum = NPinp; break;}
vnemera 0:6ef3fd4921d7 1455 }
vnemera 0:6ef3fd4921d7 1456 sprintf(txtBoxR[LabelsIndex].text, "%i", NPinp);
vnemera 0:6ef3fd4921d7 1457 }
vnemera 0:6ef3fd4921d7 1458 showVal(progNumber);
vnemera 0:6ef3fd4921d7 1459 LPscreen = 0; //value screen
vnemera 0:6ef3fd4921d7 1460 flagParChanged = 0;
vnemera 0:6ef3fd4921d7 1461 }
vnemera 0:6ef3fd4921d7 1462 else if(TPmode == 2) {
vnemera 0:6ef3fd4921d7 1463 if(flagNPinp == true) {
vnemera 0:6ef3fd4921d7 1464 if(NPinp < miMa[LabelsIndex].min) {NPinp = miMa[LabelsIndex].min;}
vnemera 0:6ef3fd4921d7 1465 switch (LabelsIndex) {
vnemera 0:6ef3fd4921d7 1466 case 10: {fileNum = NPinp; break;}
vnemera 0:6ef3fd4921d7 1467 }
vnemera 0:6ef3fd4921d7 1468 sprintf(txtRServ[4].text, "%i", NPinp);
vnemera 0:6ef3fd4921d7 1469 }
vnemera 0:6ef3fd4921d7 1470 showService();
vnemera 0:6ef3fd4921d7 1471 LPscreen = 2; //service screen
vnemera 0:6ef3fd4921d7 1472
vnemera 0:6ef3fd4921d7 1473 }
vnemera 0:6ef3fd4921d7 1474 }
vnemera 0:6ef3fd4921d7 1475 }
vnemera 0:6ef3fd4921d7 1476
vnemera 0:6ef3fd4921d7 1477 void testTP(void) {
vnemera 0:6ef3fd4921d7 1478 TouchCode_t touch;
vnemera 0:6ef3fd4921d7 1479
vnemera 0:6ef3fd4921d7 1480 touch = lcd.TouchPanelReadable(); // any touch to report?
vnemera 0:6ef3fd4921d7 1481 if (touch) {
vnemera 0:6ef3fd4921d7 1482 uint8_t id = lcd.TouchID(); // 'id' tracks the individual touches
vnemera 0:6ef3fd4921d7 1483 TouchCode_t ev = lcd.TouchCode(); // 'ev'ent 0-no_touch,1-touch,2-held,3-release,4-no_cal
vnemera 0:6ef3fd4921d7 1484 point_t xy = lcd.TouchCoordinates(); // and of course the (x,y) coordinates
vnemera 0:6ef3fd4921d7 1485
vnemera 0:6ef3fd4921d7 1486 pc.printf("%2d,%d:(%4d,%4d)\n", id, ev, xy.x, xy.y);
vnemera 0:6ef3fd4921d7 1487 int lastRadius, newRadius;
vnemera 0:6ef3fd4921d7 1488 lastRadius = ComputeRadius(lastTP); // To erase the last fingerprint
vnemera 0:6ef3fd4921d7 1489 newRadius = ComputeRadius(xy); // Shrink near edge of screen
vnemera 0:6ef3fd4921d7 1490 lcd.circle(xy, newRadius, Red); // draw new fingerprint
vnemera 0:6ef3fd4921d7 1491 lcd.circle(lastTP, lastRadius, Black); // erase old fingerprint
vnemera 0:6ef3fd4921d7 1492 lastTP = xy;
vnemera 0:6ef3fd4921d7 1493
vnemera 0:6ef3fd4921d7 1494 led2 = 1;
vnemera 0:6ef3fd4921d7 1495 wait_ms(100);
vnemera 0:6ef3fd4921d7 1496 led2 = 0;
vnemera 0:6ef3fd4921d7 1497 }
vnemera 0:6ef3fd4921d7 1498 }
vnemera 0:6ef3fd4921d7 1499
vnemera 0:6ef3fd4921d7 1500 void checkTP(void) {
vnemera 0:6ef3fd4921d7 1501 TouchCode_t touch;
vnemera 0:6ef3fd4921d7 1502
vnemera 0:6ef3fd4921d7 1503 touch = lcd.TouchPanelReadable(); // any touch to report?
vnemera 0:6ef3fd4921d7 1504 //pc.printf("TP\n");
vnemera 0:6ef3fd4921d7 1505 if (touch) {
vnemera 0:6ef3fd4921d7 1506 uint8_t id = lcd.TouchID(); // 'id' tracks the individual touches
vnemera 0:6ef3fd4921d7 1507 TouchCode_t ev = lcd.TouchCode(); // 'ev'ent 0-no_touch,1-touch,2-held,3-release,4-no_cal
vnemera 0:6ef3fd4921d7 1508 point_t xy = lcd.TouchCoordinates(); // and of course the (x,y) coordinates
vnemera 0:6ef3fd4921d7 1509
vnemera 0:6ef3fd4921d7 1510 //printf("(%4d,%4d)\n", xy.x, xy.y);
vnemera 0:6ef3fd4921d7 1511 pc.printf("%d,%d:(%4d,%4d)\n", TPmode, LPscreen, xy.x, xy.y);
vnemera 0:6ef3fd4921d7 1512
vnemera 0:6ef3fd4921d7 1513 if(LPscreen == 0) { //value screen
vnemera 0:6ef3fd4921d7 1514 //8 program#
vnemera 0:6ef3fd4921d7 1515 for(int i = 0; i < TextBoxSize; i++) {
vnemera 0:6ef3fd4921d7 1516 if((xy.x > txtBox[i].x1)&(xy.x < txtBox[i].x2)&(xy.y > txtBox[i].y1)&(xy.y < txtBox[i].y2)) {
vnemera 0:6ef3fd4921d7 1517 pc.printf("%i\n", i);
vnemera 0:6ef3fd4921d7 1518 if(i<8) {showProgParam(i); flagParChanged = 0; goto checkTPend;}
vnemera 0:6ef3fd4921d7 1519 else {if(editBtnMode == 1) {showWobParam(i-8); flagParChanged = 0; goto checkTPend;}} //edit mode, 3 wob.mode
vnemera 0:6ef3fd4921d7 1520 }
vnemera 0:6ef3fd4921d7 1521 }
vnemera 0:6ef3fd4921d7 1522 // text boxes
vnemera 0:6ef3fd4921d7 1523 if(editBtnMode == 1) {
vnemera 0:6ef3fd4921d7 1524 for(int i = 0; i < numPrPar; i++) {
vnemera 0:6ef3fd4921d7 1525 if((xy.x > txtBoxR[i].x1)&(xy.x < txtBoxR[i].x2)&(xy.y > txtBoxR[i].y1)&(xy.y < txtBoxR[i].y2)) {
vnemera 0:6ef3fd4921d7 1526 pc.printf("%i\n", i);
vnemera 0:6ef3fd4921d7 1527 if(i == numLmode) {
vnemera 0:6ef3fd4921d7 1528 lcd.fillroundrect(txtBoxR[i].x1, txtBoxR[i].y1, txtBoxR[i].x2, txtBoxR[i].y2, txtBoxR[i].r1, txtBoxR[i].r2, txtBoxR[i].color);
vnemera 0:6ef3fd4921d7 1529 lcd.foreground(txtBoxR[i].textColor);
vnemera 0:6ef3fd4921d7 1530 lcd.background(txtBoxR[i].color);
vnemera 0:6ef3fd4921d7 1531 if(Lmode == 0) {
vnemera 0:6ef3fd4921d7 1532 Lmode = 1;
vnemera 0:6ef3fd4921d7 1533 prPar[progNumber].Lmode = 1;
vnemera 0:6ef3fd4921d7 1534 lcd.puts(txtBoxR[i].textX, txtBoxR[i].textY, "PULSE");
vnemera 0:6ef3fd4921d7 1535 if(SetLasComm(32) == 1) {TPstatus = 5;} //EPM -enable pulse mode
vnemera 0:6ef3fd4921d7 1536 else {
vnemera 0:6ef3fd4921d7 1537 if(SetLasComm( 1) == 1) {TPstatus = 5;} //STA -read laser status
vnemera 0:6ef3fd4921d7 1538 else TPstatus = 0;
vnemera 0:6ef3fd4921d7 1539 }
vnemera 0:6ef3fd4921d7 1540 }
vnemera 0:6ef3fd4921d7 1541 else {
vnemera 0:6ef3fd4921d7 1542 Lmode = 0;
vnemera 0:6ef3fd4921d7 1543 prPar[progNumber].Lmode = 0;
vnemera 0:6ef3fd4921d7 1544 lcd.puts(txtBoxR[i].textX, txtBoxR[i].textY, "CW");
vnemera 0:6ef3fd4921d7 1545 if(SetLasComm(33) == 1) {TPstatus = 5;} //DPM -disable pulse mode
vnemera 0:6ef3fd4921d7 1546 else {
vnemera 0:6ef3fd4921d7 1547 if(SetLasComm( 1) == 1) {TPstatus = 5;} //STA -read laser status
vnemera 0:6ef3fd4921d7 1548 else TPstatus = 0;
vnemera 0:6ef3fd4921d7 1549 }
vnemera 0:6ef3fd4921d7 1550 }
vnemera 0:6ef3fd4921d7 1551 flagParChanged = 0;
vnemera 0:6ef3fd4921d7 1552 }
vnemera 0:6ef3fd4921d7 1553 else {
vnemera 0:6ef3fd4921d7 1554 showNP(i);
vnemera 0:6ef3fd4921d7 1555 LabelsIndex = i;
vnemera 0:6ef3fd4921d7 1556 NPinp = 0;
vnemera 0:6ef3fd4921d7 1557 flagNPinp = false;
vnemera 0:6ef3fd4921d7 1558 LPscreen = 1; //LP screen
vnemera 0:6ef3fd4921d7 1559 }
vnemera 0:6ef3fd4921d7 1560 goto checkTPend;
vnemera 0:6ef3fd4921d7 1561 }
vnemera 0:6ef3fd4921d7 1562 }
vnemera 0:6ef3fd4921d7 1563 }
vnemera 0:6ef3fd4921d7 1564 //btn Edit
vnemera 0:6ef3fd4921d7 1565 if((xy.x > txtBoxR[numTPeditBtn].x1)&(xy.x < txtBoxR[numTPeditBtn].x2)&(xy.y > txtBoxR[numTPeditBtn].y1)&(xy.y < txtBoxR[numTPeditBtn].y2)) {
vnemera 0:6ef3fd4921d7 1566 if(TPmode == 1) {
vnemera 0:6ef3fd4921d7 1567 showTPeditBtn(0); //set operate mode
vnemera 0:6ef3fd4921d7 1568 TPmode = 0;
vnemera 0:6ef3fd4921d7 1569 editBtnMode = 0;
vnemera 0:6ef3fd4921d7 1570 }
vnemera 0:6ef3fd4921d7 1571 else {
vnemera 0:6ef3fd4921d7 1572 showTPeditBtn(1); //set edit mode
vnemera 0:6ef3fd4921d7 1573 TPmode = 1;
vnemera 0:6ef3fd4921d7 1574 editBtnMode = 1;
vnemera 0:6ef3fd4921d7 1575 }
vnemera 0:6ef3fd4921d7 1576 goto checkTPend;
vnemera 0:6ef3fd4921d7 1577 }
vnemera 0:6ef3fd4921d7 1578 //btn Main
vnemera 0:6ef3fd4921d7 1579 if((xy.x > txtBoxR[numTPmainBtn].x1)&(xy.x < txtBoxR[numTPmainBtn].x2)&(xy.y > txtBoxR[numTPmainBtn].y1)&(xy.y < txtBoxR[numTPmainBtn].y2)) {
vnemera 0:6ef3fd4921d7 1580 pc.printf("MainBtn");
vnemera 0:6ef3fd4921d7 1581
vnemera 0:6ef3fd4921d7 1582 showMain(progNumber);
vnemera 0:6ef3fd4921d7 1583 TPmode = 0;
vnemera 0:6ef3fd4921d7 1584 LPscreen = 3;
vnemera 0:6ef3fd4921d7 1585 }
vnemera 0:6ef3fd4921d7 1586 //status line
vnemera 0:6ef3fd4921d7 1587 if((xy.x > txtBoxR[numTPstatus].x1)&(xy.x < txtBoxR[numTPstatus].x2)&(xy.y > txtBoxR[numTPstatus].y1)&(xy.y < txtBoxR[numTPstatus].y2)) {
vnemera 0:6ef3fd4921d7 1588 showTPstatus(10); //clean status line
vnemera 0:6ef3fd4921d7 1589 }
vnemera 0:6ef3fd4921d7 1590 goto checkTPend;
vnemera 0:6ef3fd4921d7 1591 }
vnemera 0:6ef3fd4921d7 1592 else if(LPscreen == 1) { //numpad screen
vnemera 0:6ef3fd4921d7 1593 if(xy.x < txtBoxNP[1].x1) { //touch left from form
vnemera 0:6ef3fd4921d7 1594 showVal(progNumber);
vnemera 0:6ef3fd4921d7 1595 LPscreen = 0; //values screen
vnemera 0:6ef3fd4921d7 1596 pc.printf("<<");
vnemera 0:6ef3fd4921d7 1597 goto checkTPend;
vnemera 0:6ef3fd4921d7 1598 }
vnemera 0:6ef3fd4921d7 1599 //btn 0..9, ok, back
vnemera 0:6ef3fd4921d7 1600 for(int i = 0; i < 13; i++) {
vnemera 0:6ef3fd4921d7 1601 if((xy.x > txtBoxNP[i].x1)&(xy.x < txtBoxNP[i].x2)&(xy.y > txtBoxNP[i].y1)&(xy.y < txtBoxNP[i].y2)) {
vnemera 0:6ef3fd4921d7 1602 pc.printf("%i\n", i);
vnemera 0:6ef3fd4921d7 1603 txtBoxNPadd(i);
vnemera 0:6ef3fd4921d7 1604 goto checkTPend;
vnemera 0:6ef3fd4921d7 1605 }
vnemera 0:6ef3fd4921d7 1606 }
vnemera 0:6ef3fd4921d7 1607
vnemera 0:6ef3fd4921d7 1608 }
vnemera 0:6ef3fd4921d7 1609 else if(LPscreen == 2) { //service screen
vnemera 0:6ef3fd4921d7 1610 for(int i = 0; i < txtRServSize; i++) {
vnemera 0:6ef3fd4921d7 1611 if((xy.x > txtRServ[i].x1)&(xy.x < txtRServ[i].x2)&(xy.y > txtRServ[i].y1)&(xy.y < txtRServ[i].y2)) {
vnemera 0:6ef3fd4921d7 1612 btnServ(i);
vnemera 0:6ef3fd4921d7 1613 break;
vnemera 0:6ef3fd4921d7 1614 }
vnemera 0:6ef3fd4921d7 1615 }
vnemera 0:6ef3fd4921d7 1616 if(flagDirOpen != 0) {
vnemera 0:6ef3fd4921d7 1617 for(int i = 0; i < txtRdirSize; i++) {
vnemera 0:6ef3fd4921d7 1618 if((xy.x > txtRdir[i].x1)&&(xy.x < txtRdir[i].x2)&&(xy.y > txtRdir[i].y1)&&(xy.y < txtRdir[i].y2)) {
vnemera 0:6ef3fd4921d7 1619 btnDir(i);
vnemera 0:6ef3fd4921d7 1620 break;
vnemera 0:6ef3fd4921d7 1621 }
vnemera 0:6ef3fd4921d7 1622 }
vnemera 0:6ef3fd4921d7 1623 for(int i = 0; i < TextBoxDirSize; i++) {
vnemera 0:6ef3fd4921d7 1624 if((xy.x > txtBoxDir[i].x1)&&(xy.x < txtBoxDir[i].x2)&&(xy.y > txtBoxDir[i].y1)&&(xy.y < txtBoxDir[i].y2)) {
vnemera 0:6ef3fd4921d7 1625 btnDirText(i);
vnemera 0:6ef3fd4921d7 1626 break;
vnemera 0:6ef3fd4921d7 1627 }
vnemera 0:6ef3fd4921d7 1628 }
vnemera 0:6ef3fd4921d7 1629 }
vnemera 0:6ef3fd4921d7 1630 }
vnemera 0:6ef3fd4921d7 1631 else if(LPscreen == 3) { //main screen
vnemera 0:6ef3fd4921d7 1632 //8 program#
vnemera 0:6ef3fd4921d7 1633 for(int i = 0; i < TextBoxSize; i++) {
vnemera 0:6ef3fd4921d7 1634 if((xy.x > txtBox[i].x1)&(xy.x < txtBox[i].x2)&(xy.y > txtBox[i].y1)&(xy.y < txtBox[i].y2)) {
vnemera 0:6ef3fd4921d7 1635 pc.printf("%i\n", i);
vnemera 0:6ef3fd4921d7 1636 if(i<8) {showProgNum(i); flagParChanged = 0; goto checkTPend;}
vnemera 0:6ef3fd4921d7 1637 }
vnemera 0:6ef3fd4921d7 1638 }
vnemera 0:6ef3fd4921d7 1639 //btn Values
vnemera 0:6ef3fd4921d7 1640 if((xy.x > txtBoxR[numTPvalBtn].x1)&(xy.x < txtBoxR[numTPvalBtn].x2)&(xy.y > txtBoxR[numTPvalBtn].y1)&(xy.y < txtBoxR[numTPvalBtn].y2)) {
vnemera 0:6ef3fd4921d7 1641 pc.printf("ValuesBtn");
vnemera 0:6ef3fd4921d7 1642
vnemera 0:6ef3fd4921d7 1643 showVal(progNumber);
vnemera 0:6ef3fd4921d7 1644 TPmode = 0;
vnemera 0:6ef3fd4921d7 1645 LPscreen = 0;
vnemera 0:6ef3fd4921d7 1646 }
vnemera 0:6ef3fd4921d7 1647 //btn Service
vnemera 0:6ef3fd4921d7 1648 if((xy.x > txtBoxR[numTPservBtn].x1)&(xy.x < txtBoxR[numTPservBtn].x2)&(xy.y > txtBoxR[numTPservBtn].y1)&(xy.y < txtBoxR[numTPservBtn].y2)) {
vnemera 0:6ef3fd4921d7 1649 pc.printf("ServiceBtn");
vnemera 0:6ef3fd4921d7 1650
vnemera 0:6ef3fd4921d7 1651 showService();
vnemera 0:6ef3fd4921d7 1652 TPmode = 2;
vnemera 0:6ef3fd4921d7 1653 LPscreen = 2;
vnemera 0:6ef3fd4921d7 1654 }
vnemera 0:6ef3fd4921d7 1655 //status line
vnemera 0:6ef3fd4921d7 1656 if((xy.x > txtBoxR[numTPstatus].x1)&(xy.x < txtBoxR[numTPstatus].x2)&(xy.y > txtBoxR[numTPstatus].y1)&(xy.y < txtBoxR[numTPstatus].y2)) {
vnemera 0:6ef3fd4921d7 1657 showTPstatus(10); //clean status line
vnemera 0:6ef3fd4921d7 1658 }
vnemera 0:6ef3fd4921d7 1659 }
vnemera 0:6ef3fd4921d7 1660 checkTPend:
vnemera 0:6ef3fd4921d7 1661 led2 = 1;
vnemera 0:6ef3fd4921d7 1662 wait_ms(100);
vnemera 0:6ef3fd4921d7 1663 led2 = 0;
vnemera 0:6ef3fd4921d7 1664
vnemera 0:6ef3fd4921d7 1665 while(touch) {
vnemera 0:6ef3fd4921d7 1666 touch = lcd.TouchPanelReadable(); // any touch to report?
vnemera 0:6ef3fd4921d7 1667 wait_ms(1);
vnemera 0:6ef3fd4921d7 1668 }
vnemera 0:6ef3fd4921d7 1669 }
vnemera 0:6ef3fd4921d7 1670 }
vnemera 0:6ef3fd4921d7 1671 //ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
vnemera 0:6ef3fd4921d7 1672
vnemera 0:6ef3fd4921d7 1673 void LasCommInit(void) {
vnemera 0:6ef3fd4921d7 1674 if(LPscreen == 2) statServErr(10); //service screen, status " "
vnemera 0:6ef3fd4921d7 1675 else showTPstatus(10); // main screen, status " "
vnemera 0:6ef3fd4921d7 1676
vnemera 0:6ef3fd4921d7 1677 if(SetLasComm(52) == 1) {c7=52; goto met1;} //RERR -Resets any resettable errors
vnemera 0:6ef3fd4921d7 1678 if(SetLasComm(54) == 1) {c7=54; goto met1;} //EMOFF -Stop Emission
vnemera 0:6ef3fd4921d7 1679 if(SetLasComm(41) == 1) {c7=41; goto met1;} //DMOD -disable external modulation input
vnemera 0:6ef3fd4921d7 1680 if(SetLasComm(47) == 1) {c7=47; goto met1;} //DEABC -disable external aiming beam control input
vnemera 0:6ef3fd4921d7 1681 if(SetLasComm(34) == 1) {c7=34; goto met1;} //ABN -aiming beam on
vnemera 0:6ef3fd4921d7 1682 //if(SetLasComm(35) == 1) {c7=35; goto met1;} //ABF -aiming beam off
vnemera 0:6ef3fd4921d7 1683 //if(SetLasComm(46) == 1) {c7=46; goto met1;} //EEABC -enable external aiming beam control input
vnemera 0:6ef3fd4921d7 1684 if(SetLasComm(39) == 1) {c7=39; goto met1;} //DGM -disable gate mode
vnemera 0:6ef3fd4921d7 1685 if(SetLasComm(36) == 1) {c7=36; goto met1;} //EEC -enable external analog power control input
vnemera 0:6ef3fd4921d7 1686 if(SetLasComm(40) == 1) {c7=40; goto met1;} //EMOD -enable external modulation input
vnemera 0:6ef3fd4921d7 1687 if(SetLasComm(42) == 1) {c7=42; goto met1;} //ELE -enable external emission input
vnemera 0:6ef3fd4921d7 1688 if(SetLasComm( 1) == 1) {c7=1; goto met1;} //STA -read laser status
vnemera 0:6ef3fd4921d7 1689 c7 = 99;
vnemera 0:6ef3fd4921d7 1690 if(LPscreen == 2) statServErr(0); //service screen, status READY
vnemera 0:6ef3fd4921d7 1691 else showTPstatus(0); // main screen, status READY
vnemera 0:6ef3fd4921d7 1692 return;
vnemera 0:6ef3fd4921d7 1693
vnemera 0:6ef3fd4921d7 1694 met1:
vnemera 0:6ef3fd4921d7 1695 if(LPscreen == 2) statServErr(5); //service screen
vnemera 0:6ef3fd4921d7 1696 else showTPstatus(5); // main screen
vnemera 0:6ef3fd4921d7 1697 }
vnemera 0:6ef3fd4921d7 1698
vnemera 0:6ef3fd4921d7 1699 void initIOparam(void) {
vnemera 0:6ef3fd4921d7 1700 for(int i=0; i<4; i++) {
vnemera 0:6ef3fd4921d7 1701 ioPar.o3[i] = '\0';
vnemera 0:6ef3fd4921d7 1702 ioPar.o2[i] = '\0';
vnemera 0:6ef3fd4921d7 1703 ioPar.o1[i] = '\0';
vnemera 0:6ef3fd4921d7 1704 ioPar.i3[i] = '\0';
vnemera 0:6ef3fd4921d7 1705 ioPar.i2[i] = '\0';
vnemera 0:6ef3fd4921d7 1706 ioPar.i1[i] = '\0';
vnemera 0:6ef3fd4921d7 1707 ioPar.aiLPow[i] = '\0';
vnemera 0:6ef3fd4921d7 1708 ioPar.aiLCur[i] = '\0';
vnemera 0:6ef3fd4921d7 1709 ioPar.aiLTemp[i] = '\0';
vnemera 0:6ef3fd4921d7 1710 ioPar.aiLBR[i] = '\0';
vnemera 0:6ef3fd4921d7 1711 }
vnemera 0:6ef3fd4921d7 1712 }
vnemera 0:6ef3fd4921d7 1713
vnemera 0:6ef3fd4921d7 1714 uint8_t bitOstate = 0x80; //d7=1 need set/reset, d6=1-set,0-reset, d5-d0 bit number
vnemera 0:6ef3fd4921d7 1715 uint8_t ioReq = 0; //0-no request, 1-inp.request, 2-out.request
vnemera 0:6ef3fd4921d7 1716
vnemera 0:6ef3fd4921d7 1717 //==============================================================================
vnemera 0:6ef3fd4921d7 1718 int main()
vnemera 0:6ef3fd4921d7 1719 {
vnemera 0:6ef3fd4921d7 1720 a7=0;
vnemera 0:6ef3fd4921d7 1721 b7=0;
vnemera 0:6ef3fd4921d7 1722 c7=0;
vnemera 0:6ef3fd4921d7 1723
vnemera 0:6ef3fd4921d7 1724 //Configure CRC, large frames, and write validation
vnemera 0:6ef3fd4921d7 1725 sd.crc(true);
vnemera 0:6ef3fd4921d7 1726 sd.large_frames(true);
vnemera 0:6ef3fd4921d7 1727 sd.write_validation(true);
vnemera 0:6ef3fd4921d7 1728
vnemera 0:6ef3fd4921d7 1729 pc.baud(PC_BAUD); //
vnemera 0:6ef3fd4921d7 1730
vnemera 0:6ef3fd4921d7 1731 pc.printf("\nRA8875 Touch Screen. Date: " __DATE__ " " __TIME__ "\r\n");
vnemera 0:6ef3fd4921d7 1732 //wait_ms(5000);
vnemera 0:6ef3fd4921d7 1733 //pc.printf("\n>>\n");
vnemera 0:6ef3fd4921d7 1734 //wait_ms(5000);
vnemera 0:6ef3fd4921d7 1735
vnemera 0:6ef3fd4921d7 1736 initHMIio();
vnemera 0:6ef3fd4921d7 1737 initIOparam();
vnemera 0:6ef3fd4921d7 1738
vnemera 0:6ef3fd4921d7 1739 lcd800x480Init();
vnemera 0:6ef3fd4921d7 1740 //showMain(progNumber+1);
vnemera 0:6ef3fd4921d7 1741 tickRS.attach_us(&flipUS, tickTime); // the address of the function to be attached (flip) to ticker
vnemera 0:6ef3fd4921d7 1742
vnemera 0:6ef3fd4921d7 1743 wait_ms(5000);
vnemera 0:6ef3fd4921d7 1744 LasCommInit();
vnemera 0:6ef3fd4921d7 1745
vnemera 0:6ef3fd4921d7 1746 fillTestBuffer();
vnemera 0:6ef3fd4921d7 1747 if(connectSD() == 0) {
vnemera 0:6ef3fd4921d7 1748 infoSD();
vnemera 0:6ef3fd4921d7 1749 //writeTestFile();
vnemera 0:6ef3fd4921d7 1750 readTestFile();
vnemera 0:6ef3fd4921d7 1751
vnemera 0:6ef3fd4921d7 1752 readDirSD(rDr);
vnemera 0:6ef3fd4921d7 1753
vnemera 0:6ef3fd4921d7 1754 //RetCode_t r = lcd.RenderImageFile(0, 0, "/sd/local/48027208.bmp");
vnemera 0:6ef3fd4921d7 1755 //printf("returned %d\r\n", r);
vnemera 0:6ef3fd4921d7 1756 //wait(3);
vnemera 0:6ef3fd4921d7 1757 //r = lcd.RenderJpegFile(0, 0, "/sd/local/p480272.jpg");
vnemera 0:6ef3fd4921d7 1758 //printf("returned %d\r\n", r);
vnemera 0:6ef3fd4921d7 1759
vnemera 0:6ef3fd4921d7 1760 disconnectSD();
vnemera 0:6ef3fd4921d7 1761 }
vnemera 0:6ef3fd4921d7 1762 pc.printf("a7=%i b7=%i c7=%i d7=%i\n", a7, b7, c7, d7);
vnemera 0:6ef3fd4921d7 1763
vnemera 0:6ef3fd4921d7 1764 InitTS();
vnemera 0:6ef3fd4921d7 1765 readIniFile();
vnemera 0:6ef3fd4921d7 1766 showMain(progNumber);
vnemera 0:6ef3fd4921d7 1767 //int x, y, z;
vnemera 0:6ef3fd4921d7 1768
vnemera 0:6ef3fd4921d7 1769 while(true)
vnemera 0:6ef3fd4921d7 1770 {
vnemera 0:6ef3fd4921d7 1771 //testTP();
vnemera 0:6ef3fd4921d7 1772 if(flagWeld == 0) checkTP();
vnemera 0:6ef3fd4921d7 1773
vnemera 0:6ef3fd4921d7 1774 main_cycle_add();
vnemera 0:6ef3fd4921d7 1775
vnemera 0:6ef3fd4921d7 1776 iLed++;
vnemera 0:6ef3fd4921d7 1777 if(iLed > 500) {
vnemera 0:6ef3fd4921d7 1778 led1 = !led1;
vnemera 0:6ef3fd4921d7 1779 iLed = 0;
vnemera 0:6ef3fd4921d7 1780 }
vnemera 0:6ef3fd4921d7 1781 wait_ms(1);
vnemera 0:6ef3fd4921d7 1782 }
vnemera 0:6ef3fd4921d7 1783 }
vnemera 0:6ef3fd4921d7 1784