Vizic Technologies / SMARTGPU

Dependents:   VariousSG BouncingBalls BounceBall House ... more

Committer:
emmanuelchio
Date:
Mon Sep 12 23:23:11 2011 +0000
Revision:
0:32fe54a88167
Child:
1:96ed067e95a6
SMARTGPU library Rev1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emmanuelchio 0:32fe54a88167 1
emmanuelchio 0:32fe54a88167 2 #include "mbed.h"
emmanuelchio 0:32fe54a88167 3 #include "SMARTGPU.h"
emmanuelchio 0:32fe54a88167 4
emmanuelchio 0:32fe54a88167 5 Serial SGSERIALPORT(TXpin, RXpin); //create the serial port which is connected to SMARTGPU serial port
emmanuelchio 0:32fe54a88167 6 DigitalOut Rst(resetPin);
emmanuelchio 0:32fe54a88167 7
emmanuelchio 0:32fe54a88167 8 // SMART GPU DEFAULT BAUD RATE: 9600bps
emmanuelchio 0:32fe54a88167 9 // Mbed default configured port for serial communication with SMARTGPU is p13 for TX, and p14 for RX, Resetpin =p15
emmanuelchio 0:32fe54a88167 10 SMARTGPU::SMARTGPU(){
emmanuelchio 0:32fe54a88167 11 init();
emmanuelchio 0:32fe54a88167 12 }
emmanuelchio 0:32fe54a88167 13
emmanuelchio 0:32fe54a88167 14 /********** high level commands, for the user! */
emmanuelchio 0:32fe54a88167 15 void SMARTGPU::init(){ //configure the mbed for SMARTGPU board
emmanuelchio 0:32fe54a88167 16 SGSERIALPORT.baud(9600);
emmanuelchio 0:32fe54a88167 17 Rst=1; //set the pin to 3.3v to avoid reset
emmanuelchio 0:32fe54a88167 18 }
emmanuelchio 0:32fe54a88167 19
emmanuelchio 0:32fe54a88167 20 void SMARTGPU::reset(){ //Reset the SMARTGPU board
emmanuelchio 0:32fe54a88167 21 Rst=0; //set the pin to GND to reset
emmanuelchio 0:32fe54a88167 22 wait_ms(500);
emmanuelchio 0:32fe54a88167 23 Rst=1; //set the pin to 3.3v to end reset
emmanuelchio 0:32fe54a88167 24 wait_ms(500);
emmanuelchio 0:32fe54a88167 25 }
emmanuelchio 0:32fe54a88167 26
emmanuelchio 0:32fe54a88167 27 unsigned char SMARTGPU::start(){ //Init the SMARTGPU
emmanuelchio 0:32fe54a88167 28 wait_ms(500);
emmanuelchio 0:32fe54a88167 29 SGSERIALPORT.putc('U');
emmanuelchio 0:32fe54a88167 30 wait_ms(1000);
emmanuelchio 0:32fe54a88167 31 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 32 }
emmanuelchio 0:32fe54a88167 33
emmanuelchio 0:32fe54a88167 34 unsigned char SMARTGPU::erase(){ //Erase the SMARTGPU screen
emmanuelchio 0:32fe54a88167 35 SGSERIALPORT.putc('E');
emmanuelchio 0:32fe54a88167 36 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 37 }
emmanuelchio 0:32fe54a88167 38
emmanuelchio 0:32fe54a88167 39 unsigned char SMARTGPU::sleep(unsigned char mode){ //Send SMARTGPU to sleep mode
emmanuelchio 0:32fe54a88167 40 SGSERIALPORT.putc('Z');
emmanuelchio 0:32fe54a88167 41 SGSERIALPORT.putc(mode);
emmanuelchio 0:32fe54a88167 42 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 43 }
emmanuelchio 0:32fe54a88167 44
emmanuelchio 0:32fe54a88167 45 unsigned char SMARTGPU::orientation(unsigned char side){ //Change display orientation
emmanuelchio 0:32fe54a88167 46 SGSERIALPORT.putc('O');
emmanuelchio 0:32fe54a88167 47 SGSERIALPORT.putc(side);
emmanuelchio 0:32fe54a88167 48 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 49 }
emmanuelchio 0:32fe54a88167 50
emmanuelchio 0:32fe54a88167 51 unsigned char SMARTGPU::bright(unsigned char val){ //Change display brightness
emmanuelchio 0:32fe54a88167 52 SGSERIALPORT.putc('V');
emmanuelchio 0:32fe54a88167 53 SGSERIALPORT.putc(val);
emmanuelchio 0:32fe54a88167 54 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 55 }
emmanuelchio 0:32fe54a88167 56
emmanuelchio 0:32fe54a88167 57 unsigned char SMARTGPU::baudChange(unsigned long val){ //Change baud rate of arduino and SMARTGPU board
emmanuelchio 0:32fe54a88167 58 unsigned char aux;
emmanuelchio 0:32fe54a88167 59
emmanuelchio 0:32fe54a88167 60 switch(val){
emmanuelchio 0:32fe54a88167 61 case 9600:
emmanuelchio 0:32fe54a88167 62 aux=0;
emmanuelchio 0:32fe54a88167 63 break;
emmanuelchio 0:32fe54a88167 64 case 19200:
emmanuelchio 0:32fe54a88167 65 aux=1;
emmanuelchio 0:32fe54a88167 66 break;
emmanuelchio 0:32fe54a88167 67 case 57600:
emmanuelchio 0:32fe54a88167 68 aux=2;
emmanuelchio 0:32fe54a88167 69 break;
emmanuelchio 0:32fe54a88167 70 case 115200:
emmanuelchio 0:32fe54a88167 71 aux=3;
emmanuelchio 0:32fe54a88167 72 break;
emmanuelchio 0:32fe54a88167 73 case 256000:
emmanuelchio 0:32fe54a88167 74 aux=4;
emmanuelchio 0:32fe54a88167 75 break;
emmanuelchio 0:32fe54a88167 76 case 500000:
emmanuelchio 0:32fe54a88167 77 aux=5;
emmanuelchio 0:32fe54a88167 78 break;
emmanuelchio 0:32fe54a88167 79 case 1000000:
emmanuelchio 0:32fe54a88167 80 aux=6;
emmanuelchio 0:32fe54a88167 81 break;
emmanuelchio 0:32fe54a88167 82 case 2000000:
emmanuelchio 0:32fe54a88167 83 aux=7;
emmanuelchio 0:32fe54a88167 84 break;
emmanuelchio 0:32fe54a88167 85 default:
emmanuelchio 0:32fe54a88167 86 return 'F';
emmanuelchio 0:32fe54a88167 87 break;
emmanuelchio 0:32fe54a88167 88 }
emmanuelchio 0:32fe54a88167 89 SGSERIALPORT.putc('X');
emmanuelchio 0:32fe54a88167 90 SGSERIALPORT.putc(aux);
emmanuelchio 0:32fe54a88167 91 aux=SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 92 if(aux=='O'){
emmanuelchio 0:32fe54a88167 93 wait_ms(150);
emmanuelchio 0:32fe54a88167 94 SGSERIALPORT.baud(val);
emmanuelchio 0:32fe54a88167 95 wait_ms(200);
emmanuelchio 0:32fe54a88167 96 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 97 }else{
emmanuelchio 0:32fe54a88167 98 return aux;
emmanuelchio 0:32fe54a88167 99 }
emmanuelchio 0:32fe54a88167 100 }
emmanuelchio 0:32fe54a88167 101
emmanuelchio 0:32fe54a88167 102 unsigned char SMARTGPU::digitalOut(unsigned char number, unsigned char val ){ //Set Digital out pins to a logic value
emmanuelchio 0:32fe54a88167 103 SGSERIALPORT.putc('D');
emmanuelchio 0:32fe54a88167 104 SGSERIALPORT.putc(number);
emmanuelchio 0:32fe54a88167 105 SGSERIALPORT.putc(val);
emmanuelchio 0:32fe54a88167 106 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 107 }
emmanuelchio 0:32fe54a88167 108
emmanuelchio 0:32fe54a88167 109 unsigned char SMARTGPU::setScreenBackground(int colour){ //Change the default screen background colour for erase function
emmanuelchio 0:32fe54a88167 110 SGSERIALPORT.putc('B');
emmanuelchio 0:32fe54a88167 111 SGSERIALPORT.putc(colour>>8);
emmanuelchio 0:32fe54a88167 112 SGSERIALPORT.putc(colour);
emmanuelchio 0:32fe54a88167 113 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 114 }
emmanuelchio 0:32fe54a88167 115
emmanuelchio 0:32fe54a88167 116 unsigned char SMARTGPU::setTextBackground(int colour){ //Set the default text background colour for letters and strings
emmanuelchio 0:32fe54a88167 117 SGSERIALPORT.putc('A');
emmanuelchio 0:32fe54a88167 118 SGSERIALPORT.putc(colour>>8);
emmanuelchio 0:32fe54a88167 119 SGSERIALPORT.putc(colour);
emmanuelchio 0:32fe54a88167 120 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 121 }
emmanuelchio 0:32fe54a88167 122
emmanuelchio 0:32fe54a88167 123 unsigned char SMARTGPU::memoryRead(int x1, int y1, int x2, int y2, char buffer[]){ //Read the internal memory of the SMARTGPU, This command returns 24bit pixels (3 bytes)
emmanuelchio 0:32fe54a88167 124 unsigned int i,j,k=0;
emmanuelchio 0:32fe54a88167 125
emmanuelchio 0:32fe54a88167 126 SGSERIALPORT.putc('M');
emmanuelchio 0:32fe54a88167 127 SGSERIALPORT.putc(x1>>8);
emmanuelchio 0:32fe54a88167 128 SGSERIALPORT.putc(x1);
emmanuelchio 0:32fe54a88167 129 SGSERIALPORT.putc(y1>>8);
emmanuelchio 0:32fe54a88167 130 SGSERIALPORT.putc(y1);
emmanuelchio 0:32fe54a88167 131 SGSERIALPORT.putc(x2>>8);
emmanuelchio 0:32fe54a88167 132 SGSERIALPORT.putc(x2);
emmanuelchio 0:32fe54a88167 133 SGSERIALPORT.putc(y2>>8);
emmanuelchio 0:32fe54a88167 134 SGSERIALPORT.putc(y2);
emmanuelchio 0:32fe54a88167 135
emmanuelchio 0:32fe54a88167 136 //receive all the pixels
emmanuelchio 0:32fe54a88167 137 for(j=0;j<=(y2-y1);j++){
emmanuelchio 0:32fe54a88167 138 for(i=0;i<=(x2-x1);i++){
emmanuelchio 0:32fe54a88167 139 buffer[k]=SGSERIALPORT.getc(); //Red
emmanuelchio 0:32fe54a88167 140 k++;
emmanuelchio 0:32fe54a88167 141 buffer[k]=SGSERIALPORT.getc(); //Green
emmanuelchio 0:32fe54a88167 142 k++;
emmanuelchio 0:32fe54a88167 143 buffer[k]=SGSERIALPORT.getc(); //Blue
emmanuelchio 0:32fe54a88167 144 k++;
emmanuelchio 0:32fe54a88167 145 }
emmanuelchio 0:32fe54a88167 146 }
emmanuelchio 0:32fe54a88167 147 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 148 }
emmanuelchio 0:32fe54a88167 149
emmanuelchio 0:32fe54a88167 150 unsigned char SMARTGPU::putPixel(int x, int y, int colour){ //Draw a pixel on the screen
emmanuelchio 0:32fe54a88167 151 SGSERIALPORT.putc('P');
emmanuelchio 0:32fe54a88167 152 SGSERIALPORT.putc(x>>8);
emmanuelchio 0:32fe54a88167 153 SGSERIALPORT.putc(x);
emmanuelchio 0:32fe54a88167 154 SGSERIALPORT.putc(y>>8);
emmanuelchio 0:32fe54a88167 155 SGSERIALPORT.putc(y);
emmanuelchio 0:32fe54a88167 156 SGSERIALPORT.putc(colour>>8);
emmanuelchio 0:32fe54a88167 157 SGSERIALPORT.putc(colour);
emmanuelchio 0:32fe54a88167 158 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 159 }
emmanuelchio 0:32fe54a88167 160
emmanuelchio 0:32fe54a88167 161 unsigned char SMARTGPU::drawLine(int x1, int y1, int x2, int y2, int colour){ //Draw a line on the screen
emmanuelchio 0:32fe54a88167 162 SGSERIALPORT.putc('L');
emmanuelchio 0:32fe54a88167 163 SGSERIALPORT.putc(x1>>8);
emmanuelchio 0:32fe54a88167 164 SGSERIALPORT.putc(x1);
emmanuelchio 0:32fe54a88167 165 SGSERIALPORT.putc(y1>>8);
emmanuelchio 0:32fe54a88167 166 SGSERIALPORT.putc(y1);
emmanuelchio 0:32fe54a88167 167 SGSERIALPORT.putc(x2>>8);
emmanuelchio 0:32fe54a88167 168 SGSERIALPORT.putc(x2);
emmanuelchio 0:32fe54a88167 169 SGSERIALPORT.putc(y2>>8);
emmanuelchio 0:32fe54a88167 170 SGSERIALPORT.putc(y2);
emmanuelchio 0:32fe54a88167 171 SGSERIALPORT.putc(colour>>8);
emmanuelchio 0:32fe54a88167 172 SGSERIALPORT.putc(colour);
emmanuelchio 0:32fe54a88167 173 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 174 }
emmanuelchio 0:32fe54a88167 175
emmanuelchio 0:32fe54a88167 176 unsigned char SMARTGPU::drawRectangle(int x1, int y1, int x2, int y2, int colour, unsigned char fill){ //Draw a rectangle on the screen
emmanuelchio 0:32fe54a88167 177 SGSERIALPORT.putc('R');
emmanuelchio 0:32fe54a88167 178 SGSERIALPORT.putc(x1>>8);
emmanuelchio 0:32fe54a88167 179 SGSERIALPORT.putc(x1);
emmanuelchio 0:32fe54a88167 180 SGSERIALPORT.putc(y1>>8);
emmanuelchio 0:32fe54a88167 181 SGSERIALPORT.putc(y1);
emmanuelchio 0:32fe54a88167 182 SGSERIALPORT.putc(x2>>8);
emmanuelchio 0:32fe54a88167 183 SGSERIALPORT.putc(x2);
emmanuelchio 0:32fe54a88167 184 SGSERIALPORT.putc(y2>>8);
emmanuelchio 0:32fe54a88167 185 SGSERIALPORT.putc(y2);
emmanuelchio 0:32fe54a88167 186 SGSERIALPORT.putc(colour>>8);
emmanuelchio 0:32fe54a88167 187 SGSERIALPORT.putc(colour);
emmanuelchio 0:32fe54a88167 188 SGSERIALPORT.putc(fill);
emmanuelchio 0:32fe54a88167 189 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 190 }
emmanuelchio 0:32fe54a88167 191
emmanuelchio 0:32fe54a88167 192 unsigned char SMARTGPU::drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3, int colour, unsigned char fill){ //Draw a triangle on the screen
emmanuelchio 0:32fe54a88167 193 SGSERIALPORT.putc('T');
emmanuelchio 0:32fe54a88167 194 SGSERIALPORT.putc(x1>>8);
emmanuelchio 0:32fe54a88167 195 SGSERIALPORT.putc(x1);
emmanuelchio 0:32fe54a88167 196 SGSERIALPORT.putc(y1>>8);
emmanuelchio 0:32fe54a88167 197 SGSERIALPORT.putc(y1);
emmanuelchio 0:32fe54a88167 198 SGSERIALPORT.putc(x2>>8);
emmanuelchio 0:32fe54a88167 199 SGSERIALPORT.putc(x2);
emmanuelchio 0:32fe54a88167 200 SGSERIALPORT.putc(y2>>8);
emmanuelchio 0:32fe54a88167 201 SGSERIALPORT.putc(y2);
emmanuelchio 0:32fe54a88167 202 SGSERIALPORT.putc(x3>>8);
emmanuelchio 0:32fe54a88167 203 SGSERIALPORT.putc(x3);
emmanuelchio 0:32fe54a88167 204 SGSERIALPORT.putc(y3>>8);
emmanuelchio 0:32fe54a88167 205 SGSERIALPORT.putc(y3);
emmanuelchio 0:32fe54a88167 206 SGSERIALPORT.putc(colour>>8);
emmanuelchio 0:32fe54a88167 207 SGSERIALPORT.putc(colour);
emmanuelchio 0:32fe54a88167 208 SGSERIALPORT.putc(fill);
emmanuelchio 0:32fe54a88167 209 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 210 }
emmanuelchio 0:32fe54a88167 211
emmanuelchio 0:32fe54a88167 212 unsigned char SMARTGPU::drawCircle(int x, int y, int radius, int colour, unsigned char fill){ //Draw a circle on the screen
emmanuelchio 0:32fe54a88167 213 SGSERIALPORT.putc('C');
emmanuelchio 0:32fe54a88167 214 SGSERIALPORT.putc(x>>8);
emmanuelchio 0:32fe54a88167 215 SGSERIALPORT.putc(x);
emmanuelchio 0:32fe54a88167 216 SGSERIALPORT.putc(y>>8);
emmanuelchio 0:32fe54a88167 217 SGSERIALPORT.putc(y);
emmanuelchio 0:32fe54a88167 218 SGSERIALPORT.putc(radius>>8);
emmanuelchio 0:32fe54a88167 219 SGSERIALPORT.putc(radius);
emmanuelchio 0:32fe54a88167 220 SGSERIALPORT.putc(colour>>8);
emmanuelchio 0:32fe54a88167 221 SGSERIALPORT.putc(colour);
emmanuelchio 0:32fe54a88167 222 SGSERIALPORT.putc(fill);
emmanuelchio 0:32fe54a88167 223 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 224 }
emmanuelchio 0:32fe54a88167 225
emmanuelchio 0:32fe54a88167 226 unsigned char SMARTGPU::putLetter(int x, int y, int colour, unsigned char font, unsigned char fill, unsigned char letter){ //Draw a letter on the screen
emmanuelchio 0:32fe54a88167 227
emmanuelchio 0:32fe54a88167 228 SGSERIALPORT.putc('W');
emmanuelchio 0:32fe54a88167 229 SGSERIALPORT.putc(x>>8);
emmanuelchio 0:32fe54a88167 230 SGSERIALPORT.putc(x);
emmanuelchio 0:32fe54a88167 231 SGSERIALPORT.putc(y>>8);
emmanuelchio 0:32fe54a88167 232 SGSERIALPORT.putc(y);
emmanuelchio 0:32fe54a88167 233 SGSERIALPORT.putc(colour>>8);
emmanuelchio 0:32fe54a88167 234 SGSERIALPORT.putc(colour);
emmanuelchio 0:32fe54a88167 235 SGSERIALPORT.putc(font);
emmanuelchio 0:32fe54a88167 236 SGSERIALPORT.putc(fill);
emmanuelchio 0:32fe54a88167 237 SGSERIALPORT.putc(letter);
emmanuelchio 0:32fe54a88167 238 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 239 }
emmanuelchio 0:32fe54a88167 240
emmanuelchio 0:32fe54a88167 241 unsigned char SMARTGPU::string(int x1, int y1, int x2, int y2, int colour, unsigned char font, unsigned char fill, char text[]){ //Draw a string on the screen
emmanuelchio 0:32fe54a88167 242 int counter=0;
emmanuelchio 0:32fe54a88167 243
emmanuelchio 0:32fe54a88167 244 SGSERIALPORT.putc('S');
emmanuelchio 0:32fe54a88167 245 SGSERIALPORT.putc('N'); //not SD
emmanuelchio 0:32fe54a88167 246 SGSERIALPORT.putc(x1>>8);
emmanuelchio 0:32fe54a88167 247 SGSERIALPORT.putc(x1);
emmanuelchio 0:32fe54a88167 248 SGSERIALPORT.putc(y1>>8);
emmanuelchio 0:32fe54a88167 249 SGSERIALPORT.putc(y1);
emmanuelchio 0:32fe54a88167 250 SGSERIALPORT.putc(x2>>8);
emmanuelchio 0:32fe54a88167 251 SGSERIALPORT.putc(x2);
emmanuelchio 0:32fe54a88167 252 SGSERIALPORT.putc(y2>>8);
emmanuelchio 0:32fe54a88167 253 SGSERIALPORT.putc(y2);
emmanuelchio 0:32fe54a88167 254 SGSERIALPORT.putc(colour>>8);
emmanuelchio 0:32fe54a88167 255 SGSERIALPORT.putc(colour);
emmanuelchio 0:32fe54a88167 256 SGSERIALPORT.putc(font);
emmanuelchio 0:32fe54a88167 257 SGSERIALPORT.putc(fill);
emmanuelchio 0:32fe54a88167 258 while(1){
emmanuelchio 0:32fe54a88167 259 SGSERIALPORT.putc(text[counter]);
emmanuelchio 0:32fe54a88167 260 if(text[counter]==0x00){
emmanuelchio 0:32fe54a88167 261 break;
emmanuelchio 0:32fe54a88167 262 }
emmanuelchio 0:32fe54a88167 263 counter++;
emmanuelchio 0:32fe54a88167 264 }
emmanuelchio 0:32fe54a88167 265 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 266 }
emmanuelchio 0:32fe54a88167 267
emmanuelchio 0:32fe54a88167 268 unsigned char SMARTGPU::stringSD(int x1, int y1, int x2, int y2, int colour, unsigned char font, unsigned char fill, int BS, int BR, char name[]){ //Draw a String from a text file contained on the micro SD card on the screen
emmanuelchio 0:32fe54a88167 269 unsigned char counter=0;
emmanuelchio 0:32fe54a88167 270
emmanuelchio 0:32fe54a88167 271 SGSERIALPORT.putc('S');
emmanuelchio 0:32fe54a88167 272 SGSERIALPORT.putc('S'); //from SD
emmanuelchio 0:32fe54a88167 273 SGSERIALPORT.putc(x1>>8);
emmanuelchio 0:32fe54a88167 274 SGSERIALPORT.putc(x1);
emmanuelchio 0:32fe54a88167 275 SGSERIALPORT.putc(y1>>8);
emmanuelchio 0:32fe54a88167 276 SGSERIALPORT.putc(y1);
emmanuelchio 0:32fe54a88167 277 SGSERIALPORT.putc(x2>>8);
emmanuelchio 0:32fe54a88167 278 SGSERIALPORT.putc(x2);
emmanuelchio 0:32fe54a88167 279 SGSERIALPORT.putc(y2>>8);
emmanuelchio 0:32fe54a88167 280 SGSERIALPORT.putc(y2);
emmanuelchio 0:32fe54a88167 281 SGSERIALPORT.putc(colour>>8);
emmanuelchio 0:32fe54a88167 282 SGSERIALPORT.putc(colour);
emmanuelchio 0:32fe54a88167 283 SGSERIALPORT.putc(font);
emmanuelchio 0:32fe54a88167 284 SGSERIALPORT.putc(fill);
emmanuelchio 0:32fe54a88167 285 SGSERIALPORT.putc(BS>>8);
emmanuelchio 0:32fe54a88167 286 SGSERIALPORT.putc(BS);
emmanuelchio 0:32fe54a88167 287 SGSERIALPORT.putc(BR>>8);
emmanuelchio 0:32fe54a88167 288 SGSERIALPORT.putc(BR);
emmanuelchio 0:32fe54a88167 289 while(1){
emmanuelchio 0:32fe54a88167 290 SGSERIALPORT.putc(name[counter]);
emmanuelchio 0:32fe54a88167 291 if(name[counter]==0x00){
emmanuelchio 0:32fe54a88167 292 break;
emmanuelchio 0:32fe54a88167 293 }
emmanuelchio 0:32fe54a88167 294 counter++;
emmanuelchio 0:32fe54a88167 295 }
emmanuelchio 0:32fe54a88167 296 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 297 }
emmanuelchio 0:32fe54a88167 298
emmanuelchio 0:32fe54a88167 299 unsigned char SMARTGPU::icon(int x1, int y1, int x2, int y2, char icon[]){ //Send and image or icon pixel by pixel to SMARTGPU, 16bit(2 bytes) each pixel RGB565
emmanuelchio 0:32fe54a88167 300 unsigned int i,j,k=0;
emmanuelchio 0:32fe54a88167 301
emmanuelchio 0:32fe54a88167 302 SGSERIALPORT.putc('I');
emmanuelchio 0:32fe54a88167 303 SGSERIALPORT.putc('N'); //not SD
emmanuelchio 0:32fe54a88167 304 SGSERIALPORT.putc(x1>>8);
emmanuelchio 0:32fe54a88167 305 SGSERIALPORT.putc(x1);
emmanuelchio 0:32fe54a88167 306 SGSERIALPORT.putc(y1>>8);
emmanuelchio 0:32fe54a88167 307 SGSERIALPORT.putc(y1);
emmanuelchio 0:32fe54a88167 308 SGSERIALPORT.putc(x2>>8);
emmanuelchio 0:32fe54a88167 309 SGSERIALPORT.putc(x2);
emmanuelchio 0:32fe54a88167 310 SGSERIALPORT.putc(y2>>8);
emmanuelchio 0:32fe54a88167 311 SGSERIALPORT.putc(y2);
emmanuelchio 0:32fe54a88167 312
emmanuelchio 0:32fe54a88167 313 //Send icon buffer pixel by pixel
emmanuelchio 0:32fe54a88167 314 for(j=0;j<=(y2-y1);j++){
emmanuelchio 0:32fe54a88167 315 for(i=0;i<=(x2-x1);i++){
emmanuelchio 0:32fe54a88167 316 SGSERIALPORT.putc(icon[k]);
emmanuelchio 0:32fe54a88167 317 k++;
emmanuelchio 0:32fe54a88167 318 }
emmanuelchio 0:32fe54a88167 319 }
emmanuelchio 0:32fe54a88167 320 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 321 }
emmanuelchio 0:32fe54a88167 322
emmanuelchio 0:32fe54a88167 323 unsigned char SMARTGPU::imageSD(int x, int y, char name[]){ //Draw an Image contained on the micro SD card on the screen, top left corner coordinates
emmanuelchio 0:32fe54a88167 324 unsigned char counter=0;
emmanuelchio 0:32fe54a88167 325
emmanuelchio 0:32fe54a88167 326 SGSERIALPORT.putc('I');
emmanuelchio 0:32fe54a88167 327 SGSERIALPORT.putc('S'); //from SD
emmanuelchio 0:32fe54a88167 328 SGSERIALPORT.putc(x>>8);
emmanuelchio 0:32fe54a88167 329 SGSERIALPORT.putc(x);
emmanuelchio 0:32fe54a88167 330 SGSERIALPORT.putc(y>>8);
emmanuelchio 0:32fe54a88167 331 SGSERIALPORT.putc(y);
emmanuelchio 0:32fe54a88167 332 while(1){
emmanuelchio 0:32fe54a88167 333 SGSERIALPORT.putc(name[counter]);
emmanuelchio 0:32fe54a88167 334 if(name[counter]==0x00){
emmanuelchio 0:32fe54a88167 335 break;
emmanuelchio 0:32fe54a88167 336 }
emmanuelchio 0:32fe54a88167 337 counter++;
emmanuelchio 0:32fe54a88167 338 }
emmanuelchio 0:32fe54a88167 339 return SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 340 }
emmanuelchio 0:32fe54a88167 341
emmanuelchio 0:32fe54a88167 342 unsigned char SMARTGPU::touchScreen(int buffer[]){ //Ask for a touch on the screen, if return=1, touch coordinates are stored on the buffer[]
emmanuelchio 0:32fe54a88167 343
emmanuelchio 0:32fe54a88167 344 SGSERIALPORT.putc('G');
emmanuelchio 0:32fe54a88167 345 buffer[0]=SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 346 buffer[0]=buffer[0]<<8;
emmanuelchio 0:32fe54a88167 347 buffer[0]|=SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 348 buffer[1]=SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 349 buffer[1]=buffer[1]<<8;
emmanuelchio 0:32fe54a88167 350 buffer[1]|=SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 351 SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 352 if(buffer[0]<0x0200){
emmanuelchio 0:32fe54a88167 353 return 1;
emmanuelchio 0:32fe54a88167 354 }else{
emmanuelchio 0:32fe54a88167 355 return 0;
emmanuelchio 0:32fe54a88167 356 }
emmanuelchio 0:32fe54a88167 357 }
emmanuelchio 0:32fe54a88167 358
emmanuelchio 0:32fe54a88167 359 unsigned char SMARTGPU::touchIcon(char buffer[]){ //Ask for a touch on the icons of the screen, if return=1, icon name is stored on the buffer[]
emmanuelchio 0:32fe54a88167 360
emmanuelchio 0:32fe54a88167 361 SGSERIALPORT.putc('G');
emmanuelchio 0:32fe54a88167 362 buffer[0]=SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 363 buffer[1]=SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 364 buffer[2]=SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 365 buffer[3]=SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 366 SGSERIALPORT.getc();
emmanuelchio 0:32fe54a88167 367 if(!(buffer[0]<0x02) & (buffer[0]!=0x4E)){
emmanuelchio 0:32fe54a88167 368 return 1;
emmanuelchio 0:32fe54a88167 369 }else{
emmanuelchio 0:32fe54a88167 370 return 0;
emmanuelchio 0:32fe54a88167 371 }
emmanuelchio 0:32fe54a88167 372 }