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=True 하고, 해당 쓰레드 함수 내에서 무한루프로 블록되어 있는 경우에는 쓰레드 명령들이 정상 동작하지 않습니다. (단, 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)