Getting Started with itron SMART TFTs - Program
Basics
If you received a development kit with USB
cable and SD card inserted into the module, just plug in the USB
cable between a PC and the display module. The boot code and operational
software will load and then run the file TUxxxA.mnu from the SD card where
xxx is the X number of pixels of the TU module. This will be TU320A.mnu,
TU480A.mnu, TU640A.mnu or TU800A.mnu.
Production modules are not supplied with demonstration screens.
After experimenting with the
demonstration, review the basic applications below. Do not hesitate to send us an email for further
explanation. Key issues to understand..
1/ The system uses text commands rather than difficult to remember hex
codes.
2/ All objects and functions are given a name for easy future referencing.
Interfaces are given pre-defined names like RS2 for RS232 and
RS4 for RS485.
3/ Commonly used parameters are stored in 'styles' like in HTML web pages.
This reduces the number of commands from 250 in a conventional TFT module
to just 25 in itron SMART TFTs with equal or better functionality.
A typical TUxxx.mnu menu file's commands will be
constructed and ordered as follows (detail removed for clarity): |
LIB...
//load in images and fonts from memory into library
LIB...
INC..
//include another menu file which may have global styles and setup.
STYLE...
//define styles for pages, text, images used in this file
STYLE...
SETUP..
//setup system and external interfaces like RS232
SETUP...
VAR...
//create variables used for calculation, temporary storage and pointing
VAR...
PAGE(MAIN,styleMain) { //create a main page with text, images
and associated keys
POSN... TEXT
//place text at a specified position on screen
POSN... IMG
//place icon / image at a specified position on screen
POSN... KEY
//place a touch key area on screen and define function to call
}
PAGE(SUB,stylePage1) { //create other pages
POSN... TEXT
//place text at a specified position on screen
POSN... IMG
//place icon / image at a specified position on screen
.......
LOOP(CntLoop,FOREVER) { IF(CNTMINS=0,FncZero); } //
function calls associated with page
}
FUNC(FncZero) { LOAD(RS2,"Hour
Count = ",CNTHRS,"\\0A\\0D"); //send
message to host via RS232
FUNC(MyFunc) { ...................} //other functions
associated with key press or interfaces
INT...
// Initialise interrupts for slave timers and inputs...not host
interface - use setup with v39 software
SHOW(MAIN); // After pre-loading all style parameters, pages and
functions, start the application with first page.
After this point, functionality follows page key presses and functions or
incoming command data from host or interfaces. |
When creating an entity for the first time,
include the style parameter. To update the entity omit the style parameter.
If you specify the style again, you will create a copy.
Entities are layered on the screen from back to front in the order they are
listed in the menu with the screen background defined in the page style. If
you want a button image to change colour, include one colour button in your
background and the other colour button as a separate image over the top. To change colour, just
HIDE and SHOW the top button. This technique is used in the
air conditioner project.
The examples below can be cut and pasted from
their box into a text editor (NotePad).
Save the file as TU480A.mnu
and copy onto the SD card.
Plug it into the itron SMART TFT module, apply power and view the result. |
Hello World from Internal Menu |
// Menu file TU480A.MNU for Demo using TU480X272C
// Simple demo to display text
STYLE(BlackPg, Page) { Back=black;} //black background
STYLE( Txt32White, Text )
{
font=Ascii32;
col=white;
maxLen=32;
maxRows=1;
curRel=CC; //white system text 32 pixels high
}
PAGE( MainPg, BlackPg )
{
POSN( 240, 136 ); // Set writing position to centre of display
TEXT( Text1, "Hello World", Txt32White ); // Draw text
}
SHOW( MainPg );
//end |
Hello World via RS232 IN with touch key to send
RS232 OUT |
// Menu file TU480A.MNU for Demo using TU480X272C
// 07-Oct-2010
// This example is identical to example 1 except RS232 is defined
// using setup for command mode at19200 baud, no parity
STYLE(BlackPg, Page) //define page style
{
Back=black; //background is black
}
STYLE( Txt32White, Text ) //define text style
{
font=Ascii32; //use built in font
col=white; //text colour is white
maxLen=32;
maxRows=1;
curRel=CC; //centre position
}
VAR(mytxtVar,"Hello People",TXT); //create a text variable to hold up to 32
characters
PAGE( MainPg, BlackPg )
{
POSN( 240, 136 ); // Set writing position to centre of display
TEXT( Txt1, mytxtVar, Txt32White ); // Create text area at the writing
position
KEY(Key1,[LOAD(RS2,mytxtVar,"\\0D\\0A");],470,270,TOUCH); //Touch screen to
sends content of mytxtVar plus CRLF out of RS232 port
}
SETUP( RS2 )
{
set = "192NC"; // 19200 bps, no parity, command mode
}
SHOW( MainPg );// Send text command to the display
via RS232 : LOAD( mytxtVar, "Hello World" );;\\0D
// Note :-
// Sending 2 semicolons is equivalent to SHOW (currentpage);
// All command lines must be followed by CR (\\0D)
//If your system can send binary \\0D can be sent as
0DH |
Images loaded, flashed and moved |
// Menu file TU480A.MNU for Demo using TU480X272C
// 11-Oct-2010
// This example places 2 images on the display with one flashed and moved.
LIB(Image1,"SDHC/lift1.bmp?back=\\0000CD"); //load image1 from SD
card
LIB(Image2,"SDHC/lift2.bmp?back=\\0000CD"); //load image2 from SD
card
STYLE(BluePg, Page) {back=\\0000CD;} //define style of page
with blue background
STYLE(StImg, Image) {curRel=CC;}
//centre image with respect to POSN cursor
PAGE( MainPg, BluePg )
{
POSN( 199, 136 ); IMG( LeftImg, Image1,172,240,StImg); // Position and draw 1st image
on display
POSN( 396, 136 ); IMG( RightImg, Image2,172,240,StImg); // Position and draw 2nd
image on the display
}
SHOW( MainPg ); //show page
WAIT(2000); //wait 2 seconds
HIDE( LeftImg );; //hide left image and refresh page
WAIT(2000);
SHOW( LeftImg );; //show left image and refresh page
WAIT(2000);
POSN( 396,136,LeftImg);; //position
left image under right image and refresh page
// Sending 2 semicolons is equivalent to SHOW (currentpage);
//You will see a blue border around the right image due to background
transparency differences |
|
|
|