User Tools

Site Tools


Popup messages

This is an expanded manual that serves to introduce the user to the concept of popup messages beyond the basics described in the MyCNC Configuration Dialogs manual.

The following settings are available:

  • Popup Message Number
  • Position (X&Y) on the screen
  • Size of the popup window (in pixels)
  • Header (title) of the popup message
  • Header size and font size
  • Message (body) of the popup window which allows to present additional information to the user
  • Message size and font size
  • Footer of the popup message
  • Footer size and font size
  • Button image (specify the file location)
  • Button size
  • Button action to run a specific macro when the button is clicked
  • Timeout to hide the popup window (in seconds)
  • Variable number to display (usually in footer, through [%d]) - useful to display a changing variable, like time in seconds, etc.
  • Coefficient K to multiply the variable by. Useful to convert tiny incremental changes (such as fractions of a second) or large rapidly changing numbers into numbers that can be easily read by the user.

Popup messages are controlled by writing a 1 or a 0 into global variables #9100-9163 (1 to bring up the popup, 0 to close it). Therefore, the user can set up to 64 possible popup messages within the myCNC software by going into Settings > Config > Screen > Popup Messages and assigning the necessary messages there. Afterwards, the message can be brought up either through a PLC procedure, like so:


or by using a G-code command (for example, within a macro) such as

G10 L80 P9160 Q1

which will write a 1 in the global variable #9160.

Examples of popup messages implementation

Mandatory homing procedure

The below section is an excerpt from the following manual: How to add mandatory Homing after Emergency Button and-or Servo ready alarm
Please consult the full manual for additional information on mandatory homing setup.

Mandatory Homing procedure handler can be implemented with Software PLC:

NOTE: The homing procedure handler is OFF by default as it has the exit(99); line in the beginning of the program which immediately terminates the PLC as soon as it is started. In order to enable the homing procedure handler, add two forward slashes in front of the exit(99); line to comment it out so that the PLC can proceed uninterrupted:

There are Homing flags situated in global variables 7391-7399

Address Global variable Description
7391 X axis homing flag
7392 Y axis homing flag
7393 Z axis homing flag
7394 A axis homing flag
7395 B axis homing flag
7396 C axis homing flag

The flags are set automatically to “1” if

  1. The myCNC software has just loaded
  2. Emergency button has been pressed
  3. Corresponding Servo Ready alarm has been triggered

Software PLC Homing procedure handler monitors the flags and stops running G-code if any of the flags is set to 1.

 hx=gvarget(7391); //monitor axes flags X, Y, Z and C 
 hy=gvarget(7392) ;
 a++; if(a>9){a=1;};
 gvarset(99,c+b); //build variable to display which axis is not ready
 home=hx+hy+hz; //check if any of axis is not ready
 //home=hx+hy+hz+hc; //check if any of axis is not ready
 if (home!=0)  //if any of axis is not ready, then ...
  if (prg!=0) //Check if Program running is started and Stop it immediately
	gvarset(0xffffff,1); //Stop Program
  gvarset(9100,1); //display the message #1 on the screen, if any of home alarm activated
  gvarset(8160,2); //set XHC Homing display
  gvarset(9100,0); //hide the message #1, if everything's ok
  if (home_old!=home) //just home
     gvarset(8160,0); //set XHC Homing display

Writing a “1” to global variable #9100 will show Popup Message #0. Content to show in the Popup message should be programmed in the cnc-variables.xml configuration file.

myCNC software has configuration widget to add and setup a Popup Message Widget.

  • Press “+“ button to add new Popup Message description
  • Popup message # - ID number of popup message to show/hide. Global Variable numbers 9100…9200 are used to show hide the popup messages.
    For example, variable number 9114 is used to show Popup message with ID 14
  • Position X,Y - used to define Popup widget position on the screen. Popup message will be shown in the center, if Position x,y are not defined.
  • Size - defines size of Popup message widget
  • Header, Message, Footer - Popup message widget contains 3 sections to show a message. You can define text for each section (Header, Message, Footer). Section Size (width, height) and Font size can be defined for each section as well.
  • Button Image, Size, Action - Popup message may have a button at the bottom of the popup widget. A button image file, button size and action should be defined to get the button appeared in the widget.
  • Hide timeout - (under developing) Popup message may disappear automatically after given timeout
  • Variable - One of text lines (header, message or footer) may contain C-style format section to print variable value. If this section is present, then a variable, defined here, is printed. For example, Variable #99 will be printed in “Footer” section according to the screenshot above.
  • K - ratio to print the variable value. For example, if “K=0.001” and Variable value is “5000”, the value “5” will be printed (5000*0.001=5)
Popup message example is shown below


M660 PLC procedure is supposed to be a handler for manual tool change. It shows a “Manual Tool Change” message, then waits in a loop till tool changed. There can be a software flag (global variable register) indicating tool changed or the procedure can wait till a hardware button (connected to the controller input) is pressed. Below is an example of a manual tool change handler M660.plc:

  gvarset(1999,1); //set flag
    if ((timer&0xff)==0) //check every 0.25 sec
      gvarset(9160,1); //show the Manual Tool Change Message #60
      flag=gvarget(1999); //check the flag, if flag<=0, then tool changed and a job should be resumed

  gvarset(9160,0); //clear the Message

Setup for message #60 in Settings > Config > Screen > Popup Messages:

Resulting popup message:


#include pins.h
  //clamp new tool


    t=portget(INPUT_TOOL_CLAMPED);// 5
    if (t!=0)



mycnc/popup_messages.txt · Last modified: 2020/11/19 11:59 by ivan

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki