정의
thread_run(th_func_name, loop=False)
기능
Thread를 생성하여 수행하며 Thread가 수행할 기능은 th_func_name에 지정된 함수에 따라 결정됩니다.
알아두기
Thread 명령어를 사용할 때, 제약 조건은 아래와 같습니다.
-
Thread는 최대 4개까지만 사용 가능합니다.
-
Thread 내에서 로봇을 움직이는 하기 모션 명령어는 사용할 수 없습니다.
-
movej, amovej, movejx, amovejx, movel, amovel, movec, amovec, movesj, amovesj,
-
movesx, amovesx, moveb, amoveb, move_spiral, amove_spiral,
-
move_periodic, amove_periodic
-
-
thread_run 시 loop=Ture 하고, 해당 쓰레드 함수 내에서 무한루프로 블록되어 있는 경우에는 쓰레드 명령들이 정상 동작하지 않습니다. (단, TP를 통한 STOP시, 해당 쓰레드는 정상적으로 종료됩니다.)
인수
|
인수명 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
|
th_func_name |
callable |
- |
Thread가 수행할 function name |
|
loop |
bool |
False |
Thread의 반복 수행 여부
|
리턴
|
값 |
설명 |
|---|---|
|
int |
등록된 thread ID |
|
음수값 |
실패 |
예외
|
예외 |
설명 |
|---|---|
|
DR_Error (DR_ERROR_TYPE) |
인수들의 데이터형 오류 시 |
|
DR_Error (DR_ERROR_VALUE) |
인수의 값이 유효하지 않을 시 |
|
DR_Error (DR_ERROR_RUNTIME) |
C Extension 모듈 에러 발생 시 |
|
DR_Error (DR_ERROR_STOP) |
프로그램 강제 종료 시 |
예제
#----- 쓰레드 --------------------------------------
def fn_th_func():
if check_motion()==0: # 수행 중인 모션이 없는 경우
set_digital_output(1, OFF)
else:
set_digital_output(1, ON)
#----- 메인 루틴 ----------------------------------
th_id = thread_run(fn_th_func, loop=True) #쓰레드 Run
while 1:
# do something…
wait(0.1)