open_connection
이 함수는 TCP/IP로 로봇 컨트롤러에 연결합니다. TCP/IP는 내부에서 고정되어 있으므로 따로 지정할 필요가 없습니다. 로봇 컨트롤러를 두 대 이상 사용하는 경우 T/P 애플리케이션에서 IP 주소를 바꾸세요.
컨트롤러가 응답하지 않으면 open_connection은 false를 반환합니다.
정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool open_connection(string strIpAddr = "192.168.137.100", unsigned int usPort= 12345) { return _open_connection(_rbtCtrl, strIpAddr.c_str(), usPort); };
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
strIpAddr |
string |
“192.168.137.100” |
연결할 컨트롤러 IP 주소입니다. |
usPort |
unsigned int |
12345 |
연결할 컨트롤러 TCP 포트입니다. |
반환값
값 |
유형 |
설명 |
|---|---|---|
0 |
int |
오류 — TCP/IP 연결을 설정하지 못했습니다. |
1 |
int |
성공 — 컨트롤러에 연결했습니다. |
참고
연결이 종료되면(close_connection, 연결 끊김, 이미 연결된 객체에서 open_connection 호출) set_on_* 함수로 등록한 콜백의 등록이 모두 해제됩니다. 단, set_on_disconnected, set_on_monitoring_ctrl_io_ex(기본값인 DRCF_VERSION 3일 때), set_on_rt_monitoring_data, set_on_rt_log_alarm으로 등록한 콜백은 등록이 유지됩니다. open_connection이 성공할 때마다 나머지 콜백을 다시 등록하고 setup_monitoring_version을 다시 호출하세요. 이미 연결된 객체에서 open_connection을 호출하면 기존 연결을 먼저 닫고 “Already connected : <ip>”를 출력합니다.
컨트롤러에서 약 2초 동안 데이터를 받지 못하면 연결이 끊기고 연결 해제 콜백이 호출됩니다.
open_connection에 전달한 주소가 정확히 “127.0.0.1”이면 task_compliance_ctrl, set_stiffnessx, release_compliance_ctrl, set_desired_force, release_force는 컨트롤러에 명령을 보내지 않고 true를 반환합니다.
컨트롤러는 티치펜던트를 포함해 TCP 클라이언트를 동시에 최대 10개까지 받습니다. PC는 컨트롤러에 직접 연결하거나 라우팅된 네트워크로 연결하세요. NAT나 포트 포워딩을 거친 연결은 인증 단계에서 거부됩니다.
예제
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);
}
이 예제는 IP 주소로 외부 PC를 로봇 컨트롤러에 연결합니다. 연결에 성공하면 컨트롤러의 시스템 버전 정보를 가져와 출력합니다.