=====Showing a custom message box in older software=====
In [[plc:plc_gas_cutting_implementation|previous article]] we showed how to implement oxyfuel gas cutting procedure. Preheat process in gas cutting can last 30-120 seconds. It is convenient to have on screen message that shows preheat progress. Let's add message box with preheat progress countdown for gas cutting.
Global variables 9100-9163 are reserved to show/hide enumerated Popup message box.
Writing "1" to register (9100+N) will show Message Box #N on the main screen. Writing "0" will hide the Message Box.
Content for message box #0...#63 defined in cnc-variables.xml configuraton file by item **cnc-popup-message-0** ... **cnc-popup-message-15**
0
Message box contains 3 lines. Lines defined by attributes **header** (top line), **message** (middle line), **footer** (bottom line). Font size for each line defines by attributes **headerFontSize**, **fontSize** and **footerFontSize**
Line height for each line defined by attributes **headerHeight**, **height** and **footerHeight**.
Attributes **width** and **height** define message box width and height in pixels.
Popup Messagebox will be automatically hidden if variable value was not changed longer than time defined in **timeout** attribute.
Parameter value can be printed in Message Box. To print a value -
* Message attribute should contain C-style contains format line (ie "%d", "%7.3f")
* Attribute **dest** should define variable number
* Attribute **K** defines scale ratio.
For example if
* message="%d"
* dest="cnc-gvariable-99"
* K="0.001"
Variable #99 value multiplied by K-ratio will be printed: if variable value is 95000, value **95** will be shown.
{{plc:mycnc-eco-popup-message-01.png}}
Source code to show Message Popup is
gvarset(9100,1); //show the Message Box
portset(OUTPUT_OXY_HEAT_HI); //turn ON preheat Valve
timer=time_preheat;
break_heating=1; //Set Heating variable.
//if the value will be clearen outside of PLC, abort Preheat procedure
do {
timer--;
if (portget(6)!=0) //if start key is pressed - start piercing
{
timer=0; //exit from heating
};
if (break_heating==0) //if start key is pressed - start piercing
{
timer=0; //exit from heating
};
if ((timer&0xff)==0)
{
gvarset(99,timer); //update Countdown value every 256msec
};
}while(timer>0); //Preheat loop
gvarset(9100,0); //hide Message Box