정의
sub_program_run(name)
기능
별도의 파일로 작성된 서브프로그램을 실행합니다.
인수
|
인수명 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
|
name |
string |
- |
서브 프로그램 이름 |
리턴
|
값 |
설명 |
|---|---|
|
module |
실행된 서브 프로그램의 모듈 객체 |
예외
|
예외 |
설명 |
|---|---|
|
DR_Error (DR_ERROR_TYPE) |
인수들의 데이터형 오류 시 |
|
DR_Error (DR_ERROR_VALUE) |
인수의 값이 유효하지 않을 시 |
|
DR_Error (DR_ERROR_RUNTIME) |
C Extension 모듈 에러 발생 시 |
|
DR_Error (DR_ERROR_STOP) |
프로그램 강제 종료 시 |
알아두기
-
서브프로그램의 첫줄에 반드시 “from DRCF import *” 구문이 있어야만 합니다.
-
티칭 펜던트 사용하는 경우, 본 구문이 자동 삽입됩니다.
-
메인프로그램과 서브프로그램간에 함수와 전역 변수를 서로 접근할 수 있습니다. 즉, 메인프로그램에서 서브프로그램의 함수와 전역 변수를 접근할 수 있고, 반대로 서브프로그램에서 메인프로그램의 함수와 전역 변수를 접근할 수 있습니다. 하기 예제2를 참조 바랍니다.
-
메인프로그램과 서브프로그램의 전역 변수 이름이 같은 경우, 각각 다른 변수로 동작함에 유의 바랍니다. 즉, 서로 변수 참조가 되지 않습니다.
-
메인프로그램과 서브프로그램의 함수 이름이 같은 경우, 스코프 룰 상 호출된 파일내의 함수가 호출됩니다.
예제 1
Python
# subProgramA, subProgramB 가 사전에 작성 저장되어 있어야 합니다.
<subProgramA.drl>
from DRCF import *
movej([0,0,90,0,90,0], vel=30, acc=30)
<subProgramB.drl>
from DRCF import *
movej[(10,0,90,0,90,0), vel=30, acc=30)
<main program>
while True:
var_select = tp_get_user_input("Select File", DR_VAR_INT)
if var_select == 0:
sub_program_run("subProgramA") # subProgramA 실행
elif var_select == 1:
sub_program_run("subProgramB") # subProgramB 실행
예제 2
Python
# subProgram이 사전에 작성 저장되어 있어야 합니다.
<subProgram.drl>
from DRCF import *
g_sub_count = 1 # subProgram의 전역변수
def funcA():
global g_main_count
global g_main_var
g_main_var += g_main_count # main Program의 전역변수 접근
return 0
def funcB():
global g_sub_count
global g_main_var
g_main_var += g_sub_count # main Program의 전역변수 접근
return 0
global main_func
main_func() # main Program의 함수 접근
<main program>
def main_func(): # main Program의 함수
tp_log("main_func called")
return 0
g_main_var = 0 # main Program의 전역변수
g_main_count = 10 # main Program의 전역변수
#import subProgram
subModule = sub_program_run("subProgram")
#subProgram 내의 funcA() 함수 호출
subModule.funcA()
tp_log("funcA: g_main_var = " + str(g_main_var))
# subProgram 내의 전역 변수 g_sub_count 접근
subModule.g_sub_count += 1
#subProgram 내의 funcB() 함수 호출
subModule.funcB()
#연산 결과 값 : "12"
tp_log("funcA: g_main_var = " + str(g_main_var))