![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
rev.1
Dependencies: RA8875 SDFileSystem mbed
main.cpp@0:6ef3fd4921d7, 2017-02-17 (annotated)
- Committer:
- vnemera
- Date:
- Fri Feb 17 16:53:53 2017 +0000
- Revision:
- 0:6ef3fd4921d7
rev.1
Who changed what in which revision?
User | Revision | Line number | New 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 |