.. _open_connection: open_connection ------------------------------------------ This function connects to the robot controller over TCP/IP. TCP/IP is fixed internally, so it does not need to be specified. When two or more robot controllers are used, change the IP address in the T/P application. If the controller does not respond, open_connection returns false. **Definition** |br| ``DRFLEx.h`` within class `CDRFLEx`, public section .. code-block:: cpp bool open_connection(string strIpAddr = "192.168.137.100", unsigned int usPort= 12345) { return _open_connection(_rbtCtrl, strIpAddr.c_str(), usPort); }; **Parameter** .. list-table:: :widths: 20 15 25 40 :header-rows: 1 * - **Parameter Name** - **Data Type** - **Default Value** - **Description** * - strIpAddr - string - "192.168.137.100" - Controller IP address to connect. * - usPort - unsigned int - 12345 - Controller TCP port to connect. **Return** .. list-table:: :widths: 10 20 70 :header-rows: 1 * - **Value** - **Type** - **Description** * - 0 - int - Error — failed to establish a TCP/IP connection. * - 1 - int - Success — successfully connected to the controller. .. note:: When a connection ends (``close_connection``, loss of connection, or ``open_connection`` on an object that is already connected), every callback registered with a ``set_on_*`` function is unregistered, except those registered with ``set_on_disconnected``, ``set_on_monitoring_ctrl_io_ex`` (with DRCF_VERSION 3, the default), ``set_on_rt_monitoring_data`` and ``set_on_rt_log_alarm``, which stay registered. After each successful ``open_connection``, register the other callbacks again and call ``setup_monitoring_version`` again. ``open_connection`` on a connected object closes the existing connection first and prints "Already connected : ". If no data is received from the controller for about 2 seconds, the connection ends and the disconnect callback is called. When the address passed to ``open_connection`` is exactly "127.0.0.1", ``task_compliance_ctrl``, ``set_stiffnessx``, ``release_compliance_ctrl``, ``set_desired_force`` and ``release_force`` return true without sending the command to the controller. The controller accepts at most 10 TCP clients at a time, including the teach pendant. Connect the PC to the controller directly or through a routed network; connections through NAT or port forwarding are rejected during authentication. **Example** .. code-block:: cpp bool bConnected = drfl.open_connection("192.168.137.100"); if (bConnected) { SYSTEM_VERSION tSysVerion = {}; drfl.get_system_version(&tSysVerion); printf("System version: %s\n", tSysVerion._szController); } This example connects the external PC to the robot controller using its IP address. When the connection is successful, it retrieves and prints the controller’s system version information.