4.6 C99 BasScript Builder
개요
C99 BasScript는 ArmBasScriptHandle* 와 ArmBasExtraParamHandle* 를 생성기 핸들로 사용합니다. 이들은 로컬 스크립트 텍스트 생성 객체이며, 스크립트를 실행할 때만 ArmHandle* 를 전달하면 됩니다.
대응 헤더 파일:
include/c_arm_bas_script.h
기본 인터페이스
Arm_BasScript_Create
c
int Arm_BasScript_Create(ArmBasScriptHandle** outScript);| 항목 | 설명 |
|---|---|
| 설명 | 빈 BAS 스크립트 생성기를 생성합니다. |
| 요청 파라미터 | outScript : ArmBasScriptHandle** , 스크립트 생성기 핸들 출력이며, 성공 시 비어 있지 않은 포인터를 기록합니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_CreateWithName
c
int Arm_BasScript_CreateWithName(const char* scriptName, ArmBasScriptHandle** outScript);| 항목 | 설명 |
|---|---|
| 설명 | 스크립트 이름이 있는 BAS 스크립트 생성기를 생성합니다. |
| 요청 파라미터 | scriptName : const char* , 스크립트 이름 문자열outScript : ArmBasScriptHandle** , 스크립트 생성기 핸들 출력이며, 성공 시 비어 있지 않은 포인터를 기록합니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Destroy
c
void Arm_BasScript_Destroy(ArmBasScriptHandle* script);| 항목 | 설명 |
|---|---|
| 설명 | BAS 스크립트 생성기를 폐기합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들 |
| 반환값 | 반환값 없음 |
Arm_BasScript_Reset
c
int Arm_BasScript_Reset(ArmBasScriptHandle* script);| 항목 | 설명 |
|---|---|
| 설명 | BAS 스크립트 생성기를 리셋합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_SetName
c
int Arm_BasScript_SetName(ArmBasScriptHandle* script, const char* scriptName);| 항목 | 설명 |
|---|---|
| 설명 | BAS 스크립트 이름을 설정합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들scriptName : const char* , 스크립트 이름 문자열 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_GetName
c
int Arm_BasScript_GetName(ArmBasScriptHandle* script, char* outBuf, size_t bufSize);| 항목 | 설명 |
|---|---|
| 설명 | BAS 스크립트 이름을 읽습니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들outBuf : char* , 호출자가 할당하는 출력 문자열 버퍼bufSize : size_t , 출력 버퍼 크기이며 끝의 \0 공간을 포함합니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
| 비고 | 문자열 출력은 호출자가 제공한 버퍼를 사용하며, 버퍼가 부족하면 상태 코드에 따라 반환합니다. |
Arm_BasScript_AppendLine
c
int Arm_BasScript_AppendLine(ArmBasScriptHandle* script, const char* line);| 항목 | 설명 |
|---|---|
| 설명 | 단일 행 BAS 스크립트 텍스트를 추가합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들line : const char* , 단일 행 BAS 스크립트 텍스트 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_AppendLines
c
int Arm_BasScript_AppendLines(ArmBasScriptHandle* script, const char* const* lines, size_t lineCount);| 항목 | 설명 |
|---|---|
| 설명 | 여러 행의 BAS 스크립트 텍스트를 추가합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들lines : const char* const* , BAS 스크립트 텍스트 행 배열lineCount : size_t , 스크립트 텍스트 행 개수 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_GetText
c
int Arm_BasScript_GetText(ArmBasScriptHandle* script, char* outBuf, size_t bufSize);| 항목 | 설명 |
|---|---|
| 설명 | 현재 생성기가 만든 BAS 스크립트 텍스트를 내보냅니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들outBuf : char* , 호출자가 할당하는 출력 문자열 버퍼bufSize : size_t , 출력 버퍼 크기이며 끝의 \0 공간을 포함합니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
| 비고 | 문자열 출력은 호출자가 제공한 버퍼를 사용하며, 버퍼가 부족하면 상태 코드에 따라 반환합니다. |
Arm_BasScript_GetLineCount
c
int Arm_BasScript_GetLineCount(ArmBasScriptHandle* script, size_t* outCount);| 항목 | 설명 |
|---|---|
| 설명 | 현재 스크립트 텍스트 행 수를 읽습니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들outCount : size_t* , 출력 개수 포인터이며 성공 시 실제 개수를 기록합니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Execute
c
int Arm_BasScript_Execute(ArmHandle* h, ArmBasScriptHandle* script);| 항목 | 설명 |
|---|---|
| 설명 | 현재 생성기가 만든 BAS 스크립트를 실행합니다. |
| 요청 파라미터 | h : ArmHandle* , C99 세션 핸들이며 일반적으로 Arm_Create() 에서 생성합니다. 비즈니스 인터페이스는 먼저 연결에 성공해야 합니다script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
값 생성 인터페이스
Arm_BasValue_Int32
c
ArmBasValue Arm_BasValue_Int32(int32_t value);| 항목 | 설명 |
|---|---|
| 설명 | int32_t 타입의 BAS 파라미터 값을 생성합니다. |
| 요청 파라미터 | value : int32_t , 정수 리터럴 |
| 반환값 | ArmBasValue ; BasScript 생성 인터페이스에 계속 전달할 수 있는 값 객체를 반환합니다. |
Arm_BasValue_Float64
c
ArmBasValue Arm_BasValue_Float64(double value);| 항목 | 설명 |
|---|---|
| 설명 | double 타입의 BAS 파라미터 값을 생성합니다. |
| 요청 파라미터 | value : double , 부동소수점 리터럴 |
| 반환값 | ArmBasValue ; BasScript 생성 인터페이스에 계속 전달할 수 있는 값 객체를 반환합니다. |
Arm_BasValue_String
c
ArmBasValue Arm_BasValue_String(const char* value);| 항목 | 설명 |
|---|---|
| 설명 | 문자열 타입의 BAS 파라미터 값을 생성합니다. |
| 요청 파라미터 | value : const char* , 문자열 리터럴이며 NULL 이면 안 됩니다 |
| 반환값 | ArmBasValue ; BasScript 생성 인터페이스에 계속 전달할 수 있는 값 객체를 반환합니다. |
Arm_BasValue_TaggedInt
c
ArmBasValue Arm_BasValue_TaggedInt(int32_t tag, int32_t value);| 항목 | 설명 |
|---|---|
| 설명 | 열거형 파라미터에 사용할 태그가 있는 정수 BAS 파라미터 값을 생성합니다. |
| 요청 파라미터 | tag : int32_t , 값 태그이며 ArmBasValue 의 현재 필드 의미를 나타냅니다value : int32_t , 태그에 대응하는 열거값 또는 인덱스 값 |
| 반환값 | ArmBasValue ; BasScript 생성 인터페이스에 계속 전달할 수 있는 값 객체를 반환합니다. |
명령 생성 인터페이스
Arm_BasScript_SetParam
c
int Arm_BasScript_SetParam(ArmBasScriptHandle* script, int32_t type, int32_t valueType, ArmBasValue value);| 항목 | 설명 |
|---|---|
| 설명 | 스크립트 파라미터를 설정하는 BAS 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들type : int32_t , 스크립트 파라미터 타입, 값은 다음을 참고: ArmBasParamType valueType : int32_t , 값 소스 타입, 값은 다음을 참고: ArmBasValueType value : ArmBasValue , valueType 이 직접 값이면 파라미터 값을 의미하고, R 레지스터이면 R 번호를 의미합니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_AssignValue
c
int Arm_BasScript_AssignValue(ArmBasScriptHandle* script, int32_t param1, int32_t index, ArmBasValue param2, ArmBasValue value, int32_t optIndex, int32_t optValue);| 항목 | 설명 |
|---|---|
| 설명 | 대입 BAS 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들param1 : int32_t , 대입 왼쪽 타입이며 값은 ArmBasAssignType 을 참고합니다.index : int32_t , 대입 왼쪽 번호입니다. 예: R, PR, SR 또는 IO 번호param2 : ArmBasValue , 대입 오른쪽 소스 타입이며 레지스터, IO, 리터럴, 문자열 또는 현재 자세를 사용할 수 있습니다.value : ArmBasValue , 대입 오른쪽 값 또는 소스 번호입니다.optIndex : int32_t , PR 요소, IO 그룹 또는 추가 인덱스입니다.optValue : int32_t , PR 요소, IO 상태 또는 추가 값입니다. |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Motion_MoveJoint
c
int Arm_BasScript_Motion_MoveJoint(ArmBasScriptHandle* script, int32_t poseType, int32_t poseIndex, int32_t speedType, double speedValue, int32_t smoothType, double smoothDistance, const ArmBasExtraParamHandle* extraParam);| 항목 | 설명 |
|---|---|
| 설명 | 관절 운동을 실행하거나 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들poseType : int32_t , 자세 타입이며 관절 또는 직교 좌표입니다poseIndex : int32_t , PR 포인트 인덱스speedType : int32_t , 속도 타입이며 직접 값 또는 레지스터입니다speedValue : double , 속도 값 또는 속도 레지스터 인덱스smoothType : int32_t , 스무딩 타입smoothDistance : double , 스무딩 거리extraParam : const ArmBasExtraParamHandle* , BasScript 추가 파라미터 생성기 핸들, NULL 이면 추가 파라미터를 붙이지 않습니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Motion_MoveLine
c
int Arm_BasScript_Motion_MoveLine(ArmBasScriptHandle* script, int32_t poseType, int32_t poseIndex, int32_t speedType, double speedValue, int32_t smoothType, double smoothDistance, const ArmBasExtraParamHandle* extraParam);| 항목 | 설명 |
|---|---|
| 설명 | 직선 운동을 실행하거나 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들poseType : int32_t , 자세 타입이며 관절 또는 직교 좌표입니다poseIndex : int32_t , PR 포인트 인덱스speedType : int32_t , 속도 타입이며 직접 값 또는 레지스터입니다speedValue : double , 속도 값 또는 속도 레지스터 인덱스smoothType : int32_t , 스무딩 타입smoothDistance : double , 스무딩 거리extraParam : const ArmBasExtraParamHandle* , BasScript 추가 파라미터 생성기 핸들, NULL 이면 추가 파라미터를 붙이지 않습니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Motion_MoveCircle
c
int Arm_BasScript_Motion_MoveCircle(ArmBasScriptHandle* script, int32_t poseType1, int32_t poseIndex1, int32_t poseType2, int32_t poseIndex2, int32_t speedType, double speedValue, int32_t smoothType, double smoothDistance, const ArmBasExtraParamHandle* extraParam);| 항목 | 설명 |
|---|---|
| 설명 | 원호 운동을 실행하거나 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들poseType1 : int32_t , 경유점 소스 타입, 현재 공개 값은 ARM_BAS_MOVE_POSE_PR poseIndex1 : int32_t , 경유점 PR 인덱스poseType2 : int32_t , 끝점 소스 타입, 현재 공개 값은 ARM_BAS_MOVE_POSE_PR poseIndex2 : int32_t , 끝점 PR 인덱스speedType : int32_t , 속도 타입이며 직접 값 또는 레지스터입니다speedValue : double , 속도 값 또는 속도 레지스터 인덱스smoothType : int32_t , 스무딩 타입smoothDistance : double , 스무딩 거리extraParam : const ArmBasExtraParamHandle* , BasScript 추가 파라미터 생성기 핸들, NULL 이면 추가 파라미터를 붙이지 않습니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Motion_MoveJump
c
int Arm_BasScript_Motion_MoveJump(ArmBasScriptHandle* script, int32_t poseType, int32_t poseIndex, double speedValue, double speedRatio, int32_t limZType, double limZValue, int32_t smoothType, double smoothDistance, const ArmBasExtraParamHandle* extraParam);| 항목 | 설명 |
|---|---|
| 설명 | BasScript Motion MoveJump 에 대응하는 C99 인터페이스 기능을 실행합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들poseType : int32_t , 자세 타입이며 관절 또는 직교 좌표입니다poseIndex : int32_t , PR 포인트 인덱스speedValue : double , 속도 값 또는 속도 레지스터 인덱스speedRatio : double , 속도 비율limZType : int32_t , Jump 높이 제한 파라미터 타입limZValue : double , Jump 높이 제한 값smoothType : int32_t , 스무딩 타입smoothDistance : double , 스무딩 거리extraParam : const ArmBasExtraParamHandle* , BasScript 추가 파라미터 생성기 핸들, NULL 이면 추가 파라미터를 붙이지 않습니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Motion_MoveJump3
c
int Arm_BasScript_Motion_MoveJump3(ArmBasScriptHandle* script, int32_t poseType, const int32_t* poseIndexList, size_t poseIndexCount, double speedValue, double speedRatio, int32_t smoothType, double smoothDistance, const ArmBasExtraParamHandle* extraParam);| 항목 | 설명 |
|---|---|
| 설명 | BasScript Motion MoveJump3 에 대응하는 C99 인터페이스 기능을 실행합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들poseType : int32_t , 자세 타입이며 관절 또는 직교 좌표입니다poseIndexList : const int32_t* , PR 포인트 인덱스 배열poseIndexCount : size_t , PR 포인트 인덱스 개수speedValue : double , 속도 값 또는 속도 레지스터 인덱스speedRatio : double , 속도 비율smoothType : int32_t , 스무딩 타입smoothDistance : double , 스무딩 거리extraParam : const ArmBasExtraParamHandle* , BasScript 추가 파라미터 생성기 핸들, NULL 이면 추가 파라미터를 붙이지 않습니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Motion_MoveJump3cp
c
int Arm_BasScript_Motion_MoveJump3cp(ArmBasScriptHandle* script, int32_t poseType, const int32_t* poseIndexList, size_t poseIndexCount, double speedValue, int32_t smoothType, double smoothDistance, const ArmBasExtraParamHandle* extraParam);| 항목 | 설명 |
|---|---|
| 설명 | BasScript Motion MoveJump3cp 에 대응하는 C99 인터페이스 기능을 실행합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들poseType : int32_t , 자세 타입이며 관절 또는 직교 좌표입니다poseIndexList : const int32_t* , PR 포인트 인덱스 배열poseIndexCount : size_t , PR 포인트 인덱스 개수speedValue : double , 속도 값 또는 속도 레지스터 인덱스smoothType : int32_t , 스무딩 타입smoothDistance : double , 스무딩 거리extraParam : const ArmBasExtraParamHandle* , BasScript 추가 파라미터 생성기 핸들, NULL 이면 추가 파라미터를 붙이지 않습니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_If
c
int Arm_BasScript_Logical_If(ArmBasScriptHandle* script, ArmBasValue param1, int32_t index, ArmBasValue param2, ArmBasValue value, int32_t op);| 항목 | 설명 |
|---|---|
| 설명 | IF 조건문을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들param1 : ArmBasValue , 조건 왼쪽 소스 타입이며 레지스터, IO, 리터럴 또는 문자열을 사용할 수 있습니다.index : int32_t , 조건 왼쪽 번호입니다. 예: R, SR 또는 IO 번호param2 : ArmBasValue , 조건 오른쪽 소스 타입입니다.value : ArmBasValue , 조건 오른쪽 값 또는 소스 번호입니다.op : int32_t , 비교 또는 논리 연산자이며 값은 ArmBasBooleanOperator 를 참고합니다. |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_ElseIf
c
int Arm_BasScript_Logical_ElseIf(ArmBasScriptHandle* script, ArmBasValue param1, int32_t index, ArmBasValue param2, ArmBasValue value, int32_t op);| 항목 | 설명 |
|---|---|
| 설명 | ELSE IF 조건문을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들param1 : ArmBasValue , 조건 왼쪽 소스 타입이며 레지스터, IO, 리터럴 또는 문자열을 사용할 수 있습니다.index : int32_t , 조건 왼쪽 번호입니다. 예: R, SR 또는 IO 번호param2 : ArmBasValue , 조건 오른쪽 소스 타입입니다.value : ArmBasValue , 조건 오른쪽 값 또는 소스 번호입니다.op : int32_t , 비교 또는 논리 연산자이며 값은 ArmBasBooleanOperator 를 참고합니다. |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_Else
c
int Arm_BasScript_Logical_Else(ArmBasScriptHandle* script);| 항목 | 설명 |
|---|---|
| 설명 | ELSE 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_EndIf
c
int Arm_BasScript_Logical_EndIf(ArmBasScriptHandle* script);| 항목 | 설명 |
|---|---|
| 설명 | ENDIF 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_Switch
c
int Arm_BasScript_Logical_Switch(ArmBasScriptHandle* script, ArmBasValue param, int32_t index);| 항목 | 설명 |
|---|---|
| 설명 | SWITCH / SELECT 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들param : ArmBasValue , SELECT 표현식 소스 타입입니다.index : int32_t , SELECT 표현식 번호입니다. 예: R, SR 또는 IO 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_Case
c
int Arm_BasScript_Logical_Case(ArmBasScriptHandle* script, ArmBasValue param, ArmBasValue value);| 항목 | 설명 |
|---|---|
| 설명 | CASE 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들param : ArmBasValue , CASE 값 소스 타입value : ArmBasValue , CASE 매칭 값 또는 소스 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_Default
c
int Arm_BasScript_Logical_Default(ArmBasScriptHandle* script);| 항목 | 설명 |
|---|---|
| 설명 | DEFAULT 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_EndSwitch
c
int Arm_BasScript_Logical_EndSwitch(ArmBasScriptHandle* script);| 항목 | 설명 |
|---|---|
| 설명 | END SWITCH / ENDSELECT 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_While
c
int Arm_BasScript_Logical_While(ArmBasScriptHandle* script, ArmBasValue param1, int32_t index, ArmBasValue param2, ArmBasValue value, int32_t op);| 항목 | 설명 |
|---|---|
| 설명 | WHILE 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들param1 : ArmBasValue , 조건 왼쪽 소스 타입이며 레지스터, IO, 리터럴 또는 문자열을 사용할 수 있습니다.index : int32_t , 조건 왼쪽 번호입니다. 예: R, SR 또는 IO 번호param2 : ArmBasValue , 조건 오른쪽 소스 타입입니다.value : ArmBasValue , 조건 오른쪽 값 또는 소스 번호입니다.op : int32_t , 비교 또는 논리 연산자이며 값은 ArmBasBooleanOperator 를 참고합니다. |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_EndWhile
c
int Arm_BasScript_Logical_EndWhile(ArmBasScriptHandle* script);| 항목 | 설명 |
|---|---|
| 설명 | WHILE 종료 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_Goto
c
int Arm_BasScript_Logical_Goto(ArmBasScriptHandle* script, int32_t index);| 항목 | 설명 |
|---|---|
| 설명 | GOTO 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들index : int32_t , 대상 LABEL 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_Label
c
int Arm_BasScript_Logical_Label(ArmBasScriptHandle* script, int32_t index);| 항목 | 설명 |
|---|---|
| 설명 | LABEL 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들index : int32_t , 현재 LABEL 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_SkipCondition
c
int Arm_BasScript_Logical_SkipCondition(ArmBasScriptHandle* script, ArmBasValue param1, int32_t index, ArmBasValue param2, ArmBasValue value, int32_t op);| 항목 | 설명 |
|---|---|
| 설명 | SKIP CONDITION 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들param1 : ArmBasValue , 조건 왼쪽 소스 타입이며 레지스터, IO, 리터럴 또는 문자열을 사용할 수 있습니다.index : int32_t , 조건 왼쪽 번호입니다. 예: R, SR 또는 IO 번호param2 : ArmBasValue , 조건 오른쪽 소스 타입입니다.value : ArmBasValue , 조건 오른쪽 값 또는 소스 번호입니다.op : int32_t , 비교 또는 논리 연산자이며 값은 ArmBasBooleanOperator 를 참고합니다. |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_Break
c
int Arm_BasScript_Logical_Break(ArmBasScriptHandle* script);| 항목 | 설명 |
|---|---|
| 설명 | BREAK 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Logical_Continue
c
int Arm_BasScript_Logical_Continue(ArmBasScriptHandle* script);| 항목 | 설명 |
|---|---|
| 설명 | CONTINUE 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Structure_Wait
c
int Arm_BasScript_Structure_Wait(ArmBasScriptHandle* script, ArmBasValue param1, int32_t index, ArmBasValue param2, ArmBasValue value, int32_t op);| 항목 | 설명 |
|---|---|
| 설명 | 조건 대기 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들param1 : ArmBasValue , 대기 조건 왼쪽 소스 타입입니다.index : int32_t , 대기 조건 왼쪽 번호입니다. 예: R, SR 또는 IO 번호param2 : ArmBasValue , 대기 조건 오른쪽 소스 타입입니다.value : ArmBasValue , 대기 조건 오른쪽 값 또는 소스 번호입니다.op : int32_t , 비교 또는 논리 연산자이며 값은 ArmBasBooleanOperator 를 참고합니다. |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Structure_WaitTime
c
int Arm_BasScript_Structure_WaitTime(ArmBasScriptHandle* script, int32_t valueType, ArmBasValue value);| 항목 | 설명 |
|---|---|
| 설명 | 시간 기준 대기 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들valueType : int32_t , 시간 소스 타입, 값은 다음을 참고: ArmBasValueType value : ArmBasValue , 대기 시간 초 수 또는 R 레지스터 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Structure_Pause
c
int Arm_BasScript_Structure_Pause(ArmBasScriptHandle* script);| 항목 | 설명 |
|---|---|
| 설명 | 일시정지 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Structure_Abort
c
int Arm_BasScript_Structure_Abort(ArmBasScriptHandle* script);| 항목 | 설명 |
|---|---|
| 설명 | 중지 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Structure_Call
c
int Arm_BasScript_Structure_Call(ArmBasScriptHandle* script, const char* name);| 항목 | 설명 |
|---|---|
| 설명 | 스크립트 동기 호출 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들name : const char* , 동기 호출할 스크립트 이름이며 NULL 이면 안 됩니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Structure_Run
c
int Arm_BasScript_Structure_Run(ArmBasScriptHandle* script, const char* name);| 항목 | 설명 |
|---|---|
| 설명 | 스크립트 비동기 실행 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들name : const char* , 비동기 실행할 스크립트 이름이며 NULL 이면 안 됩니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Structure_Load
c
int Arm_BasScript_Structure_Load(ArmBasScriptHandle* script, int32_t loadType, ArmBasValue value);| 항목 | 설명 |
|---|---|
| 설명 | LOAD 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들loadType : int32_t , 프로그램 식별자 소스, 값은 다음을 참고: ArmBasLoadType value : ArmBasValue , 스크립트 이름, R/SR 번호 또는 직접 값 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Structure_Unload
c
int Arm_BasScript_Structure_Unload(ArmBasScriptHandle* script, int32_t loadType, ArmBasValue value);| 항목 | 설명 |
|---|---|
| 설명 | UNLOAD 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들loadType : int32_t , 프로그램 식별자 소스, 값은 다음을 참고: ArmBasLoadType value : ArmBasValue , 스크립트 이름, R/SR 번호 또는 직접 값 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Structure_Exec
c
int Arm_BasScript_Structure_Exec(ArmBasScriptHandle* script, int32_t loadType, ArmBasValue value);| 항목 | 설명 |
|---|---|
| 설명 | EXEC 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들loadType : int32_t , 프로그램 식별자 소스, 값은 다음을 참고: ArmBasLoadType value : ArmBasValue , 스크립트 이름, R/SR 번호 또는 직접 값 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Socket_Open
c
int Arm_BasScript_Socket_Open(ArmBasScriptHandle* script, int32_t index);| 항목 | 설명 |
|---|---|
| 설명 | Socket 열기 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들index : int32_t , Socket 채널 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Socket_Close
c
int Arm_BasScript_Socket_Close(ArmBasScriptHandle* script, int32_t index);| 항목 | 설명 |
|---|---|
| 설명 | Socket 닫기 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들index : int32_t , Socket 채널 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Socket_Connect
c
int Arm_BasScript_Socket_Connect(ArmBasScriptHandle* script, int32_t index);| 항목 | 설명 |
|---|---|
| 설명 | Socket 연결 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들index : int32_t , Socket 채널 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Socket_Send
c
int Arm_BasScript_Socket_Send(ArmBasScriptHandle* script, int32_t index, int32_t msgType, ArmBasValue value);| 항목 | 설명 |
|---|---|
| 설명 | Socket 전송 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들index : int32_t , Socket 채널 번호msgType : int32_t , Socket 메시지 타입, 값은 다음을 참고: ArmBasStrType value : ArmBasValue , ARM_BAS_STR_STRING 이면 문자열, ARM_BAS_STR_SR 이면 SR 번호입니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Socket_Recv
c
int Arm_BasScript_Socket_Recv(ArmBasScriptHandle* script, int32_t index, int32_t msgLength, int32_t msgType, ArmBasValue value);| 항목 | 설명 |
|---|---|
| 설명 | Socket 수신 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들index : int32_t , Socket 채널 번호msgLength : int32_t , 수신 메시지 길이msgType : int32_t , Socket 메시지 타입, 값은 다음을 참고: ArmBasStrType value : ArmBasValue , ARM_BAS_STR_STRING 이면 문자열 변수 이름, ARM_BAS_STR_SR 이면 SR 번호입니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Modbus_ReadMH
c
int Arm_BasScript_Modbus_ReadMH(ArmBasScriptHandle* script, int32_t index, int32_t id, int32_t address, int32_t length, int32_t rIndex);| 항목 | 설명 |
|---|---|
| 설명 | MH를 읽는 Modbus 스크립트 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들index : int32_t , Modbus 문장 인덱스id : int32_t , Modbus 슬레이브 IDaddress : int32_t , MH 시작 주소length : int32_t , 읽기 길이rIndex : int32_t , 결과를 쓸 R 레지스터 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Modbus_ReadMI
c
int Arm_BasScript_Modbus_ReadMI(ArmBasScriptHandle* script, int32_t index, int32_t id, int32_t address, int32_t length, int32_t rIndex);| 항목 | 설명 |
|---|---|
| 설명 | MI를 읽는 Modbus 스크립트 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들index : int32_t , Modbus 문장 인덱스id : int32_t , Modbus 슬레이브 IDaddress : int32_t , MI 시작 주소length : int32_t , 읽기 길이rIndex : int32_t , 결과를 쓸 R 레지스터 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Modbus_WriteMH
c
int Arm_BasScript_Modbus_WriteMH(ArmBasScriptHandle* script, int32_t index, int32_t id, int32_t address, int32_t length, int32_t valueType, int32_t value);| 항목 | 설명 |
|---|---|
| 설명 | MH에 쓰는 Modbus 스크립트 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들index : int32_t , Modbus 문장 인덱스id : int32_t , Modbus 슬레이브 IDaddress : int32_t , MH 시작 주소length : int32_t , 쓰기 길이valueType : int32_t , 쓰기 값 소스, 값은 다음을 참고: ArmBasValueType value : int32_t , 직접 쓸 값 또는 R 레지스터 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Vision_Find
c
int Arm_BasScript_Vision_Find(ArmBasScriptHandle* script, const char* name);| 항목 | 설명 |
|---|---|
| 설명 | 비전 찾기 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들name : const char* , 비전 작업 이름이며 NULL 이면 안 됩니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Vision_GetOffset
c
int Arm_BasScript_Vision_GetOffset(ArmBasScriptHandle* script, const char* name, int32_t index, int32_t labelIndex);| 항목 | 설명 |
|---|---|
| 설명 | 비전 오프셋 획득 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들name : const char* , 비전 작업 이름이며 NULL 이면 안 됩니다index : int32_t , 비전 오프셋 결과 번호labelIndex : int32_t , 오프셋 실패 시 점프할 라벨 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasScript_Vision_GetQuantity
c
int Arm_BasScript_Vision_GetQuantity(ArmBasScriptHandle* script, const char* name, int32_t index);| 항목 | 설명 |
|---|---|
| 설명 | 비전 개수 획득 문장을 생성합니다. |
| 요청 파라미터 | script : ArmBasScriptHandle* , BasScript 스크립트 생성기 핸들name : const char* , 비전 작업 이름이며 NULL 이면 안 됩니다index : int32_t , 개수 결과를 쓸 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
추가 파라미터 인터페이스
Arm_BasExtraParam_Create
c
int Arm_BasExtraParam_Create(ArmBasExtraParamHandle** outExtraParam);| 항목 | 설명 |
|---|---|
| 설명 | BAS 추가 파라미터 생성기를 생성합니다. |
| 요청 파라미터 | outExtraParam : ArmBasExtraParamHandle** , 추가 파라미터 생성기 핸들 출력이며, 성공 시 비어 있지 않은 포인터를 기록합니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasExtraParam_Destroy
c
void Arm_BasExtraParam_Destroy(ArmBasExtraParamHandle* extraParam);| 항목 | 설명 |
|---|---|
| 설명 | BAS 추가 파라미터 생성기를 폐기합니다. |
| 요청 파라미터 | extraParam : ArmBasExtraParamHandle* , 폐기할 추가 파라미터 생성기이며 NULL 일 수 있습니다 |
| 반환값 | 반환값 없음 |
Arm_BasExtraParam_Reset
c
int Arm_BasExtraParam_Reset(ArmBasExtraParamHandle* extraParam);| 항목 | 설명 |
|---|---|
| 설명 | BAS 추가 파라미터 생성기를 리셋합니다. |
| 요청 파라미터 | extraParam : ArmBasExtraParamHandle* , 리셋할 추가 파라미터 생성기 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasExtraParam_GetText
c
int Arm_BasExtraParam_GetText(ArmBasExtraParamHandle* extraParam, char* outBuf, size_t bufSize);| 항목 | 설명 |
|---|---|
| 설명 | 현재 추가 파라미터 텍스트를 내보냅니다. |
| 요청 파라미터 | extraParam : ArmBasExtraParamHandle* , 추가 파라미터 생성기outBuf : char* , 호출자가 할당하는 출력 문자열 버퍼bufSize : size_t , 출력 버퍼 크기이며 끝의 \0 공간을 포함합니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
| 비고 | 문자열 출력은 호출자가 제공한 버퍼를 사용하며, 버퍼가 부족하면 상태 코드에 따라 반환합니다. |
Arm_BasExtraParam_Acceleration
c
int Arm_BasExtraParam_Acceleration(ArmBasExtraParamHandle* extraParam, double value);| 항목 | 설명 |
|---|---|
| 설명 | 가속도 추가 파라미터를 추가합니다. |
| 요청 파라미터 | extraParam : ArmBasExtraParamHandle* , 추가 파라미터 생성기value : double , 추가 가속도이며 1~120 을 벗어나면 100.0 으로 출력합니다 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasExtraParam_Rctp
c
int Arm_BasExtraParam_Rctp(ArmBasExtraParamHandle* extraParam);| 항목 | 설명 |
|---|---|
| 설명 | RTCP 추가 파라미터를 추가합니다. |
| 요청 파라미터 | extraParam : ArmBasExtraParamHandle* , 추가 파라미터 생성기 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasExtraParam_Offset
c
int Arm_BasExtraParam_Offset(ArmBasExtraParamHandle* extraParam, int32_t index);| 항목 | 설명 |
|---|---|
| 설명 | 좌표 오프셋 추가 파라미터를 추가합니다. |
| 요청 파라미터 | extraParam : ArmBasExtraParamHandle* , 추가 파라미터 생성기index : int32_t , 오프셋에 사용할 PR 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasExtraParam_Tb
c
int Arm_BasExtraParam_Tb(ArmBasExtraParamHandle* extraParam, double second, const char* type, const char* name, int32_t index, const char* status);| 항목 | 설명 |
|---|---|
| 설명 | TB 추가 파라미터를 추가합니다. |
| 요청 파라미터 | extraParam : ArmBasExtraParamHandle* , 추가 파라미터 생성기second : double , 시간 파라미터이며 단위는 초입니다type : const char* , TB 타입입니다. 예: RUN 또는 ASSIGN name : const char* , RUN 타입에서 사용하는 스크립트 이름이며, TB 타입에 따라 빈 값으로 전달할 수 있습니다index : int32_t , ASSIGN 타입에서 사용하는 인덱스status : const char* , ASSIGN 타입에서 사용하는 상태 문자열 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasExtraParam_Skip
c
int Arm_BasExtraParam_Skip(ArmBasExtraParamHandle* extraParam, int32_t index);| 항목 | 설명 |
|---|---|
| 설명 | Skip 추가 파라미터를 추가합니다. |
| 요청 파라미터 | extraParam : ArmBasExtraParamHandle* , 추가 파라미터 생성기index : int32_t , 점프할 LABEL 번호 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
Arm_BasExtraParam_Approach
c
int Arm_BasExtraParam_Approach(ArmBasExtraParamHandle* extraParam, double departureDist, double approachingDist);| 항목 | 설명 |
|---|---|
| 설명 | Jump 접근/이탈 거리 파라미터를 추가합니다. |
| 요청 파라미터 | extraParam : ArmBasExtraParamHandle* , 추가 파라미터 생성기departureDist : double , Jump 이탈 거리approachingDist : double , Jump 접근 거리 |
| 반환값 | STATUS_CODE 정수값입니다. 0 은 성공을 의미하며, 그 외 값은 상태 코드에 따라 처리합니다. |
열거형 및 값
| 열거형 | 설명 |
|---|---|
ArmBasMovePoseType | 운동 포인트 소스이며 ARM_BAS_MOVE_POSE_PR 을 공개합니다 |
ArmBasSmoothType | 포인트까지 정확히 이동하거나 거리 기준으로 스무딩합니다 |
ArmBasSpeedType | 속도는 직접 수치 또는 MR에서 옵니다 |
ArmBasRegisterType | R / SR / MH / MI |
ArmBasIOType | DI / DO / AI / AO / RI / RO / UI / UO / GI / GO / TAI / TAO / TDI / TDO |
ArmBasIOStatus | ON / OFF / PULSE / 상승 에지 / 하강 에지 |
ArmBasBooleanOperator | AND / OR / EQ / NE / GT / GE / LT / LE |
ArmBasAssignType | ASSIGN 왼쪽 대상 또는 오른쪽 소스 |
ArmBasOtherType | 리터럴, 문자열, IO 상태, 현재 자세 |
ArmBasCurrentPose | 현재 관절 또는 직교 좌표 자세 |
ArmBasLoadType | LOAD / UNLOAD / EXEC의 프로그램 식별자 소스 |
ArmBasStrType | Socket 문자열 또는 SR |
ArmBasValueType | 직접 값 또는 R 레지스터 |
ArmBasParamType | TF, UF, OVC, OAC, 페이로드 번호 |
ArmBasMathOperator | 사칙 연산용 예약 열거형 |
ArmBasValueTag | ArmBasValue 의 현재 필드 의미를 나타냅니다 |
핵심 의미
| 범주 | 설명 |
|---|---|
| 운동 속도 | MoveJoint 에서 직접 속도 값을 사용할 때 범위는 0~100 입니다. MoveLine , MoveCircle 에서 직접 속도 값을 사용할 때 범위는 0~5000 입니다. |
| Jump 포인트 | MoveJump3 및 MoveJump3cp 의 poseIndexList 는 반드시 PR 포인트 인덱스 3 개를 포함해야 합니다. |
| 조건문 | IF, ELSE IF, WHILE, WAIT, SKIP CONDITION 동일한 조건 파라미터 기준을 사용하며 레지스터, IO, 리터럴, 문자열, IO 상태를 지원합니다. |
| SELECT 문장 | Arm_BasScript_Logical_Switch() 는 SELECT를 출력하고, Arm_BasScript_Logical_EndSwitch() 는 ENDSELECT를 출력합니다. |
| 닫힘 검증 | IF / SELECT / WHILE은 반드시 닫아야 합니다. 스크립트 텍스트를 내보내거나 실행하기 전에 해당 종료 문장을 보완해야 합니다. |
| Socket | ARM_BAS_STR_STRING 은 문자열 값을 사용하고, ARM_BAS_STR_SR 은 SR 번호를 사용합니다. |
| Modbus | ReadMH / ReadMI 는 결과를 R 레지스터에 씁니다. WriteMH 는 직접 값 또는 R 레지스터 값을 쓸 수 있습니다. |
| 추가 가속도 | Arm_BasExtraParam_Acceleration() 의 유효 범위는 1~120 입니다. 범위를 벗어나면 100.0 으로 출력합니다. |
| TB 추가 파라미터 | TB 파라미터는 " name 이 있는 RUN" 또는 " index + status 가 있는 ASSIGN" 중 하나를 만족해야 합니다. |
| Approach | Arm_BasExtraParam_Approach() Jump 계열 명령의 추가 파라미터로만 사용합니다. |
생성기 규칙
Arm_BasScript_Create()빈 생성기를 생성합니다.Arm_BasScript_CreateWithName()스크립트 이름이 있는 생성기를 만들고 스크립트 헤더를 생성합니다.Arm_BasScript_SetName()이름만 수정하고 기존 내용은 그대로 유지합니다.Arm_BasScript_AppendLine()/Arm_BasScript_AppendLines()스크립트 텍스트만 추가합니다.Arm_BasScript_GetText()현재 내용을 직렬화합니다. 스크립트 헤더가 필요하면Arm_BasScript_CreateWithName()을 사용합니다.Arm_BasScript_Reset()생성 시 모드로 돌아갑니다.Arm_BasScript_Execute()ArmHandle*를 통해 생성기가 만든 스크립트를 실행합니다.Arm_BasExtraParam_GetText()현재 추가 파라미터 텍스트를 출력합니다.
최소 호출 예제
c
#include <stdio.h> // 생성된 스크립트 텍스트 출력을 위해 printf를 포함합니다.
#include "c_arm_api.h" // C99 SDK 최상위 헤더를 포함합니다.
int main(void) // 예제 프로그램 진입점
{ // 예제 main 함수 시작
ArmBasScriptHandle* script = NULL; // 스크립트 생성기 핸들을 준비합니다.
char text[2048] = {0}; // 스크립트 텍스트 출력 버퍼를 준비합니다.
int ret = Arm_BasScript_CreateWithName("demo.bas", &script); // 이름이 있는 스크립트 생성기를 생성합니다.
if (ret != 0 || script == NULL) { // 생성기 생성 실패 여부를 확인합니다.
return 1; // 생성 실패 시 종료합니다.
} // 생성 검사 종료
Arm_BasScript_Structure_WaitTime(script, ARM_BAS_VALUE_TYPE_VALUE, Arm_BasValue_Float64(0.1)); // 대기 문장을 추가합니다.
Arm_BasScript_GetText(script, text, sizeof(text)); // 스크립트 텍스트를 내보냅니다.
printf("%s\n", text); // 스크립트 텍스트를 출력합니다.
Arm_BasScript_Destroy(script); // 스크립트 생성기를 폐기합니다.
return 0; // 예제를 정상 종료합니다.
} // 예제 main 함수 종료시나리오 예제
운동 문장 및 추가 파라미터
c
ArmBasScriptHandle* script = NULL; // 스크립트 생성기를 준비합니다.
ArmBasExtraParamHandle* extra = NULL; // 추가 파라미터 생성기를 준비합니다.
int createRet = Arm_BasScript_Create(&script); // 스크립트 생성기를 생성합니다.
int extraRet = Arm_BasExtraParam_Create(&extra); // 추가 파라미터 생성기를 생성합니다.
Arm_BasExtraParam_Acceleration(extra, 80.0); // 추가 가속도를 설정합니다.
Arm_BasExtraParam_Rctp(extra); // RTCP 추가 파라미터를 설정합니다.
Arm_BasExtraParam_Offset(extra, 1); // FRAME_OFFSET PR[1]을 설정합니다.
Arm_BasExtraParam_Skip(extra, 10); // SKIP GOTO LABEL10을 설정합니다.
Arm_BasExtraParam_Approach(extra, 20.0, 10.0); // Jump 접근/이탈 거리를 설정합니다.
Arm_BasScript_Motion_MoveJoint(script, ARM_BAS_MOVE_POSE_PR, 1, ARM_BAS_SPEED_VALUE, 30.0, ARM_BAS_SMOOTH_FINE, 0.0, extra); // 관절 운동 문장을 생성합니다.
Arm_BasScript_Motion_MoveLine(script, ARM_BAS_MOVE_POSE_PR, 2, ARM_BAS_SPEED_VALUE, 30.0, ARM_BAS_SMOOTH_DISTANCE, 5.0, extra); // 직선 운동 문장을 생성합니다.
Arm_BasScript_Motion_MoveCircle(script, ARM_BAS_MOVE_POSE_PR, 2, ARM_BAS_MOVE_POSE_PR, 3, ARM_BAS_SPEED_VALUE, 20.0, ARM_BAS_SMOOTH_FINE, 0.0, extra); // 원호 운동 문장을 생성합니다.
Arm_BasScript_Motion_MoveJump(script, ARM_BAS_MOVE_POSE_PR, 4, 40.0, 80.0, ARM_BAS_VALUE_TYPE_VALUE, 100.0, ARM_BAS_SMOOTH_FINE, 0.0, extra); // Jump 문장을 생성합니다.
(void)createRet; // 예제에서 생성 상태 코드를 유지합니다.
(void)extraRet; // 예제에서 추가 파라미터 생성 상태 코드를 유지합니다.
Arm_BasExtraParam_Destroy(extra); // 추가 파라미터 생성기를 폐기합니다.
Arm_BasScript_Destroy(script); // 스크립트 생성기를 폐기합니다.논리, 흐름, Socket, Modbus 및 비전
c
ArmBasScriptHandle* script = NULL; // 스크립트 생성기를 준비합니다.
Arm_BasScript_Create(&script); // 스크립트 생성기를 생성합니다.
Arm_BasScript_SetParam(script, ARM_BAS_PARAM_OVC, ARM_BAS_VALUE_TYPE_VALUE, Arm_BasValue_Float64(20.0)); // OVC를 설정합니다.
Arm_BasScript_AssignValue(script, ARM_BAS_ASSIGN_R, 1, Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_OTHER_TYPE, ARM_BAS_OTHER_VALUE), Arm_BasValue_Float64(1.0), 0, 0); // 대입 문장을 생성합니다.
Arm_BasScript_Logical_If(script, Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_REGISTER_TYPE, ARM_BAS_REGISTER_R), 1, Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_OTHER_TYPE, ARM_BAS_OTHER_VALUE), Arm_BasValue_Float64(1.0), ARM_BAS_BOOLEAN_EQ); // IF를 생성합니다.
Arm_BasScript_Logical_Else(script); // ELSE를 생성합니다.
Arm_BasScript_Logical_EndIf(script); // ENDIF를 생성합니다.
Arm_BasScript_Logical_Switch(script, Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_REGISTER_TYPE, ARM_BAS_REGISTER_R), 1); // SWITCH를 생성합니다.
Arm_BasScript_Logical_Case(script, Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_OTHER_TYPE, ARM_BAS_OTHER_VALUE), Arm_BasValue_Int32(1)); // CASE를 생성합니다.
Arm_BasScript_Logical_Default(script); // DEFAULT를 생성합니다.
Arm_BasScript_Logical_EndSwitch(script); // ENDSWITCH를 생성합니다.
Arm_BasScript_Logical_While(script, Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_REGISTER_TYPE, ARM_BAS_REGISTER_R), 1, Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_OTHER_TYPE, ARM_BAS_OTHER_VALUE), Arm_BasValue_Float64(0.0), ARM_BAS_BOOLEAN_GT); // WHILE을 생성합니다.
Arm_BasScript_Logical_Break(script); // BREAK를 생성합니다.
Arm_BasScript_Logical_Continue(script); // CONTINUE를 생성합니다.
Arm_BasScript_Logical_EndWhile(script); // ENDWHILE을 생성합니다.
Arm_BasScript_Logical_Label(script, 10); // LABEL을 생성합니다.
Arm_BasScript_Logical_Goto(script, 10); // GOTO를 생성합니다.
Arm_BasScript_Logical_SkipCondition(script, Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_IO_TYPE, ARM_BAS_IO_DI), 1, Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_OTHER_TYPE, ARM_BAS_OTHER_IO_STATUS), Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_IO_STATUS, ARM_BAS_IO_STATUS_ON), ARM_BAS_BOOLEAN_EQ); // SKIP 조건을 생성합니다.
Arm_BasScript_Structure_Wait(script, Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_IO_TYPE, ARM_BAS_IO_DI), 1, Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_OTHER_TYPE, ARM_BAS_OTHER_IO_STATUS), Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_IO_STATUS, ARM_BAS_IO_STATUS_ON), ARM_BAS_BOOLEAN_EQ); // WAIT 조건을 생성합니다.
Arm_BasScript_Structure_Pause(script); // 일시정지 문장을 생성합니다.
Arm_BasScript_Structure_Call(script, "sub.bas"); // CALL을 생성합니다.
Arm_BasScript_Structure_Run(script, "sub.bas"); // RUN을 생성합니다.
Arm_BasScript_Structure_Load(script, ARM_BAS_LOAD_STRING, Arm_BasValue_String("sub.bas")); // LOAD를 생성합니다.
Arm_BasScript_Structure_Unload(script, ARM_BAS_LOAD_STRING, Arm_BasValue_String("sub.bas")); // UNLOAD를 생성합니다.
Arm_BasScript_Structure_Exec(script, ARM_BAS_LOAD_STRING, Arm_BasValue_String("sub.bas")); // EXEC를 생성합니다.
Arm_BasScript_Socket_Open(script, 1); // Socket Open을 생성합니다.
Arm_BasScript_Socket_Connect(script, 1); // Socket Connect를 생성합니다.
Arm_BasScript_Socket_Send(script, 1, ARM_BAS_STR_STRING, Arm_BasValue_String("ping")); // Socket Send를 생성합니다.
Arm_BasScript_Socket_Recv(script, 1, 128, ARM_BAS_STR_SR, Arm_BasValue_Int32(1)); // Socket Recv를 생성합니다.
Arm_BasScript_Socket_Close(script, 1); // Socket Close를 생성합니다.
Arm_BasScript_Modbus_ReadMH(script, 1, 1, 0, 2, 1); // MH 읽기 문장을 생성합니다.
Arm_BasScript_Modbus_ReadMI(script, 1, 1, 0, 2, 1); // MI 읽기 문장을 생성합니다.
Arm_BasScript_Modbus_WriteMH(script, 1, 1, 0, 1, ARM_BAS_VALUE_TYPE_VALUE, 7); // MH 쓰기 문장을 생성합니다.
Arm_BasScript_Vision_Find(script, "camera"); // 비전 찾기 문장을 생성합니다.
Arm_BasScript_Vision_GetOffset(script, "camera", 1, 10); // 비전 오프셋 문장을 생성합니다.
Arm_BasScript_Vision_GetQuantity(script, "camera", 1); // 비전 개수 문장을 생성합니다.
Arm_BasScript_Structure_Abort(script); // 중지 문장을 생성합니다.
Arm_BasScript_Destroy(script); // 스크립트 생성기를 폐기합니다.예제 코드
cpp
#include <stdio.h>
#include "c_arm_api.h"
int main(void)
{
// [ZH] 本示例直接在源码中写死连接地址,不解析命令行参数。
// [EN] This example hard-codes the connection addresses in the source code.
const char* controller_ip = "10.27.1.2";
const char* teach_panel_ip = "10.27.1.102";
const int execute_generated_script = 0;
int overall_status = 0;
#define RECORD_STATUS(label, expr) \
do { \
int status = (expr); \
printf("[c99_bas_script] %s status: %d\n", (label), status); \
if (status != 0) { \
overall_status = status; \
} \
} while (0)
// [ZH] 创建并连接 SDK 句柄。构造脚本文本本身不需要连接,执行脚本才需要连接。
// [EN] Create and connect the SDK handle. Building text does not need a connection; executing does.
ArmHandle* handle = Arm_Create();
if (handle == NULL) {
printf("[c99_bas_script] 创建句柄失败 / Create handle failed\n");
return 1;
}
int connect_ret = Arm_Connect(handle, controller_ip, teach_panel_ip);
if (connect_ret != 0) {
printf("[c99_bas_script] 连接机器人失败 / Connect failed: %d\n", connect_ret);
Arm_Destroy(handle);
return 1;
}
printf("[c99_bas_script] 机器人连接成功 / Robot connected successfully\n");
// [ZH] 覆盖空构造器、命名、追加原始文本、行数、导出文本和 Reset。
// [EN] Cover empty creation, naming, raw append, line count, text export, and reset.
ArmBasScriptHandle* scratch_script = NULL;
RECORD_STATUS("Create", Arm_BasScript_Create(&scratch_script));
RECORD_STATUS("SetName", Arm_BasScript_SetName(scratch_script, "scratch.bas"));
RECORD_STATUS("AppendLine", Arm_BasScript_AppendLine(scratch_script, "WAIT TIME 0.1"));
const char* raw_lines[2] = {"R[1]=1", "R[2]=2"};
RECORD_STATUS("AppendLines", Arm_BasScript_AppendLines(scratch_script, raw_lines, 2U));
size_t scratch_line_count = 0U;
RECORD_STATUS("GetLineCount", Arm_BasScript_GetLineCount(scratch_script, &scratch_line_count));
char scratch_text[2048] = {0};
RECORD_STATUS("GetText(scratch)", Arm_BasScript_GetText(scratch_script, scratch_text, sizeof(scratch_text)));
RECORD_STATUS("Reset", Arm_BasScript_Reset(scratch_script));
printf("[c99_bas_script] scratch line count: %zu\n", scratch_line_count);
printf("[c99_bas_script] scratch text:\n%s\n", scratch_text);
Arm_BasScript_Destroy(scratch_script);
// [ZH] 创建主脚本和附加参数构造器。
// [EN] Create the main script and extra-parameter builder.
ArmBasScriptHandle* script = NULL;
ArmBasExtraParamHandle* extra = NULL;
RECORD_STATUS("CreateWithName", Arm_BasScript_CreateWithName("example_c99.bas", &script));
RECORD_STATUS("ExtraParam_Create", Arm_BasExtraParam_Create(&extra));
RECORD_STATUS("ExtraParam_Acceleration", Arm_BasExtraParam_Acceleration(extra, 80.0));
RECORD_STATUS("ExtraParam_Rctp", Arm_BasExtraParam_Rctp(extra));
RECORD_STATUS("ExtraParam_Offset", Arm_BasExtraParam_Offset(extra, 1));
RECORD_STATUS("ExtraParam_Tb", Arm_BasExtraParam_Tb(extra, 0.1, "RUN", "helper.bas", 0, ""));
RECORD_STATUS("ExtraParam_Skip", Arm_BasExtraParam_Skip(extra, 10));
RECORD_STATUS("ExtraParam_Approach", Arm_BasExtraParam_Approach(extra, 10.0, 5.0));
char extra_text[1024] = {0};
RECORD_STATUS("ExtraParam_GetText", Arm_BasExtraParam_GetText(extra, extra_text, sizeof(extra_text)));
printf("[c99_bas_script] extra text: %s\n", extra_text);
// [ZH] 覆盖基础参数与赋值接口。
// [EN] Cover parameter and assignment APIs.
RECORD_STATUS(
"SetParam",
Arm_BasScript_SetParam(
script,
ARM_BAS_PARAM_OVC,
ARM_BAS_VALUE_TYPE_VALUE,
Arm_BasValue_Float64(20.0)
)
);
RECORD_STATUS(
"AssignValue(value)",
Arm_BasScript_AssignValue(
script,
ARM_BAS_ASSIGN_R,
1,
Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_OTHER_TYPE, ARM_BAS_OTHER_VALUE),
Arm_BasValue_Float64(3.14),
0,
0
)
);
RECORD_STATUS(
"AssignValue(string)",
Arm_BasScript_AssignValue(
script,
ARM_BAS_ASSIGN_SR,
1,
Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_OTHER_TYPE, ARM_BAS_OTHER_STRING),
Arm_BasValue_String("hello"),
0,
0
)
);
// [ZH] 覆盖运动语句构造接口。
// [EN] Cover motion-statement construction APIs.
int32_t jump_points[3] = {1, 2, 3};
RECORD_STATUS(
"Motion_MoveJoint",
Arm_BasScript_Motion_MoveJoint(
script, ARM_BAS_MOVE_POSE_PR, 1, ARM_BAS_SPEED_VALUE, 20.0,
ARM_BAS_SMOOTH_FINE, 0.0, extra
)
);
RECORD_STATUS(
"Motion_MoveLine",
Arm_BasScript_Motion_MoveLine(
script, ARM_BAS_MOVE_POSE_PR, 2, ARM_BAS_SPEED_VALUE, 100.0,
ARM_BAS_SMOOTH_DISTANCE, 5.0, extra
)
);
RECORD_STATUS(
"Motion_MoveCircle",
Arm_BasScript_Motion_MoveCircle(
script, ARM_BAS_MOVE_POSE_PR, 2, ARM_BAS_MOVE_POSE_PR, 3,
ARM_BAS_SPEED_VALUE, 100.0, ARM_BAS_SMOOTH_FINE, 0.0, extra
)
);
RECORD_STATUS(
"Motion_MoveJump",
Arm_BasScript_Motion_MoveJump(
script, ARM_BAS_MOVE_POSE_PR, 4, 100.0, 50.0,
ARM_BAS_SPEED_VALUE, 20.0, ARM_BAS_SMOOTH_FINE, 0.0, extra
)
);
RECORD_STATUS(
"Motion_MoveJump3",
Arm_BasScript_Motion_MoveJump3(
script, ARM_BAS_MOVE_POSE_PR, jump_points, 3U, 100.0, 50.0,
ARM_BAS_SMOOTH_FINE, 0.0, extra
)
);
RECORD_STATUS(
"Motion_MoveJump3cp",
Arm_BasScript_Motion_MoveJump3cp(
script, ARM_BAS_MOVE_POSE_PR, jump_points, 3U, 100.0,
ARM_BAS_SMOOTH_FINE, 0.0, extra
)
);
// [ZH] 覆盖逻辑语句构造接口。
// [EN] Cover logical-statement construction APIs.
ArmBasValue reg_r = Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_REGISTER_TYPE, ARM_BAS_REGISTER_R);
ArmBasValue io_di = Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_IO_TYPE, ARM_BAS_IO_DI);
ArmBasValue other_value = Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_OTHER_TYPE, ARM_BAS_OTHER_VALUE);
ArmBasValue other_status = Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_OTHER_TYPE, ARM_BAS_OTHER_IO_STATUS);
ArmBasValue status_on = Arm_BasValue_TaggedInt(ARM_BAS_VALUE_TAG_IO_STATUS, ARM_BAS_IO_STATUS_ON);
RECORD_STATUS("Logical_If", Arm_BasScript_Logical_If(script, reg_r, 1, other_value, Arm_BasValue_Int32(1), ARM_BAS_BOOLEAN_EQ));
RECORD_STATUS("Logical_ElseIf", Arm_BasScript_Logical_ElseIf(script, reg_r, 1, other_value, Arm_BasValue_Int32(2), ARM_BAS_BOOLEAN_EQ));
RECORD_STATUS("Logical_Else", Arm_BasScript_Logical_Else(script));
RECORD_STATUS("Logical_EndIf", Arm_BasScript_Logical_EndIf(script));
RECORD_STATUS("Logical_Switch", Arm_BasScript_Logical_Switch(script, reg_r, 1));
RECORD_STATUS("Logical_Case", Arm_BasScript_Logical_Case(script, other_value, Arm_BasValue_Int32(1)));
RECORD_STATUS("Logical_Default", Arm_BasScript_Logical_Default(script));
RECORD_STATUS("Logical_EndSwitch", Arm_BasScript_Logical_EndSwitch(script));
RECORD_STATUS("Logical_While", Arm_BasScript_Logical_While(script, reg_r, 1, other_value, Arm_BasValue_Int32(3), ARM_BAS_BOOLEAN_LT));
RECORD_STATUS("Logical_Continue", Arm_BasScript_Logical_Continue(script));
RECORD_STATUS("Logical_Break", Arm_BasScript_Logical_Break(script));
RECORD_STATUS("Logical_EndWhile", Arm_BasScript_Logical_EndWhile(script));
RECORD_STATUS("Logical_Label", Arm_BasScript_Logical_Label(script, 10));
RECORD_STATUS("Logical_Goto", Arm_BasScript_Logical_Goto(script, 10));
RECORD_STATUS("Logical_SkipCondition", Arm_BasScript_Logical_SkipCondition(script, io_di, 1, other_status, status_on, ARM_BAS_BOOLEAN_EQ));
// [ZH] 覆盖流程控制语句构造接口。
// [EN] Cover structural-control statement construction APIs.
RECORD_STATUS("Structure_Wait", Arm_BasScript_Structure_Wait(script, io_di, 1, other_status, status_on, ARM_BAS_BOOLEAN_EQ));
RECORD_STATUS("Structure_WaitTime", Arm_BasScript_Structure_WaitTime(script, ARM_BAS_VALUE_TYPE_VALUE, Arm_BasValue_Float64(0.1)));
RECORD_STATUS("Structure_Pause", Arm_BasScript_Structure_Pause(script));
RECORD_STATUS("Structure_Abort", Arm_BasScript_Structure_Abort(script));
RECORD_STATUS("Structure_Call", Arm_BasScript_Structure_Call(script, "helper.bas"));
RECORD_STATUS("Structure_Run", Arm_BasScript_Structure_Run(script, "helper.bas"));
RECORD_STATUS("Structure_Load", Arm_BasScript_Structure_Load(script, ARM_BAS_LOAD_STRING, Arm_BasValue_String("demo_program")));
RECORD_STATUS("Structure_Unload", Arm_BasScript_Structure_Unload(script, ARM_BAS_LOAD_STRING, Arm_BasValue_String("demo_program")));
RECORD_STATUS("Structure_Exec", Arm_BasScript_Structure_Exec(script, ARM_BAS_LOAD_STRING, Arm_BasValue_String("demo_program")));
// [ZH] 覆盖 Socket、Modbus 和视觉语句构造接口。
// [EN] Cover Socket, Modbus, and vision statement construction APIs.
RECORD_STATUS("Socket_Open", Arm_BasScript_Socket_Open(script, 1));
RECORD_STATUS("Socket_Connect", Arm_BasScript_Socket_Connect(script, 1));
RECORD_STATUS("Socket_Send", Arm_BasScript_Socket_Send(script, 1, ARM_BAS_STR_STRING, Arm_BasValue_String("ping")));
RECORD_STATUS("Socket_Recv", Arm_BasScript_Socket_Recv(script, 1, 32, ARM_BAS_STR_SR, Arm_BasValue_Int32(1)));
RECORD_STATUS("Socket_Close", Arm_BasScript_Socket_Close(script, 1));
RECORD_STATUS("Modbus_ReadMH", Arm_BasScript_Modbus_ReadMH(script, 1, 1, 0, 2, 1));
RECORD_STATUS("Modbus_ReadMI", Arm_BasScript_Modbus_ReadMI(script, 1, 1, 0, 2, 2));
RECORD_STATUS("Modbus_WriteMH", Arm_BasScript_Modbus_WriteMH(script, 1, 1, 0, 1, ARM_BAS_VALUE_TYPE_VALUE, 10));
RECORD_STATUS("Vision_Find", Arm_BasScript_Vision_Find(script, "camera"));
RECORD_STATUS("Vision_GetOffset", Arm_BasScript_Vision_GetOffset(script, "camera", 1, 10));
RECORD_STATUS("Vision_GetQuantity", Arm_BasScript_Vision_GetQuantity(script, "camera", 2));
// [ZH] 导出最终脚本文本。默认不执行,避免示例运行时直接下发复杂脚本。
// [EN] Export the final script text. Execution is disabled by default to avoid sending a complex script.
char script_name[128] = {0};
char script_text[8192] = {0};
RECORD_STATUS("GetName", Arm_BasScript_GetName(script, script_name, sizeof(script_name)));
RECORD_STATUS("GetText(final)", Arm_BasScript_GetText(script, script_text, sizeof(script_text)));
printf("[c99_bas_script] script name: %s\n", script_name);
printf("[c99_bas_script] script text:\n%s\n", script_text);
if (execute_generated_script != 0) {
RECORD_STATUS("Execute", Arm_BasScript_Execute(handle, script));
} else {
printf("[c99_bas_script] Execute skipped by default / 默认跳过 Execute\n");
}
RECORD_STATUS("ExtraParam_Reset", Arm_BasExtraParam_Reset(extra));
Arm_BasExtraParam_Destroy(extra);
Arm_BasScript_Destroy(script);
Arm_Disconnect(handle);
Arm_Destroy(handle);
printf("[c99_bas_script] 示例结束 / Example finished\n");
#undef RECORD_STATUS
return overall_status == 0 ? 0 : 1;
}