Modifications in 4DGL library. Added CDU_hw_sw.h for version info. Added pins.h for hardware pin remapping
Dependencies: 4DGL-UC MODSERIAL mbed mbos
Fork of CDU_Mbed_30 by
display.cpp
- Committer:
- WillemBraat
- Date:
- 2014-10-10
- Revision:
- 21:f348e6f0f7d4
- Parent:
- 20:150afde94910
File content as of revision 21:f348e6f0f7d4:
//Display control functions -- #include "mbed.h" #include "TFT_4DGL.h" #include "display.h" #include <string> #include "pins.h" using namespace std; extern string CDU_Hardware(); extern string CDU_Firmware(); extern string CDU_Compile(); extern string CDU_MAC(); extern string CDU_IP(); DigitalOut VGA_SOURCE( VGA_SOURCE_SELECT ); //control line for video switch between INT and EXT video DigitalOut VGA_SELECT( VGA_ON_OFF ); //control line to select/deselect video switch /* ===================================================== SGC (Serial Graphics Controller) PLATFORM OUTPUT FILE ===================================================== ******************************************************* * Must set 'New image format' for usage on Picaso SGC * * Data: * * 0x59, 0x06, 0x00 * * 4DSL command: * * Control(6,0) * ******************************************************* --------------------------------------------------------------------------------------- File "logo_flyengravity.jpg" (logo_flyengravity.jpg) Sector Address 0x000000 X = 0 Y = 135 Width = 640 Height = 215 Bits = 16 Display Image from Memory Card (Serial Command): Syntax: @, I, x, y, SectorAdd(hi), SectorAdd(mid), SectorAdd(lo) Picaso Data: 0x40, 0x49, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00 4DSL command: NewUSDImage(0, 135, 0x000000) --------------------------------------------------------------------------------------- File "Testscreen.png" (Testscreen.png) Sector Address 0x00021A X = 0 Y = 0 Width = 640 Height = 480 Bits = 16 Display Image from Memory Card (Serial Command): Syntax: @, I, x, y, SectorAdd(hi), SectorAdd(mid), SectorAdd(lo) Picaso Data: 0x40, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1A 4DSL command: NewUSDImage(0, 0, 0x00021A) */ //Control lines for VGA driver board TFT_4DGL display(VGA_TX,VGA_RX,VGA_RESET); // serial tx, serial rx, reset pin //Character & String functions char* str2char( string cString ) //convert a string to a character array { int nStrLen=cString.size(); std::string cInput( cString ); char* cText = new char[nStrLen+1]; strncpy(cText, cInput.c_str(), nStrLen); cText[nStrLen] = '\0'; return cText; } int centertext( string cString, int nChars, int nCharWidth ) //calculates the startposition on the screen to center the text //needs the actual string (cString), screenwidth in characters (nChars) and the character width (nCharWidth) { int nStart; nStart = nCharWidth*( nChars/2-( cString.size()/2 )); return nStart; } int righttext( string cString, int nChars, int nCharWidth ) //calculates the startposition on the screen to right-align the text //needs the actual string (cString), screenwidth in characters (nChars) and the character width (nCharWidth) { int nStart; nStart = nCharWidth*( nChars - cString.size()); return nStart; } int nFontSize( int nfont_number ) { int nFontWidth = 24; switch ( nfont_number ) { case 0: { nFontWidth = SMALLCHAR; //nFontWidth = FONT_12X34; break; } case 1: { nFontWidth = LARGECHAR; //nFontWidth = FONT_24X34; break; } } return ( nFontWidth ); } int nFontWidth (int nfont_number ) { int nFont = 12; switch ( nfont_number ) { case 0: { nFont = 12; break; } case 1: { nFont = 24; break; } } return ( nFont ); } unsigned int cRGB( char cRED, char cGREEN, char cBLUE ) { //assemble separate colors into 1 integer value as 0xRRGGBB //Display driver requires this format unsigned int RGB = cBLUE + 256*cGREEN + 65536*cRED; return ( RGB ); } int LeftOrRight( int nTextLine, string cString, int nChars, int nCharWidth ) { // nChars is the maximum numbers of characters on the line // nCharWidth is the characterwidth in pixels //decide to print data left aligned or right aligned //00 - 49 is left side of screen //50 - 99 is right side of screen int nHorPos = 0; // nChars is number of characters on this line (24 or 48) // nCharWidth is the character width in pixels if ( nTextLine < 50 ) // Left side adjust { nHorPos = 0; } else // Right side adjust { nHorPos = righttext( cString, nChars, nCharWidth ); } return ( nHorPos ); } int nLine2Pixel( int nLine ) { //calculate vertical pixelposition from linenumber int nPixel = 0; switch ( nLine ) { case 1: { nPixel = LINE1; break; } case 2: { nPixel = LINE2; break; } case 3: { nPixel = LINE3; break; } case 4: { nPixel = LINE4; break; } case 5: { nPixel = LINE5; break; } case 6: { nPixel = LINE6; break; } case 7: { nPixel = LINE7; break; } case 8: { nPixel = LINE8; break; } case 9: { nPixel = LINE9; break; } case 10: { nPixel = LINE10; break; } case 11: { nPixel = LINE11; break; } case 12: { nPixel = LINE12; break; } case 13: { nPixel = LINE13; break; } case 14: { nPixel = LINE14; break; } } return ( nPixel ) ; } void VGA_SIGNAL( int Source, int On_Off) { VGA_SOURCE = Source; VGA_SELECT = On_Off; } void CDU_InitDisplay() { display.baudrate( 9600 ); //init uVGAIII card VGA_SIGNAL( VGA_INT, VGA_ON ); //select INTERNAL video and set VGA switch ON } void CDU_TVScreen() { display.display_control(IMAGE_FORMAT, NEW); //set correct image for reading from SD display.cls(); display.showpicture( 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xCD ); // TVscreen } void CDU_LogoScreen() { display.cls(); display.display_control(IMAGE_FORMAT, NEW); //set correct image for reading from SD display.showpicture( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); // Engravity logo } void CDU_StartScreen() { string cTitle1="ENGRAVITY"; string cTitle2="CONTROL & DISPLAY UNIT"; display.cls(); display.graphic_string( str2char( cTitle1 ), centertext( cTitle1, 24, LARGECHAR), LINE6, FONT_24X34, WHITE, TEXT_SCALE, TEXT_SCALE ); wait_ms(100); display.graphic_string( str2char( cTitle2 ), centertext( cTitle2, 24, LARGECHAR), LINE8, FONT_24X34, RED, TEXT_SCALE, TEXT_SCALE ); wait_ms(100); display.graphic_string( str2char( cTitle2 ), centertext( cTitle2, 24, LARGECHAR), LINE8, FONT_24X34, GREEN, TEXT_SCALE, TEXT_SCALE ); wait_ms(100); display.graphic_string( str2char( cTitle2) , centertext( cTitle2, 24, LARGECHAR), LINE8, FONT_24X34, BLUE, TEXT_SCALE, TEXT_SCALE ); wait_ms(100); display.cls(); //Hardware & Firmware information display.graphic_string( str2char( CDU_Hardware() ), centertext( CDU_Hardware(), 48, SMALLCHAR), LINE6, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( str2char( CDU_Firmware() ), centertext( CDU_Firmware(), 48, SMALLCHAR), LINE7, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( str2char( CDU_Compile() ) , centertext( CDU_Compile() , 48, SMALLCHAR), LINE8, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( str2char( CDU_MAC() ) , centertext( CDU_MAC() , 48, SMALLCHAR), LINE10, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( str2char( CDU_IP() ) , centertext( CDU_IP() , 48, SMALLCHAR), LINE11, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); wait_ms(5000); } void CDU_ScreenAlign() //Draw a wireframe for aligning the screen on display with keys { display.cls(); display.pen_size(WIREFRAME); display.rectangle(XMIN,YMIN,XMAX,YMAX, WHITE); display.line(XMIN,LINE2,XMAX,LINE2, WHITE); display.line(XMIN,LINE3,XMAX,LINE3, WHITE); display.line(XMIN,LINE4,XMAX,LINE4, WHITE); display.line(XMIN,LINE5,XMAX,LINE5, WHITE); display.line(XMIN,LINE6,XMAX,LINE6, WHITE); display.line(XMIN,LINE7,XMAX,LINE7, WHITE); display.line(XMIN,LINE8,XMAX,LINE8, WHITE); display.line(XMIN,LINE9,XMAX,LINE9, WHITE); display.line(XMIN,LINE10,XMAX,LINE10, WHITE); display.line(XMIN,LINE11,XMAX,LINE11, WHITE); display.line(XMIN,LINE12,XMAX,LINE12, WHITE); display.line(XMIN,LINE13,XMAX,LINE13, WHITE); display.line(XMIN,LINE14,XMAX,LINE14, WHITE); //Hardware & Firmware information display.graphic_string( str2char( CDU_Hardware() ), centertext( CDU_Hardware(), 48, SMALLCHAR), LINE6, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( str2char( CDU_Firmware() ), centertext( CDU_Firmware(), 48, SMALLCHAR), LINE7, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( str2char( CDU_Compile() ) , centertext( CDU_Compile() , 48, SMALLCHAR), LINE8, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( str2char( CDU_MAC() ) , centertext( CDU_MAC() , 48, SMALLCHAR), LINE10, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( str2char( CDU_IP() ) , centertext( CDU_IP() , 48, SMALLCHAR), LINE11, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); } void CDU_Page() { display.cls(); display.graphic_string( "PERF INIT" , 8*24, LINE1, FONT_24X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "GW/CRZ CG" , 0, LINE2, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "CRZ ALT" , 41*12, LINE2, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "___._ / 26.2%" , 0, LINE3, FONT_24X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "_____" , 19*24, LINE3, FONT_24X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "FUEL" , 0, LINE4, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "CRZ/WIND" , 40*12, LINE4, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "0.0" , 0, LINE5, FONT_24X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "000$ /---" , 15*24, LINE5, FONT_24X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "ZFW" , 0, LINE6, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "___._ " , 0, LINE7, FONT_24X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "RESERVES" , 0, LINE8, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "__._ " , 0, LINE9, FONT_24X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "COST INDEX" , 0, LINE10, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "TRANS ALT" , 39*12, LINE10, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "___" , 0, LINE11, FONT_24X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "_____" , 19*24, LINE11, FONT_24X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "------------------------------------------------" , 0, LINE12, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "<INDEX" , 0, LINE13, FONT_24X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "N1 LIMIT>" , 15*24, LINE13, FONT_24X34, WHITE, TEXT_SCALE, TEXT_SCALE ); display.graphic_string( "SCRATCHPAD DATA LINE", centertext("SCRATCHPAD DATA LINE", 24, LARGECHAR) , LINE14, FONT_24X34, RED, TEXT_SCALE, TEXT_SCALE ); } void CDU_Waiting() { display.cls(); display.graphic_string( "WAITING" , 0, LINE1, FONT_12X34, WHITE, TEXT_SCALE, TEXT_SCALE ); } void CDU_displayclear(){ display.cls(); }