HMI Builder Overview

The HMI Display Builder is used to build interactive display windows for use under SIMulation Workbench™.  

A display is built by selecting widgets from the widget panel, clicking where you want to place them in the display, configuring their properties such as colors, position and general visual settings, and connecting widget variables to RTDB variables.

Once the display has been created and saved, it can be viewed in the Control Center or in HMI Display. Many of the widgets can be connected to real-time database (RTDB) variables so that the widget will display their values. Most of the widgets can also be used to modify the value of variables.

 

 

 

 

 

 

HMI Builder Sub-Panels

The display builder is divided into several sub-panels :

Available Widgets

This is the list of widgets available to build a HMI display. A widget internal variable(s) can be connected to RTDB / Model variables. The widget will paint itself to represent the value / states of its internal variable. For instance, a gauge widget will draw a circular gauge where the needle's position represents the value of the connected variable.
 
Most of the look and feel of a widget (color, scale, fonts) can be customized to achieve the look wanted.
Scroll through the list to select the widget you want and click on it, then click on the HMI display area to create a widget of this type on the display. When clicking on a specific widget in the HMI build area, the widget properties will be updated in the widget property panel below and thos properties can be edited.
Clicking on the main display area will enable you to set the general properties of the display itself - Color, background image, size, etc.

 

 

 

 

 

Widget Properties

When clicking on a widget in the HMI display area, the properties for the selected widget are displayed. The properties of the widget can be updated by modifying individual properties.
The properties available are specific to each widget. Refer to the help page associated to the widget for a description of each property.

 

 

 

 

 

 

 

HMI Builder Area

This is where you create your HMI display and layout the various widgets that you want to show on your display.
Select widgets from the widget list and either drag and drop them on the display build area or click on it to create a widget of the selected type.

 

 

 

 

 

 

 

 

Widget Connected Variables

This panel shows the list of internal variables in the selected widget. The widget internal variables are specific to a widget. For instance a plot widget will have a long list of variables corresponding to all the individual traces that can be shown on the plot.
Internal variables that are connected to a RTDB variable will display the variable in the RTDB Variable column.
To disconnect a sepcific variable from its RTDB variable, click in the variable name and hit the disconnect button.
Internal variables can be set to a value to that the user can visualize how the widget will display .
 

All the widgets present in the specific display as well as their connection to RTDB / Model variables can be shown by clicking on the Display Connections tab.
Clicking on the widget type or connected value in the list will select the widget in the HMI builder area.

 

 

 

 

 

 

 

 

RTDB / Model variables

Before you can connect a widget internal variable to an RTDB variable, you must select the RTDB from the list of RTDB's available in the selected project.
After selecting the RTDB, the list of all the variables available in the RTDB will be shown. Connect the selected internal widget variable to the RTDB by clicking on the internal variable name in the panel above and clicking the check box next to the RTDB variable you want to connect.
You can connect widget internal variables to model parameters as well. Select the model from the drop down list of available to displays its parameters. Click on the check box next to the model parameter to connected it to the selected widget internal variable.

Local / Remote Display

When creating a new HMI display, you must first choose where the display file will reside. The file can be placed either on the client (the system where the Control Center is running) or on the SimWB host (the system that the control center is logged into. An HMI display loads all its associated resources (background image, HTML file, images for image table widget, etc.) from the same origin it has been loaded from.
In other words, for a display that shows a background image, the image file must be present on the same system - the client or the SimWB host - where the display is loading from.
When loading an existing display , the file selection dialog allows you to browse either the local or remote files.

Remote File dialog

The remote file dialog initially displays all the available locations where a display file can reside on the SimWB host.
The HMI files can reside in individual SimWB projects on the host. In this case, the files and associated image files will be under the project_name/HMI folder where the default project is represented by the <Default> entry in the list.

The entry represents the location on the SimWB RT host where the displays corresponding to the Control Center installation are copied.
Entries prefixed with the icon denote projects on the SimWB RT host. Double click on the project name to navigate to display or image locations under the project.

Corner Controls

Snap Grid

Grid size in pixels to which widget locations are snapped. The pixel location of the upper left corner of widgets is snapped to the nearest multiple of this value. While the widget is being dragged around, the selection corners will snap to show the final location of the widget.

Hide Side Panels

Hides the panels on the left and right edges of the window so that the central display editing area occupies the full width of the window. This makes it easier to position widgets in large displays by avoiding the need to scroll.

Filter Points

Restricts the display of I/O points and model signals and parameters to names containing the regular expression entered in this field. See Regular Expressions.

Expand All

Expands the hierarchy tree for all RTDB variable names in the variable tables. I/O point names with periods in the names are hierarchical names and are displayed as a tree. A.ai000 and A.ai001 are displayed with ai000 and ai001 as children of the A node. Model parameter and signal names with a virgule(/) in the name are treated similarly.

Collapse All

Collapses the hierarchy tree for all variable names in the variable tables to show just the top level nodes.

Demonstrate

Opens a short video clip that demonstrates the basic work flow of this form.

Help

Opens this section of the manual. If a widget button or widget is selected, the section documenting that particular widget is opened.

New Display

Creates a new empty display in the central area. When creating a new display, the origin of the display file - whether the display is stored locally on the client or remotely on the SimWB host - must be specified.

Open Display...

Opens an existing display in the central area. Browse to the .swbd file with the file browser that opens. See HMI File Manager for instructions on how to change the default location for the HMI files.

Save Display

Saves the display in the central area that has focus to the same file as it was opened from or previously saved to.

Save Display As...

Saves the display in the central area that has focus to a new file name, which is specified with the file browser that opens. See HMI File Manager for instructions on how to change the default location for the HMI files.

Save and Launch

Saves the display in the central area that has focus to the same file as it was opened from or previously saved to (if it has been modified) then launches the display. This is very helpful when in an edit & test cycle.

Delete

Deletes the selected widget(s) without putting them into the paste buffer.

Cut

Deletes the selected widget(s) and puts them into the paste buffer.

Copy

Copies the selected widget(s) into the paste buffer.

Paste

Pastes the widgets in the paste buffer into the display in the central area that currently has focus.

Align Left

Aligns the left edge of the selected widgets.

Align Right

Aligns the right edge of the selected widgets.

Align Top

Aligns the top edge of the selected widgets.

Align Bottom

Aligns the bottom edge of the selected widgets.

File Menufile_menu.png

All the lower left corner buttons’ file operations are also available through the File menu. Additionally, there is a dynamically updated Open Recent menu. Every time a display is opened in the editor or launched, it is moved to the head of this list. Selecting a display in this menu opens it in the builder for editing. This list is maintained across program invocations. There is a Clear History menu item in it to erase this history of opened displays.

Edit Menuedit_menu.png

All the lower left corner buttons’ edit operations are also available through the Edit menu.

NOTE:  To select multiple widgets, select the first widget by click­ing on it, then holding down the control button while clicking on additional widgets. Multiple widgets may also be selected by clicking on an empty area and dragging with the mouse button still held down to select multiple widgets with a selection lasso.

Widget Indicator

The lower right corner indicates the type of widget that has been clicked on most recently. If one of the widget buttons in the upper left panel was clicked on, the indicator will read Click to Insert: Widget Type to indicate that clicking in a display in the central area will insert a widget of that type. If a widget in a display has been selected, it will read Selected Widget: Widget Type to indicate what type of widget a given widget is. Since many widgets are very customizable, it isn’t always clear from appearance which type of widget they are.

Display Propertiesdisplayprop.png

Properties of the HMI Display window. To set the properties of the display window, deselect all items in the display by clicking on an empty area within it.

x

Horizontal position on the screen where the display will initially open, measured in pixels from the left side of the screen.

y

Vertical position on the screen where the display will initially open, measured in pixels from the top of the screen.

Width

Initial width in pixels for the display. If the display is not configured to be resizable, this will be the fixed width of the widget.

Height

Initial height in pixels for the display. If the display is not configured to be resizable, this will be the fixed height of the widget.


NOTE:  If the specified location and size of the display does not fit within an actual physical screen when the display is opened, it will be moved to the nearest screen that it does fit on.

Title

Title to display in the title bar of the display window. If this is not specified, the title will be set to the name of the display file.

Background Color

Background color to fill the display with.

Background Transparency

This is a number between 0.0 (completely transparent) and 1.0 (completely opaque) that represents the transparency of the background. A transparency < 1.0 is only supported when the window is undecorated - no window title, no window border. When a value < 1.0 the window decorations are automatically removed.

Background Image

Name of an image file to fill the display with.

Shaped Window

The display window will have the shape cut around the image. All portions of the image that are completely transparent will be removed. The display window decorations are also automatically removed when this option is selected.

Image Transparency

This is a number between 0.0 (completely transparent) and 1.0 (completely opaque) that represents the transparency of the background image. You can set a transparency on the display background and have a completely opaque image (transparency == 1.0) or also set a transparency < 1.0 on the background image. In this case, any desktop graphics would be partially visible behind the image as well as behind the rest of the display not covered by the background image.

Window Transparency

This is a number between 0.0 (completely transparent) and 1.0 (completely opaque) that represents the transparency of the display window itself. When setting the window transparency, every element contained within the window; i.e. widgets button, background, images assume the same transparency. This is not the case when setting background transparency to < 1.0 where only the background or the background image become transparent but the rest of the elements contained within the window retain their original opacity.

Window Transparency Vs Background Transparency Vs Shaped Window

Window Transparency


 
Notice how the close button, the gauge widget, the window background and the image assume the same transparency.

Background Transparency


 
Only the display background is transparent in this screenshot. The background image as well as all the other widgets are opaque, the background of the gauge widget has been set as null so that the screen behind the gauge is visible as well.

Background and Image Transparency


 
Both the display background and the background image are transparent in this screenshot. The other widgets are opaque. This is identical to the display above except that the background image has been made transparent.

Shaped Window


 
The background image is used to define the shape of the display window. Note that additionally to the image, SimWB widgets like the close button in this case are added to the image to define the window shape. Areas of the background image that are completely transparent in the PNG file are eliminated to define the window shape.

Java and Operating System Considerations

  • Window transparency, background transparency and shaped window are only supported by the java virtual machine version 1.7 or later. A JRE version 1.7 is installed as the default JVM for SimWB during the installation process.
  • Window transparency is only supported on the Windows™ operating system. When opening a display with window transparency < 1.0 under Linux™ the option is silently ignored.
  • Background transparency can cause an unpleasant flickering effect under Linux™ This is not a SimWB issue but rather a JVM/repaint issue. In order for background transparency to work on Linux&trade, the compiz window manager (Desktop Effects) must be enabled.
NOTE:  All the examples above have no window decorations around the display window.
In order to move a window with no title bar , hold the Alt key down and left click and drag the window.

Stretch Image

Expands or shrinks background image so that it fits entirely within the display. If the display is configured to be resizable, the image will expand or shrink with the size of the window.

x,y Image Origin

Comma separated coordinates (x,y) of the background image within the display window. This is only use when the Stretch Image option is off. Negative numbers can be specified.

Examples:

The background image is stretched to fill the display background:

dis_displayex.png 

The background image is not stretched (shown at its native resolution) and its origin is at 20,20:

dis_displayex2.png 

The background image is not stretched and its origin is at -20,-20:

dis_displayex3.png 

Resizable

Permits the display window to be resized by dragging the border. If the display is not resizable, it will always have the fixed width and height assigned to the parameters above.

Rescale on Resize

When checked, all the widgets contained in the display are rescaled proportionally to the window resize.

Scrollable

Enables vertical and horizontal scroll bars in the display window so that when the display is resized to a size smaller than its content, the user can scroll to hidden parts of the display.

Title Bar

Shows the title bar. A window without a title bar cannot be moved by the user.

Always on Top

Keeps display on top of any other windows displayed on the screen.

Load with Any RTDB

Permits running the display with any RTDB that has the same variables.

RTDB Name

Name of the SIMulation Workbench real-time database that this display expects to be loaded into memory for getting the values of connected variables. This is set by selecting an RTDB from the drop down list of SIMulation Workbench RTDBs on the right side of the display builder screen. An error message will be issued when a display that requires one RTDB is opened while a test is running on the real-time host with a different RTDB unless the Load with Any RTDB option is selected.

If the RTDB name is set to NONE, the display can be run with any RTDB loaded, but cannot access any variables. This is useful for creating a display dedicated to launch tests or other displays.

RTDB & Model Variables

An HMI display contains a set of widgets that display the values of variables, model signals, and model parameters that exist in the currently loaded real-time database (RTDB). Widgets are associated with specific variables that only exist within a particular RTDB. Only one RTDB can be loaded into memory on the real-time host at a time, so displays (and tests) are associated with a specific RTDB when they are created. This way, the HMI run-time is able to check that the display being opened corresponds to the RTDB loaded in memory and the variables connected to the widgets in that display exist on the real-time host.

Choosing an RTDBrtdbselect.png

Before a widget can be associated with an RTDB variable, the specific RTDB that the display is being designed for must be selected. This is done via the drop-down combo box of RTDBs as shown in the picture.

The drop-down combo box will show all the RTDBs defined on the real-time host. Once one has been selected, the table below the drop-down combo box is filled with all the variables that exist within the selected RTDB.

Choosing a Modelmodelvariables.png

In addition to RTDB variables, widgets can also be connected to model parameters and signals. Currently, there is no way to enforce the relationship between displays and specific models, so models are not tied to specific displays. Nevertheless, model parameters and signals are created at run time when a test is started and are accessible as RTDB variables. This only applies to Simulink™ models whose executable has been generated via the tools provided by SimWB as those will extract the model parameters and signals from the generated source code.

In order to connect a model signal or parameter to a widget, select a model from the model drop-down combo box. The drop-down combo box will show all the models defined on the real-time host. Once one is selected, the table below will be filled with the hierarchy of parameter and signal names defined for the model.

Model parameters are accessible under the Parameters branch in the tree. Model signals are accessible under the Signals branch in the tree. Model signals will only be accessible for Simulink™ models that have been generated with the C-API option on. Only leaves in the tree can be connected to widget variables.

Be aware that as Simulink models are edited, parameters and signals that are used in a display might no longer exist once the model is saved and regenerated. The HMI will show an error message when a display that references variables that don't exist in the RTDB is opened.

Once a model signal or parameter has been connected to widget variable of the selected widget, it will show in the same fashion as I/O points in the list of connected variables.

Connecting an RTDB or Model Variable to a Widgetconnectedvariables.png

To connect the widget internal variable(s) to RTDB variable(s), first select the widget on the display. The internal widget variable(s) will appear in the Connected Variable(s) list as shown. By default, the first widget variable will be preselected when you selected the widget. Other widget variables may be selected by clicking on them in the table.

To connect an RTDB variable to the selected widget variable, locate the RTDB variable in the tables below the Connected Variable(s) table and click the check box next to its name.

When a widget variable that is already connected to an RTDB variable is selected, the check box next to that RTDB variable will be checked by SimWB. Click in the check box to clear the check mark to disconnect them, or click on the Disconnect button.

when a widget scalar value property is connected to an array type RTDB variable, the row and column index indicates which element of the array should be selected for representation.

Testing Widget Behavior

You can test how the widget will display for different values of its connected variables by typing values in the entry fields, which are located immediately below the Connected Variable(s) table.

Display Connections

The tab shows the list of all the widgets on the selected display along with the RTDB variable names they are connected to.
The filter entry field can be used to filter entries that fits the search pattern in the field. Press <ENTER> in the field to refresh the list after entering the pattern.

Toggle the button to enable/disable incremental search while the filter field is edited. When incremental search is on, refreshing might be significantly slower as the list needs to be recreated whenever a new character is typed in the filter field.

displayconnections.png

String Variables

In addition to numerical variables such as double, float, etc., string variables can also be defined in the RTDB. As with numerical variables, string variables are defined as either input or output. They are really defined as binary buffers with the associated buffer length. A limited set of widgets in the SIMulation Workbench HMI support string variables:

In the HMI, a distinction is made between regular ASCII strings and binary strings. ASCII strings only contain characters defined within the ASCII character set and can thus be displayed and set via data entry as normal text would be.

The content of a binary string is defined by a special format string. The format string consists of a comma-separated list of entries that specify the subfields of the binary string. Each entry contains the type and value specifiers of the subfield. For some widgets, the value may be specified as the value of a data entry field, otherwise the value is an integer constant.

The valid type specifiers are:

I1

The number following the I1 specifier is to be packed as a single byte. This specifier is optional for specifying the value of a single byte with an integer value.

I2

The number following the I2 specifier is to be packed in the buffer as a little-endian 2-byte short number.

I4

The number following the I4 specifier is to be packed in the buffer as a little-endian 4-byte int number.

The value specifier is a simple integer value or a field specifier, which specifies which field in a data entry form to get the value from with an F followed by the number of field in the data entry form (numbered from 0).

Example:

3,I14,I2F0,I4F1

The binary string will be:

hmi_builder00015.jpg 

Specifying Field Entry

In the case of the Combo Value widget (see Combo Value), the data entry fields are part of the combo value widget itself.dis_combovalue.png

In the case of the Numeric Value widget (see  Numeric Value), the data entry fields are in the data entry dialog that appears when the value is edited, the associated variable is defined as a binary string, and the binary string format contains Fx field specifiers.binarystringentrydlg.png

Action Buttons, Toggle Buttons and Checkboxes do not support subfield data entry, and in this case, the Fx field specifier is not used.

For those widgets, we would specify the value to send on click, for example:

0,I412,I222

Where byte zero is a 0, bytes one to four are the little-endian 32-bit integer value 12 and bytes five and six are packed with little-endian 16-bit integer value 22.

Remote Function Calls

The HMI run-time includes the ability of calling some SIMulation Workbench™ or user-defined routines.
The function calls are executed by the guirpcsrv process. There is one instance of this process for each instance of the HMI run-time. The call requests are sent via a SIMulation Workbench™ specific protocol over the network connection that is created between the HMI run-time and the corresponding instance of the guirpcsrv process.

Not all SIMulation Workbench functions supported by the API are callable via this mechanism.
Only the functions that accept scalar arguments (no pointers) or string constant (no quote) and return an integer error code are defined as callable by the HMI run-time.

SIMulation Workbench Callable Functions

The list of SIMulation Workbench functions callable by the HMI run-time is defined in the simwbfunctionlist.txt file in the /usr/local/ccursim/GUIHooks directory. This is an ASCII file generated automatically with each SIMulation Workbench release and is included in the standard release. This is the content of the file distributed with a typical SIMulation Workbench:


function=ccurAsyncIO_afdxTXQueueNowName(char *)

function=ccurAsyncIO_afdxTXQueueNowMsg(int ,int ,char * )

function=ccurAsyncIO_afdxSetTxRateMsg(int ,int ,char *,int )

function=ccurAsyncIO_afdxSetTxRate(char * ,int )

function=ccurAsyncIO_afdxGetTxRate(char * )

function=ccurAsyncIO_afdxGetDefaultTxRate(char * )

function=ccurAsyncIO_afdxGetTxFlags(char * )

function=ccurAsyncIO_afdxGetDefaultTxFlags(char * )

function=ccurAsyncIO_afdxGetTxRateMsg(int ,int ,char *)

function=ccurAsyncIO_afdxGetDefaultTxRateMsg(int ,int ,char *)

function=ccurAsyncIO_afdxGetTxFlagsMsg(int ,int ,char *)

function=ccurAsyncIO_afdxGetDefaultTxFlagsMsg(int ,int ,char *)

function=ccurAsyncIO_afdxSetTxScheduledToFIFO(char * )

function=ccurAsyncIO_afdxSetTxScheduledToFIFOMsg(int ,int ,char *)

function=ccurAsyncIO_afdxSetTxFIFOToScheduled(char *,int )

function=ccurAsyncIO_afdxSetTxFIFOToScheduledMsg(int ,int ,char *,int )

function=ccurAsyncIO_afdxSetFIFOTxOnChange(char *,int )

function=ccurAsyncIO_afdxSetFIFOTxOnChangeMsg(int ,int ,char *,int )

function=ccurAsyncIO_afdxPauseMsg(int ,int ,char * )

function=ccurAsyncIO_afdxPauseItemMsgName(char * )

function=ccurAsyncIO_afdxResumeMsg(int ,int ,char * )

function=ccurAsyncIO_afdxResumeItemMsgName(char * )

function=ccurAsyncIO_afdxSetNetConfigName(char * ,int ,int )

function=ccurAsyncIO_afdxSetNetConfigMsg(int ,int ,char * ,int ,int )

function=ccurAsyncIO_ao16SetFrequencyWave(int ,int ,double ,char * )

function=ccurAsyncIO_ao16SetAmplitudeBias(int ,int ,double , double )

function=ccurAsyncIO_ao16SetPhase(int ,int ,double )

function=ccurAsyncIO_ao16Resume(int )

function=ccurAsyncIO_ao16Pause(int )

function=ccurAsyncIO_ao16Start(int )

function=ccurAsyncIO_ao16Stop(int )

function=ccurAsyncIO_ao16SetFilter(int ,int )

function=ccurAsyncIO_arinc429TXQueueNowName(char *)

function=ccurAsyncIO_arinc429TXQueueNowLabel(int ,int ,int ,int )

function=ccurAsyncIO_arinc429SetInvertParity(char *,int )

function=ccurAsyncIO_arinc429SetTxRateLabel(int ,int ,int ,int ,int ,int )

function=ccurAsyncIO_arinc429SetTxRate(char * ,int )

function=ccurAsyncIO_arinc429SetTxRate(char * ,int )

function=ccurAsyncIO_arinc429GetTxRate(char * )

function=ccurAsyncIO_arinc429GetDefaultTxRate(char * )

function=ccurAsyncIO_arinc429GetTxFlags(char * )

function=ccurAsyncIO_arinc429GetDefaultTxFlags(char * )

function=ccurAsyncIO_arinc429GetTxRateLabel(int ,int ,int ,int )

function=ccurAsyncIO_arinc429GetDefaultTxRateLabel(int ,int ,int ,int )

function=ccurAsyncIO_arinc429GetTxFlagsLabel(int ,int ,int ,int )

function=ccurAsyncIO_arinc429GetDefaultTxFlagsLabel(int ,int ,int ,int )

function=ccurAsyncIO_arinc429SetTxScheduledToFIFO(char * )

function=ccurAsyncIO_arinc429SetTxFIFOToScheduled(char *,int )

function=ccurAsyncIO_arinc429SetFIFOTxOnChange(char *,int )

function=ccurAsyncIO_arinc429HaltPointChannel(char * )

function=ccurAsyncIO_arinc429StartPointChannel(char * )

function=ccurAsyncIO_arinc429HaltChannel(int ,int ,int )

function=ccurAsyncIO_arinc429StartChannel(int ,int ,int )

function=ccurAsyncIO_arinc429PauseLabel(int ,int ,int ,int )

function=ccurAsyncIO_arinc429PauseItemLabelName(char * )

function=ccurAsyncIO_arinc429ResumeLabel(int ,int ,int ,int )

function=ccurAsyncIO_arinc429ResumeItemLabelName(char * )

function=ccurAsyncIO_canTXQueueNowName(char * )

function=ccurAsyncIO_canTXQueueNowCANId(int ,int ,int )

function=ccurAsyncIO_canSetFIFOTxOnChange(char *,int )

function=ccurAsyncIO_canSetFIFOTxOnChangeCANId(int ,int ,int ,int )

function=ccurAsyncIO_canResumeCANId(int ,int ,int )

function=ccurAsyncIO_canPauseCANId(int ,int ,int )

function=ccurAsyncIO_canSetTxRateCANId(int ,int ,int ,int )

function=ccurAsyncIO_canGetTxRateCANId(int ,int ,int )

function=ccurAsyncIO_canGetDefaultTxRateCANId(int ,int ,int )

function=ccurAsyncIO_canGetTxFlagsCANId(int ,int ,int )

function=ccurAsyncIO_canGetDefaultTxFlagsCANId(int ,int ,int )

function=ccurAsyncIO_canSetTxScheduledToFIFOCANId(int ,int ,int )

function=ccurAsyncIO_canSetTxFIFOToScheduledCANId(int ,int ,int ,int )

function=ccurAsyncIO_canGetTxFlags(char * )

function=ccurAsyncIO_canGetDefaultTxFlags(char * )

function=ccurAsyncIO_canSetTxRate(char * ,int )

function=ccurAsyncIO_canSetTxFIFOToScheduled(char *,int )

function=ccurAsyncIO_canGetTxRate(char * )

function=ccurAsyncIO_canGetDefaultTxRate(char * )

function=ccurAsyncIO_canSetTxScheduledToFIFO(char * )

function=ccurAsyncIO_netIOTXQueueNowName(char *)

function=ccurAsyncIO_netIOTXQueueNowMsg(int ,char * )

function=ccurAsyncIO_netIOSetTxRateMsg(int ,char *,int )

function=ccurAsyncIO_netIOSetTxRate(char * ,int )

function=ccurAsyncIO_netIOGetTxRate(char * )

function=ccurAsyncIO_netIOGetDefaultTxRate(char * )

function=ccurAsyncIO_netIOGetTxFlags(char * )

function=ccurAsyncIO_netIOGetDefaultTxFlags(char * )

function=ccurAsyncIO_netIOGetTxRateMsg(int ,char *)

function=ccurAsyncIO_netIOGetDefaultTxRateMsg(int ,char *)

function=ccurAsyncIO_netIOGetTxFlagsMsg(int ,char *)

function=ccurAsyncIO_netIOGetDefaultTxFlagsMsg(int ,char *)

function=ccurAsyncIO_netIOSetTxScheduledToFIFO(char * )

function=ccurAsyncIO_netIOSetTxScheduledToFIFOMsg(int ,char * )

function=ccurAsyncIO_netIOSetTxFIFOToScheduled(char *,int )

function=ccurAsyncIO_netIOSetTxFIFOToScheduledMsg(int ,char *,int )

function=ccurAsyncIO_netIOSetFIFOTxOnChange(char *,int )

function=ccurAsyncIO_netIOSetFIFOTxOnChangeMsg(int ,char *,int )

function=ccurAsyncIO_netIOPauseMsg(int ,char * )

function=ccurAsyncIO_netIOPauseItemMsgName(char * )

function=ccurAsyncIO_netIOResumeMsg(int ,char * )

function=ccurAsyncIO_netIOResumeItemMsgName(char * )

function=ccurEB5100_startCommunication(int )

function=ccurEB5100_stopCommunication(int )

function=ccurEB5100_commitFrame(int ,int )

function=ccurEB5100_enableSendFrame(int ,int )

function=ccurEB5100_disableSendFrame(int ,int ,int ,int )

function=ccurEB5100_getLastError(int )

function=ccurGen_addGenerator(char *,int , int ,float ,float ,float ,float , float ,float ,double , char * )

function=ccurGen_addAsamGenerator(char *, char *)

function=ccurGen_startAllGenerators()

function=ccurGen_stopAllGenerators()

function=ccurGen_removeAllGenerators()

function=ccurGen_rampToValue(char *,double ,double , int ,double )

function=ccurGen_rampRate(char *,double ,double ,int ,double )

function=ccurRTDB_getCVTValueDouble(char *)

function=ccurRTDB_getAlternateValueDouble(char *)

function=ccurRTDB_getCurrentValueDouble(char *)

function=ccurRTDB_setCVTValueDouble(char *,double )

function=ccurRTDB_setAlternateValueDouble(char *,double )

function=ccurRTDB_setCurrentValueDouble(char *,double )

function=ccurRTDB_setLoggingEnable(char *,char )

function=ccurRTDB_takeSpareItem(char *,int ,int )

function=ccurRTDB_setAlternateFlag(char *,int )

function=ccurRTDB_setOperatorFlag(char *,int )

function=ccurRTDB_resetToDefault()

function=ccurRTDB_resumeDLogger()

function=ccurRTDB_pauseDLogger()

function=ccurRTDB_stopCircularLogger()

function=ccurRTDB_writeStdOut(char *)

function=ccurSched_pause()

function=ccurSched_resume()

function=ccurSched_nonRT()

function=ccurSched_resumeRT()

function=ccurSched_step(int )

Function Selection Dialog

funcselection_dlg.png 

The function prototype as well as the API is shown when you select a function.
The parameters to the function can be passed as constant; i.e. 3.5 or as $value to represent the value of the RTDB variable or the value connected to the widget. For instance in the case of a slider widget, the $value would be the value set by the widget when moving the slider thumb.
The token $variablename can also be used to represent the name of the RTDB item the widget is connected to and will be substituted in the call before calling the remote function.

User Defined Callable Functions

The user can defined a library with their own remotely callable functions. The user functions are listed in
$SIMWB_ROOT/GUIHooks/guifunctionlist.txt
The user must build a dynamic library (.so) so that it can be linked in at run-time into the guirpcsrv process.
See the example provided in the $SIMWB_ROOT/GUIHooks/ directory.