2026-06-05 13:44:39 +09:00

182 lines
9.3 KiB
C#

/****************************************************************************
*****************************************************************************
**
** File Name
** ---------
**
** AXP.CS
**
** COPYRIGHT (c) AJINEXTEK Co., LTD
**
*****************************************************************************
*****************************************************************************
**
** Description
** -----------
** Ajinextek Macro Library Header File
**
**
*****************************************************************************
*****************************************************************************
**
** Source Change Indices
** ---------------------
**
** (None)
**
**
*****************************************************************************
*****************************************************************************
**
** Website
** ---------------------
**
** http://www.ajinextek.com
**
*****************************************************************************
*****************************************************************************
*/
using System.Runtime.InteropServices;
public class CAXP
{
// 지정된 매크로에 노드 등록을 시작한다.
// lMacroNo : 0 ~ 7
[DllImport("AXL.dll")] public static extern uint AxpMacroBeginNode(int nMacroNo);
// 지정된 매크로에 노드 등록을 종료한다.
// lMacroNo : 0 ~ 7
[DllImport("AXL.dll")] public static extern uint AxpMacroEndNode(int nMacroNo);
// 지정된 매크로에 등록된 노드들을 모두 삭제한다.
// lMacroNo : 등록된 노드들을 모두 삭제 할 매크로 번호를 지정
// [-1] : -1일 경우 모든 매크로에 등록된 노드들을 모두 삭제한다.
// [0 ~ 7] : 지정한 매크로에 등록된 노드들을 모두 삭제한다.
[DllImport("AXL.dll")] public static extern uint AxpMacroWriteClear(int nMacroNo);
// 지정된 매크로에 노드를 등록한다.
// lMacroNo : 0 ~ 7
// uFunction : 매크로에 등록한 함수를 지정한다.{ MACRO_FUNCTION }
// [0] MACRO_FUNC_CALL : 다른 매크로를 호출한다.(호출된 매크로가 종료되거나 RETURN하면 다시 돌아옴)
// [1] MACRO_FUNC_JUMP : 다른 매크로나 노드로 점프한다. (JUMP위치로 되돌아오지 않음)
// [2] MACRO_FUNC_RETURN : 호출한 매크로로 되돌아감
// [3] MACRO_FUNC_REPEAT : 현재 위치에서 지정한 노드사이를 설정한 횟수만큼 반복구동함
// [4] MACRO_FUNC_SET_OUTPUT : Digital Output, Analog Output을 출력함
// [5] MACRO_FUNC_WAIT : 지정한 시간만큼 대기함
// [6] MACRO_FUNC_STOP : 매크로 구동을 정지함
// dpArg[16] : 지정한 Function에 대한 인자 배열
// ※ 주의점 : 배열의 개수는 반드시 16개로 해야 됨
// [0] MACRO_FUNC_CALL
// dArg[0] Macro 번호
// [1] MACRO_FUNC_JUMP
// dArg[0] Jump Type : [0] MACRO_JUMP_MACRO, [1] MACRO_JUMP_NODE
// dArg[1] 매크로번호 or 노드번호
// [2] MACRO_FUNC_RETURN : 인자 없음
// [3] MACRO_FUNC_REPEAT : 반복구동 지정
// dArg[0] 반복할 회수
// dArg[1] 현재 위치에서 반복할 노드 번호(현재 노드의 번호보다 낮은 번호여야 됨)
// [4] MACRO_FUNC_SET_OUTPUT
// dArg[0] Output Type : [0] MACRO_DIGITAL_OUTPUT, [1] MACRO_ANALOG_OUTPUT
// dArg[1] DO 모듈번호 or AO 채널번호
// dArg[2] Data Type
// - Digital Output일경우: [0] MACRO_DATA_BIT, [1] MACRO_DATA_BYTE, [2] MACRO_DATA_WORD, [3] MACRO_DATA_DWORD, [4] MACRO_DATA_BYTE12
// - Analog Output일경우 : [5] MACRO_DATA_VOLTAGE, [6] MACRO_DATA_DIGIT
// dArg[3] Offset or Byte Size
// - Digital Output일경우: Offset / ByteSize(MACRO_DATA_BYTE12 Type일 경우)
// - Analog Output일경우 : Reserved
// dArg[4] 출력 값
// - Digital Output일경우: Data Type의 설정에 따른 Digital Output,
// - Analog Output일경우 : 출력전압 or 출력 Digit
// dArg[4] ~ dArg[15] Byte 출력값 (MACRO_DATA_BYTE12 Type일 경우)
// - 지정한 Byte(최대 12Byte)값들을 여러개의 출력 모듈에 상관없이 한번에 출력함
// [5] MACRO_FUNC_WAIT
// dArg[0] 대기 시간(ms) : 지정한 ms 동안 대기함
// [6] MACRO_FUNC_STOP
// dArg[0] 정지모드 : [0] MACRO_QUICK_STOP, [1] MACRO_SLOW_STOP
[DllImport("AXL.dll")] public static extern uint AxpMacroAddNode(int nMacroNo, uint uFunction, ref double dpArg);
// 지정된 매크로의 노드에 설정된 값을 반환한다. (반환값은 AxpMacroAddNode 함수로 설정한 값임)
[DllImport("AXL.dll")] public static extern uint AxpMacroGetNode(int nMacroNo, int nNodeNo, ref uint upFunction, ref double dpArg);
// 지정된 매크로에 등록된 노드들을 검사한 후 에러가 발생 노드 위치와 에러 코드를 반환한다.
// ※ 주의점 : 반드시 이 함수로 등록된 노들들에 대해 유효성 검사를 완료해야 매크로 구동을 할 수 있음.
// lMacroNo : 0 ~ 7
// *lpErrorNodeNo : 에러가 발생한 노드번호
// *upErrorCode : 에러가 발생한 노드에 대한 에러코드
[DllImport("AXL.dll")] public static extern uint AxpMacroCheckNodeAll(int nMacroNo, ref int npErrorNodeNo, ref uint upErrorCode);
// 지정된 매크로의 구동을 시작한다.
// ※ 주의점 : 반드시 AxpMacroCheckNodeAll 함수로 등록된 노들들에 대해 유효성 검사를 완료해야 매크로 구동을 할 수 있음.
// lMacroNo : 0 ~ 7
// uCondition : 매크로 시작 조건을 설정함
// [0] MACRO_START_READY : 대기 상태로 구동
// [1] MACRO_START_IMMEDIATE : 즉시 구동
// bLockResource : 매크로에 등록된 디지털 입력모듈, 아날로그 출력 채널들에 대해 제어금지 여부를 설정
// [FALSE] : 제어허용
// [TRUE] : 제어금지
// lRepeatCount : 매크로 전체 구동의 반복 회수를 설정
// [-1] : 무한반복 구동함
// [0] : 반복구동하지 않음
// [1~ ] : 지정한 회수만큼 반복 구동함
[DllImport("AXL.dll")] public static extern uint AxpMacroStart(int nMacroNo, uint uCondition, bool bLockResource, int nRepeatCount);
// 지정된 매크로의 구동 조건을 반환한다.
// lMacroNo : 0 ~ 7
[DllImport("AXL.dll")] public static extern uint AxpMacroGetStartInfo(int nMacroNo, ref uint upCondition, ref bool bpLockResource, ref int npRepeatCount);
// 지정된 매크로의 구동을 정지한다.
// lMacroNo : -1 ~ 7
// [-1] : -1일 경우 모든 매크로의 구동을 정지한다.
// uStopMode : 구동정지 모드를 지정한다. (등록된 매크로에 모션 구동축이 있을 경우 의미가 있음)
// [0] MACRO_QUICK_STOP
// [1] MACRO_SLOW_STOP
[DllImport("AXL.dll")] public static extern uint AxpMacroStop(int nMacroNo, uint uStopMode);
// 지정된 Macro의 구동상태를 반환한다.
// lMacroNo : 0 ~ 7
// *upStatus : 매크로의 구동상태
// [0] MACRO_STATUS_STOP : 매크로 정지상태
// [1] MACRO_STATUS_READY : 매크로 구동 대기 상태
// [2] MACRO_STATUS_RUN : 매크로 구동상태
// [3] MACRO_STATUS_ERROR : 매크로 에러상태(정지상태)
// *lpRepeatCount : 매크로의 전체 반복구동 회수를 반환
[DllImport("AXL.dll")] public static extern uint AxpMacroReadRunStatus(int nMacroNo, ref uint upStatus, ref int npRepeatCount);
// 지정된 매크로에 등록된 노드개수와 현재 구동중인 노드정보를 반환한다.
// lMacroNo : 0 ~ 7
// *lpCurNodeNo : 현재 구동중인 노드의 번호
// *lpTotalNodeNum : 지정한 매크로의 전체 노드 개수
[DllImport("AXL.dll")] public static extern uint AxpMacroGetNodeNum(int nMacroNo, ref int npCurNodeNo, ref int npTotalNodeNum);
// 지정된 매크로와 함수에 대한 구동정보를 반환한다.
// lMacroNo : 0 ~ 7
// uFunction : 정보를 확인할 함수를 지정한다.{ MACRO_FUNCTION }
// [0] MACRO_FUNC_CALL
// [1] MACRO_FUNC_JUMP
// [2] MACRO_FUNC_RETURN
// [3] MACRO_FUNC_REPEAT
// [4] MACRO_FUNC_SET_OUTPUT
// [5] MACRO_FUNC_WAIT
// [6] MACRO_FUNC_STOP
// dpReturnData[16] : 지정한 함수에 대한 반환값
// ※ 주의점 : 배열의 개수는 반드시 16개로 해야 됨
// [0] MACRO_FUNC_CALL
// dArg[0] 최종 호출 된 CALL명령의 노드번호
// dArg[1] 지정한 매크로 내에서 CALL명령들 중의 Index를 반환
// [1] MACRO_FUNC_JUMP
// dArg[0] 최종 호출된 JUMP명령의 노드번호
// dArg[1] 지정한 매크로 내에서 JUMP명령들 중의 Index를 반환
// [2] MACRO_FUNC_RETURN : 인자 없음
// dArg[0] 최종 호출된 RETURN명령의 노드번호
// dArg[1] 지정한 매크로 내에서 RETURN명령들 중의 Index를 반환
// [3] MACRO_FUNC_REPEAT : 반복구동 지정
// dArg[0] 최종 호출된 REPEAT명령의 노드번호
// dArg[1] 지정한 매크로 내에서 REPEAT명령들 중의 Index를 반환
// dArg[2] 최종 호출된 REPEAT명령의 반복구동 설정회수를 반환
// dArg[3] 최종 호출된 REPEAT명령의 반복구동한 회수를 반환
// [4] MACRO_FUNC_SET_OUTPUT
// dArg[0] 최종 호출된 SET_OUTPUT명령의 노드번호
// dArg[1] 지정한 매크로 내에서 SET_OUTPUT명령들 중의 Index를 반환
// dArg[2] 최종 호출된 SET_OUTPUT명령의 출력값을 반환
// dArg[2~13] Data Type이 "[4] MACRO_DATA_BYTE12"일 경우의 Byte 출력값
// [5] MACRO_FUNC_WAIT
// dArg[0] 최종 호출된 WAIT명령의 노드번호
// dArg[1] 지정한 매크로 내에서 WAIT명령들 중의 Index를 반환
// dArg[2] 최종 호출된 WAIT명령의 설정 시간을 반환
// dArg[3] 최종 호출된 WAIT명령의 소요 시간을 반환
// [6] MACRO_FUNC_STOP
// dArg[0] 최종 호출된 STOP명령의 노드번호
// dArg[1] 지정한 매크로 내에서 STOP명령들 중의 Index를 반환
[DllImport("AXL.dll")] public static extern uint AxpMacroReadFunctionStatus(int nMacroNo, uint uFunction, ref double dpReturnData);
}