Breadcrumbs

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)

프로그램 강제 종료 시


  1. 서브프로그램의 첫줄에 반드시 “from DRCF import *” 구문이 있어야만 합니다.

  2. 티칭 펜던트 사용하는 경우, 본 구문이 자동 삽입됩니다.

  3. 메인프로그램과 서브프로그램간에 함수와 전역 변수를 서로 접근할 수 있습니다. 즉, 메인프로그램에서 서브프로그램의 함수와 전역 변수를 접근할 수 있고, 반대로 서브프로그램에서 메인프로그램의 함수와 전역 변수를 접근할 수 있습니다. 하기 예제2를 참조 바랍니다.

  4. 메인프로그램과 서브프로그램의 전역 변수 이름이 같은 경우, 각각 다른 변수로 동작함에 유의 바랍니다. 즉, 서로 변수 참조가 되지 않습니다.

  5. 메인프로그램과 서브프로그램의 함수 이름이 같은 경우, 스코프 룰 상 호출된 파일내의 함수가 호출됩니다.


예제 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))