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
# 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
# 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))