Search Results for

    Show / Hide Table of Contents

    Enable operator response to RAPID UI-instructions from a PC

    Remote operator dialog box

    PC SDK supports operator dialog box to be launched on a PC instead of the FlexPendant when RAPID UI- and TP-instructions are executed. In this chapter this feature is referred to as Remote operator dialog. It enables an operator to give the feedback required by the RAPID program from a PC instead of using the FlexPendant.

    Note

    TP instructions can only be used with RobotWare 5.12 and later.

    Supported RAPID instructions

    The following RAPID instructions are supported:

    • UIAlphaEntry

    • UIListView

    • UIMessageBox

    • UIMsgBox

    • UINumEntry

    • UINumTune

    • TPErase

    • TPReadFK

    • TPReadNum

    • TPWrite

    UIInstructionType

    The PC SDK UIInstructionType enumeration defines the different RAPID instructions listed above. For a description of each instruction type, see API Reference. The following is an example of such a description.

    Example UIInstructionType.UIAlphaEntry:

    Member Description
    UIAlphaEntry The UIAlphaEntry (User Interaction Alpha Entry) is used to let an operator communicate with the robot system via RAPID,
    by enabling him to enter a string from the FlexPendant or from a PC SDK application.
    After the operator has entered the text, it is transferred back to the RAPID program by calling UIAlphaEntryEventArgs.SendAnswer.
    Tip

    For complete information about the usage in RAPID refer to RAPID Technical reference manual (accessible from RobotStudio).

    Increased flexibility

    Making use of the feature, the end-user of the robot system can choose whether to use the FlexPendant or the PC SDK application to answer a RAPID UI- or TP-instruction.

    The FlexPendant will always show the operator dialog the usual way. If the operator responds from the PC the message on the FlexPendant will disappear.

    Note

    The dialog box of the PC SDK application should disappear if the operator chooses to respond from the FlexPendant. This is handled by the PC SDK programmer.

    Basic approach

    The basic procedure for implementing Remote operator dialog in a PC SDK application is shown below. The same approach is used internally by the FlexPendant when it launches its operator view.

    Step Action
    1 Set up a subscription to UIInstructionEvent.
    2 In the event handler check the UIInstructionEventType from the event arguments. If Post or Send create an operator dialog by using the information provided by the event arguments.
    3 To transfer the response of the end-user to the RAPID program call the SendAnswer method of the specialized UIInstructionEventArgs object.
    4 Remove any existing operator dialog if you get a UIInstructionEvent of UIInstructionEventType.Abort.
    Note

    The controller events are always received on a background thread and you need to enforce execution to the GUI thread by the use of Invoke before launching the operator dialog. For more information, see Controller events and threads.

    UIInstructionEvent

    To be notified when a UI-instruction event has occurred in the controller, you need to set up a subscription to UIInstructionEvent. To do that you use the UIInstruction property of the Rapid class, like this:

    Controller c = new Controller();
    c.Rapid.UIInstruction.UIInstructionEvent +=
        new UIInstructionEventHandler(OnUIInstructionEvent);
    
    Tip

    For a code example including an event handler see UIInstructionEvent in the API Reference.

    UIInstruction event arguments

    To create the dialog in accordance with the arguments of the RAPID instruction and to transfer the response of the operator back to the executing RAPID program, you can use the information of the event arguments.

    UIInstructionEventArgs

    The UIInstructionEventArgs object holds information about which RAPID task and which UI- or TP-instruction triggered the event. The following picture shows all UIInstructionEventArgs members.

    UIInstructionEventArgs is a base class of several specialized classes, one for each UI- and TP- instruction. The specialized class holds the additional information needed to create the operator dialog, so type casting the UIInstructionEventArgs object to the correct specialized type is necessary. To do that you first check the InstructionType property, which you can see in the preceding image.

    UIListViewEventArgs

    As an example of a specialized type, the members of the UIListViewEventArgs class are shown below. The Buttons and ListItems properties are of course crucial for creating the operator dialog.

    UIInstructionEventType

    An important property in the picture above is UIInstructionEventType. It is inherited from the base class and comes with all UI- and TP- instruction events.

    The following table shows the members of the UIInstructionEventType enumeration.

    Member Description
    Undefined Undefined. Should not occur.
    Post Post event type, for example TPWrite, TPErase. When the event is of this type RAPID expects no response from the operator.
    Send Send event type, for example TPReadNum, UIListView. When the event is of this type the running RAPID program expects feedback from the operator before execution continuous.
    Abort When the controller gets a response from a client (the FlexPendant or a PC SDK application) it sends an event of Abort type. This tells all subscribing clients that the UI-Instruction has been aborted, closed or confirmed by the operator. When you get an event of this type you should remove any open operator dialog.
    Note

    If the robot system has several RAPID tasks, it is necessary to keep track of which operator dialog belongs to which task, and so on. A RAPID task can handle only one pending Send, and it is not guaranteed that an Abort event will always follow a Send event. Therefore, if you receive a new Send event from the same task without a preceding Abort event, you should remove the existing dialog and display the new one.

    SendAnswer method

    To transfer the response of the end-user back to the RAPID program, you can call the SendAnswer method. See the image of the UIListViewEventArgs class above. SendAnswer is called with different arguments depending on the RAPID instruction.

    For example, if it is a UIAlphaEntry instruction you can send the string that the operator has entered as argument. But if it is a UIListView instruction the SendAnswer method will look like this:

    public void SendAnswer(int listItemIdx, UIButtonResult btnRes);
    
    Note

    This operation requires mastership of the RAPID domain. For more information, see Accessing the controller.

    In This Article
    Back to top Copyright © 2025 ABB