SMARTGPU intelligent embedded graphics processor, this library helps to communicate mBed with SMARTGPU dev board 2.4\" touch, excellent serial board that only require TX,RX, and Reset pin to mbed. Powerfull graphics and text processor with universal 4GB micro SD (FAT windows) format compatible. For detailed information visit: http://www.vizictechnologies.com/#/desarrollo/4554296549 www.vizictechnologies.com

Dependents:   VariousSG BouncingBalls BounceBall House ... more

Revision:
1:96ed067e95a6
Parent:
0:32fe54a88167
--- a/SMARTGPU.cpp	Mon Sep 12 23:23:11 2011 +0000
+++ b/SMARTGPU.cpp	Tue Sep 13 04:04:20 2011 +0000
@@ -1,57 +1,54 @@
  
 #include "mbed.h"
 #include "SMARTGPU.h"
-
-Serial SGSERIALPORT(TXpin, RXpin);  //create the serial port which is connected to SMARTGPU serial port
-DigitalOut Rst(resetPin);
-
+        
 // SMART GPU DEFAULT BAUD RATE: 9600bps
-// Mbed default configured port for serial communication with SMARTGPU is p13 for TX, and p14 for RX, Resetpin =p15
-SMARTGPU::SMARTGPU(){    
+//It shoud be used like this : SMARTGPU lcd(p13,p14,p15); for serial communication with SMARTGPU
+SMARTGPU::SMARTGPU(PinName TXPin, PinName RXPin, PinName resetPin): _serialSMARTGPU(TXPin,RXPin), _resetPin(resetPin){    
     init();
 }
 
 /********** high level commands, for the user! */
 void SMARTGPU::init(){         //configure the mbed for SMARTGPU board    
-    SGSERIALPORT.baud(9600);
-    Rst=1;                     //set the pin to 3.3v to avoid reset 
+    _serialSMARTGPU.baud(9600);
+    _resetPin=1;               //set the pin to 3.3v to avoid reset 
 }
  
 void SMARTGPU::reset(){        //Reset the SMARTGPU board
-    Rst=0;                     //set the pin to GND to reset 
+    _resetPin=0;               //set the pin to GND to reset 
     wait_ms(500);
-    Rst=1;                     //set the pin to 3.3v to end reset
+    _resetPin=1;               //set the pin to 3.3v to end reset
     wait_ms(500);    
 }
 
 unsigned char SMARTGPU::start(){           //Init the SMARTGPU
   wait_ms(500); 
-  SGSERIALPORT.putc('U');  
+  _serialSMARTGPU.putc('U');  
   wait_ms(1000);
-  return SGSERIALPORT.getc();
+  return _serialSMARTGPU.getc();
 }
 
 unsigned char SMARTGPU::erase(){          //Erase the SMARTGPU screen
-  SGSERIALPORT.putc('E');  
-  return SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('E');  
+  return _serialSMARTGPU.getc();
 }
 
 unsigned char SMARTGPU::sleep(unsigned char mode){       //Send SMARTGPU to sleep mode
-  SGSERIALPORT.putc('Z'); 
-  SGSERIALPORT.putc(mode);
-  return SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('Z'); 
+  _serialSMARTGPU.putc(mode);
+  return _serialSMARTGPU.getc();
 }
 
 unsigned char SMARTGPU::orientation(unsigned char side){       //Change display orientation
-  SGSERIALPORT.putc('O'); 
-  SGSERIALPORT.putc(side);
-  return SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('O'); 
+  _serialSMARTGPU.putc(side);
+  return _serialSMARTGPU.getc();
 }
 
 unsigned char SMARTGPU::bright(unsigned char val){       //Change display brightness
-  SGSERIALPORT.putc('V'); 
-  SGSERIALPORT.putc(val); 
-  return SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('V'); 
+  _serialSMARTGPU.putc(val); 
+  return _serialSMARTGPU.getc();
 }
 
 unsigned char SMARTGPU::baudChange(unsigned long val){       //Change baud rate of arduino and SMARTGPU board
@@ -84,271 +81,270 @@
     break;
     default:
       return 'F';
-    break;
   } 
-  SGSERIALPORT.putc('X');
-  SGSERIALPORT.putc(aux);  
-  aux=SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('X');
+  _serialSMARTGPU.putc(aux);  
+  aux=_serialSMARTGPU.getc();
   if(aux=='O'){
     wait_ms(150);
-    SGSERIALPORT.baud(val);
+    _serialSMARTGPU.baud(val);
     wait_ms(200);
-    return SGSERIALPORT.getc();
+    return _serialSMARTGPU.getc();
   }else{
     return aux;
   }
 }
 
 unsigned char SMARTGPU::digitalOut(unsigned char number, unsigned char val ){       //Set Digital out pins to a logic value
-  SGSERIALPORT.putc('D'); 
-  SGSERIALPORT.putc(number);
-  SGSERIALPORT.putc(val); 
-  return SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('D'); 
+  _serialSMARTGPU.putc(number);
+  _serialSMARTGPU.putc(val); 
+  return _serialSMARTGPU.getc();
 }
 
 unsigned char SMARTGPU::setScreenBackground(int colour){       //Change the default screen background colour for erase function
-  SGSERIALPORT.putc('B'); 
-  SGSERIALPORT.putc(colour>>8);
-  SGSERIALPORT.putc(colour);  
-  return SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('B'); 
+  _serialSMARTGPU.putc(colour>>8);
+  _serialSMARTGPU.putc(colour);  
+  return _serialSMARTGPU.getc();
 }
 
 unsigned char SMARTGPU::setTextBackground(int colour){       //Set the default text background colour for letters and strings
-  SGSERIALPORT.putc('A'); 
-  SGSERIALPORT.putc(colour>>8);
-  SGSERIALPORT.putc(colour);  
-  return SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('A'); 
+  _serialSMARTGPU.putc(colour>>8);
+  _serialSMARTGPU.putc(colour);  
+  return _serialSMARTGPU.getc();
 }
 
 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)
   unsigned int i,j,k=0;
   
-  SGSERIALPORT.putc('M'); 
-  SGSERIALPORT.putc(x1>>8); 
-  SGSERIALPORT.putc(x1);
-  SGSERIALPORT.putc(y1>>8);
-  SGSERIALPORT.putc(y1);
-  SGSERIALPORT.putc(x2>>8); 
-  SGSERIALPORT.putc(x2);
-  SGSERIALPORT.putc(y2>>8);
-  SGSERIALPORT.putc(y2); 
+  _serialSMARTGPU.putc('M'); 
+  _serialSMARTGPU.putc(x1>>8); 
+  _serialSMARTGPU.putc(x1);
+  _serialSMARTGPU.putc(y1>>8);
+  _serialSMARTGPU.putc(y1);
+  _serialSMARTGPU.putc(x2>>8); 
+  _serialSMARTGPU.putc(x2);
+  _serialSMARTGPU.putc(y2>>8);
+  _serialSMARTGPU.putc(y2); 
 
   //receive all the pixels
   for(j=0;j<=(y2-y1);j++){
     for(i=0;i<=(x2-x1);i++){
-        buffer[k]=SGSERIALPORT.getc(); //Red
+        buffer[k]=_serialSMARTGPU.getc(); //Red
         k++;
-        buffer[k]=SGSERIALPORT.getc(); //Green
+        buffer[k]=_serialSMARTGPU.getc(); //Green
         k++;
-        buffer[k]=SGSERIALPORT.getc(); //Blue
+        buffer[k]=_serialSMARTGPU.getc(); //Blue
         k++;
     }    
   } 
-  return SGSERIALPORT.getc();  
+  return _serialSMARTGPU.getc();  
 }
 
 unsigned char SMARTGPU::putPixel(int x, int y, int colour){       //Draw a pixel on the screen
-  SGSERIALPORT.putc('P'); 
-  SGSERIALPORT.putc(x>>8); 
-  SGSERIALPORT.putc(x);
-  SGSERIALPORT.putc(y>>8);
-  SGSERIALPORT.putc(y);
-  SGSERIALPORT.putc(colour>>8);
-  SGSERIALPORT.putc(colour);
-  return SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('P'); 
+  _serialSMARTGPU.putc(x>>8); 
+  _serialSMARTGPU.putc(x);
+  _serialSMARTGPU.putc(y>>8);
+  _serialSMARTGPU.putc(y);
+  _serialSMARTGPU.putc(colour>>8);
+  _serialSMARTGPU.putc(colour);
+  return _serialSMARTGPU.getc();
 }
 
 unsigned char SMARTGPU::drawLine(int x1, int y1, int x2, int y2, int colour){       //Draw a line on the screen
-  SGSERIALPORT.putc('L'); 
-  SGSERIALPORT.putc(x1>>8); 
-  SGSERIALPORT.putc(x1);
-  SGSERIALPORT.putc(y1>>8);
-  SGSERIALPORT.putc(y1);
-  SGSERIALPORT.putc(x2>>8); 
-  SGSERIALPORT.putc(x2);
-  SGSERIALPORT.putc(y2>>8);
-  SGSERIALPORT.putc(y2);  
-  SGSERIALPORT.putc(colour>>8);
-  SGSERIALPORT.putc(colour);
-  return SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('L'); 
+  _serialSMARTGPU.putc(x1>>8); 
+  _serialSMARTGPU.putc(x1);
+  _serialSMARTGPU.putc(y1>>8);
+  _serialSMARTGPU.putc(y1);
+  _serialSMARTGPU.putc(x2>>8); 
+  _serialSMARTGPU.putc(x2);
+  _serialSMARTGPU.putc(y2>>8);
+  _serialSMARTGPU.putc(y2);  
+  _serialSMARTGPU.putc(colour>>8);
+  _serialSMARTGPU.putc(colour);
+  return _serialSMARTGPU.getc();
 }
 
 unsigned char SMARTGPU::drawRectangle(int x1, int y1, int x2, int y2, int colour, unsigned char fill){       //Draw a rectangle on the screen
-  SGSERIALPORT.putc('R'); 
-  SGSERIALPORT.putc(x1>>8); 
-  SGSERIALPORT.putc(x1);
-  SGSERIALPORT.putc(y1>>8);
-  SGSERIALPORT.putc(y1);
-  SGSERIALPORT.putc(x2>>8); 
-  SGSERIALPORT.putc(x2);
-  SGSERIALPORT.putc(y2>>8);
-  SGSERIALPORT.putc(y2);  
-  SGSERIALPORT.putc(colour>>8);
-  SGSERIALPORT.putc(colour);
-  SGSERIALPORT.putc(fill);   
-  return SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('R'); 
+  _serialSMARTGPU.putc(x1>>8); 
+  _serialSMARTGPU.putc(x1);
+  _serialSMARTGPU.putc(y1>>8);
+  _serialSMARTGPU.putc(y1);
+  _serialSMARTGPU.putc(x2>>8); 
+  _serialSMARTGPU.putc(x2);
+  _serialSMARTGPU.putc(y2>>8);
+  _serialSMARTGPU.putc(y2);  
+  _serialSMARTGPU.putc(colour>>8);
+  _serialSMARTGPU.putc(colour);
+  _serialSMARTGPU.putc(fill);   
+  return _serialSMARTGPU.getc();
 }
 
 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
-  SGSERIALPORT.putc('T'); 
-  SGSERIALPORT.putc(x1>>8); 
-  SGSERIALPORT.putc(x1);
-  SGSERIALPORT.putc(y1>>8);
-  SGSERIALPORT.putc(y1);
-  SGSERIALPORT.putc(x2>>8); 
-  SGSERIALPORT.putc(x2);
-  SGSERIALPORT.putc(y2>>8);
-  SGSERIALPORT.putc(y2);  
-  SGSERIALPORT.putc(x3>>8); 
-  SGSERIALPORT.putc(x3);
-  SGSERIALPORT.putc(y3>>8);
-  SGSERIALPORT.putc(y3);    
-  SGSERIALPORT.putc(colour>>8);
-  SGSERIALPORT.putc(colour);
-  SGSERIALPORT.putc(fill);   
-  return SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('T'); 
+  _serialSMARTGPU.putc(x1>>8); 
+  _serialSMARTGPU.putc(x1);
+  _serialSMARTGPU.putc(y1>>8);
+  _serialSMARTGPU.putc(y1);
+  _serialSMARTGPU.putc(x2>>8); 
+  _serialSMARTGPU.putc(x2);
+  _serialSMARTGPU.putc(y2>>8);
+  _serialSMARTGPU.putc(y2);  
+  _serialSMARTGPU.putc(x3>>8); 
+  _serialSMARTGPU.putc(x3);
+  _serialSMARTGPU.putc(y3>>8);
+  _serialSMARTGPU.putc(y3);    
+  _serialSMARTGPU.putc(colour>>8);
+  _serialSMARTGPU.putc(colour);
+  _serialSMARTGPU.putc(fill);   
+  return _serialSMARTGPU.getc();
 }
 
 unsigned char SMARTGPU::drawCircle(int x, int y, int radius, int colour, unsigned char fill){       //Draw a circle on the screen
-  SGSERIALPORT.putc('C'); 
-  SGSERIALPORT.putc(x>>8); 
-  SGSERIALPORT.putc(x);
-  SGSERIALPORT.putc(y>>8);
-  SGSERIALPORT.putc(y);
-  SGSERIALPORT.putc(radius>>8);
-  SGSERIALPORT.putc(radius);
-  SGSERIALPORT.putc(colour>>8);
-  SGSERIALPORT.putc(colour);
-  SGSERIALPORT.putc(fill);   
-  return SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('C'); 
+  _serialSMARTGPU.putc(x>>8); 
+  _serialSMARTGPU.putc(x);
+  _serialSMARTGPU.putc(y>>8);
+  _serialSMARTGPU.putc(y);
+  _serialSMARTGPU.putc(radius>>8);
+  _serialSMARTGPU.putc(radius);
+  _serialSMARTGPU.putc(colour>>8);
+  _serialSMARTGPU.putc(colour);
+  _serialSMARTGPU.putc(fill);   
+  return _serialSMARTGPU.getc();
 }
 
 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
   
-  SGSERIALPORT.putc('W'); 
-  SGSERIALPORT.putc(x>>8); 
-  SGSERIALPORT.putc(x);
-  SGSERIALPORT.putc(y>>8);
-  SGSERIALPORT.putc(y);
-  SGSERIALPORT.putc(colour>>8);
-  SGSERIALPORT.putc(colour);
-  SGSERIALPORT.putc(font); 
-  SGSERIALPORT.putc(fill); 
-  SGSERIALPORT.putc(letter);  
-  return SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('W'); 
+  _serialSMARTGPU.putc(x>>8); 
+  _serialSMARTGPU.putc(x);
+  _serialSMARTGPU.putc(y>>8);
+  _serialSMARTGPU.putc(y);
+  _serialSMARTGPU.putc(colour>>8);
+  _serialSMARTGPU.putc(colour);
+  _serialSMARTGPU.putc(font); 
+  _serialSMARTGPU.putc(fill); 
+  _serialSMARTGPU.putc(letter);  
+  return _serialSMARTGPU.getc();
 }
 
 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
   int counter=0;
   
-  SGSERIALPORT.putc('S'); 
-  SGSERIALPORT.putc('N'); //not SD
-  SGSERIALPORT.putc(x1>>8); 
-  SGSERIALPORT.putc(x1);
-  SGSERIALPORT.putc(y1>>8);
-  SGSERIALPORT.putc(y1);
-  SGSERIALPORT.putc(x2>>8); 
-  SGSERIALPORT.putc(x2);
-  SGSERIALPORT.putc(y2>>8);
-  SGSERIALPORT.putc(y2);  
-  SGSERIALPORT.putc(colour>>8);
-  SGSERIALPORT.putc(colour);
-  SGSERIALPORT.putc(font); 
-  SGSERIALPORT.putc(fill); 
+  _serialSMARTGPU.putc('S'); 
+  _serialSMARTGPU.putc('N'); //not SD
+  _serialSMARTGPU.putc(x1>>8); 
+  _serialSMARTGPU.putc(x1);
+  _serialSMARTGPU.putc(y1>>8);
+  _serialSMARTGPU.putc(y1);
+  _serialSMARTGPU.putc(x2>>8); 
+  _serialSMARTGPU.putc(x2);
+  _serialSMARTGPU.putc(y2>>8);
+  _serialSMARTGPU.putc(y2);  
+  _serialSMARTGPU.putc(colour>>8);
+  _serialSMARTGPU.putc(colour);
+  _serialSMARTGPU.putc(font); 
+  _serialSMARTGPU.putc(fill); 
   while(1){
-    SGSERIALPORT.putc(text[counter]);
+    _serialSMARTGPU.putc(text[counter]);
     if(text[counter]==0x00){
       break;
     }    
     counter++;
   } 
-  return SGSERIALPORT.getc();
+  return _serialSMARTGPU.getc();
 }
 
 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
   unsigned char counter=0;
   
-  SGSERIALPORT.putc('S'); 
-  SGSERIALPORT.putc('S'); //from SD
-  SGSERIALPORT.putc(x1>>8); 
-  SGSERIALPORT.putc(x1);
-  SGSERIALPORT.putc(y1>>8);
-  SGSERIALPORT.putc(y1);
-  SGSERIALPORT.putc(x2>>8); 
-  SGSERIALPORT.putc(x2);
-  SGSERIALPORT.putc(y2>>8);
-  SGSERIALPORT.putc(y2);  
-  SGSERIALPORT.putc(colour>>8);
-  SGSERIALPORT.putc(colour);
-  SGSERIALPORT.putc(font); 
-  SGSERIALPORT.putc(fill); 
-  SGSERIALPORT.putc(BS>>8);
-  SGSERIALPORT.putc(BS);  
-  SGSERIALPORT.putc(BR>>8);
-  SGSERIALPORT.putc(BR);  
+  _serialSMARTGPU.putc('S'); 
+  _serialSMARTGPU.putc('S'); //from SD
+  _serialSMARTGPU.putc(x1>>8); 
+  _serialSMARTGPU.putc(x1);
+  _serialSMARTGPU.putc(y1>>8);
+  _serialSMARTGPU.putc(y1);
+  _serialSMARTGPU.putc(x2>>8); 
+  _serialSMARTGPU.putc(x2);
+  _serialSMARTGPU.putc(y2>>8);
+  _serialSMARTGPU.putc(y2);  
+  _serialSMARTGPU.putc(colour>>8);
+  _serialSMARTGPU.putc(colour);
+  _serialSMARTGPU.putc(font); 
+  _serialSMARTGPU.putc(fill); 
+  _serialSMARTGPU.putc(BS>>8);
+  _serialSMARTGPU.putc(BS);  
+  _serialSMARTGPU.putc(BR>>8);
+  _serialSMARTGPU.putc(BR);  
   while(1){
-    SGSERIALPORT.putc(name[counter]);
+    _serialSMARTGPU.putc(name[counter]);
     if(name[counter]==0x00){
       break;
     }    
     counter++;
   }
-  return SGSERIALPORT.getc();
+  return _serialSMARTGPU.getc();
 }
 
 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
   unsigned int i,j,k=0; 
   
-  SGSERIALPORT.putc('I'); 
-  SGSERIALPORT.putc('N'); //not SD
-  SGSERIALPORT.putc(x1>>8); 
-  SGSERIALPORT.putc(x1);
-  SGSERIALPORT.putc(y1>>8);
-  SGSERIALPORT.putc(y1);
-  SGSERIALPORT.putc(x2>>8); 
-  SGSERIALPORT.putc(x2);
-  SGSERIALPORT.putc(y2>>8);
-  SGSERIALPORT.putc(y2);
+  _serialSMARTGPU.putc('I'); 
+  _serialSMARTGPU.putc('N'); //not SD
+  _serialSMARTGPU.putc(x1>>8); 
+  _serialSMARTGPU.putc(x1);
+  _serialSMARTGPU.putc(y1>>8);
+  _serialSMARTGPU.putc(y1);
+  _serialSMARTGPU.putc(x2>>8); 
+  _serialSMARTGPU.putc(x2);
+  _serialSMARTGPU.putc(y2>>8);
+  _serialSMARTGPU.putc(y2);
   
   //Send icon buffer pixel by pixel
   for(j=0;j<=(y2-y1);j++){
     for(i=0;i<=(x2-x1);i++){
-        SGSERIALPORT.putc(icon[k]);
+        _serialSMARTGPU.putc(icon[k]);
         k++;
     }
   } 
-  return SGSERIALPORT.getc();  
+  return _serialSMARTGPU.getc();  
 }
 
 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
   unsigned char counter=0;
   
-  SGSERIALPORT.putc('I'); 
-  SGSERIALPORT.putc('S'); //from SD
-  SGSERIALPORT.putc(x>>8); 
-  SGSERIALPORT.putc(x);
-  SGSERIALPORT.putc(y>>8);
-  SGSERIALPORT.putc(y);
+  _serialSMARTGPU.putc('I'); 
+  _serialSMARTGPU.putc('S'); //from SD
+  _serialSMARTGPU.putc(x>>8); 
+  _serialSMARTGPU.putc(x);
+  _serialSMARTGPU.putc(y>>8);
+  _serialSMARTGPU.putc(y);
   while(1){
-    SGSERIALPORT.putc(name[counter]);
+    _serialSMARTGPU.putc(name[counter]);
     if(name[counter]==0x00){
       break;
     }    
     counter++;
   }
-  return SGSERIALPORT.getc();
+  return _serialSMARTGPU.getc();
 }
 
 unsigned char SMARTGPU::touchScreen(int buffer[]){          //Ask for a touch on the screen, if return=1, touch coordinates are stored on the buffer[]
   
-  SGSERIALPORT.putc('G');
-  buffer[0]=SGSERIALPORT.getc();
+  _serialSMARTGPU.putc('G');
+  buffer[0]=_serialSMARTGPU.getc();
   buffer[0]=buffer[0]<<8;
-  buffer[0]|=SGSERIALPORT.getc();
-  buffer[1]=SGSERIALPORT.getc();
+  buffer[0]|=_serialSMARTGPU.getc();
+  buffer[1]=_serialSMARTGPU.getc();
   buffer[1]=buffer[1]<<8;
-  buffer[1]|=SGSERIALPORT.getc();
-  SGSERIALPORT.getc();  
+  buffer[1]|=_serialSMARTGPU.getc();
+  _serialSMARTGPU.getc();  
   if(buffer[0]<0x0200){
     return 1;
   }else{
@@ -358,12 +354,12 @@
 
 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[]
   
-  SGSERIALPORT.putc('G');
-  buffer[0]=SGSERIALPORT.getc();
-  buffer[1]=SGSERIALPORT.getc();
-  buffer[2]=SGSERIALPORT.getc();
-  buffer[3]=SGSERIALPORT.getc();
-  SGSERIALPORT.getc();  
+  _serialSMARTGPU.putc('G');
+  buffer[0]=_serialSMARTGPU.getc();
+  buffer[1]=_serialSMARTGPU.getc();
+  buffer[2]=_serialSMARTGPU.getc();
+  buffer[3]=_serialSMARTGPU.getc();
+  _serialSMARTGPU.getc();  
   if(!(buffer[0]<0x02) & (buffer[0]!=0x4E)){
     return 1;
   }else{