인터럽트
인터럽트 설정 및 확인
Function | Description |
---|---|
AxdiInterruptSetModule | 지정 모듈의 인터럽트 메시지를 받아오기 위하여 윈도우 메시지, 콜백함수 또는 이벤트 방식을 사용한다. |
AxdiInterruptSetModuleEnable | 지정한 모듈의 인터럽트 사용 유무를 설정한다. |
AxdiInterruptGetModuleEnable | 지정한 모듈의 인터럽트 사용 유무를 확인한다. |
AxdiInterruptRead | 인터럽트 발생 위치를 확인한다. |
인터럽트 상승 / 하강 에지 설정 및 확인
Function | Description |
---|---|
AxdiInterruptEdgeSet | 전체 입력 접점 모듈, Interrupt Rising / Falling Edge Register의 Offset 위치에서 bit 단위로 상승 또는 하강 에지 값을 설정한다. |
AxdiInterruptEdgeGet | 전체 입력 접점 모듈, Interrupt Rising / Falling Edge Register의 Offset 위치에서 bit 단위로 상승 또는 하강 에지 값을 확인한다. |
AxdiInterruptEdgeSetBit | 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register의 Offset 위치에서 bit 단위로 상승 또는 하강 에지 값을 설정한다. |
AxdiInterruptEdgeGetBit | 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register의 Offset 위치에서 bit 단위로 상승 또는 하강 에지 값을 확인한다. |
AxdiInterruptEdgeSetByte | 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register의 Offset 위치에서 byte 단위로 상승 또는 하강 에지 값을 설정한다. |
AxdiInterruptEdgeGetByte | 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register의 Offset 위치에서 Byte 단위로 상승 또는 하강 에지 값을 확인한다. |
AxdiInterruptEdgeSetWord | 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register의 Offset 위치에서 word 단위로 상승 또는 하강 에지 값을 설정한다. |
AxdiInterruptEdgeGetWord | 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register의 Offset 위치에서 word 단위로 상승 또는 하강 에지 값을 확인한다. |
AxdiInterruptEdgeSetDword | 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register의 Offset 위치에서 double word 단위로 상승 또는 하강 에지 값을 설정한다. |
AxdiInterruptEdgeGetDword | 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register의 Offset 위치에서 double word 단위로 상승 또는 하강 에지 값을 확인한다. |
AxdiInterruptSetModule
Purpose
지정한 모듈의 인터럽트 메시지를 받아오기 위하여 윈도우 메시지, 콜백함수 또는 이벤트 방식을 사용한다.
Format
C++
DWORD AxdiInterruptSetModule(long lModuleNo, HWND hWnd, DWORD uMessage, AXT_INTERRUPT_PROC pProc, HANDLE *pEvent);
C#
uint AxdiInterruptSetModule(int lModuleNo, IntPtr hWnd, uint uMessage, CAXHS.AXT_INTERRUPT_PROC pProc, ref uint pEvent);
Parameters
[in/out] Name | [Init Value] Explanation |
---|---|
[in]lModuleNo | 입력 모듈 번호 (0 ~ N-1) |
[in]hWnd | 윈도우 핸들. 윈도우 메시지를 받을 때 사용. 사용하지 않으면 NULL |
[in]uMessage | 윈도우 메시지. 사용하지 않거나 디폴트 값을 사용하려면 0 |
[in]pProc | 콜백함수의 포인터. 사용하지 않으면 NULL |
[out]pEvent | 이벤트 ID. 사용하지 않으면 NULL |
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
Description
인터럽트는 모듈 단위로 받을 수 있다. 인터럽트 메시지를 받아오기 위해서는 윈도우 핸들을 넘기고 콜백함수를 사용할 때는 함수 포인터를 넘겨준다. 이벤트 방식을 사용할 때는 이벤트 ID 를 가져와서 인터럽트를 받는다.
예제 코드
// 0번 모듈의 인터럽트 메시지를 받아오기 위하여 윈도우 메시지 사용
// Header file에 추가
afx_msg LRESULT OnInterruptMessage (WPARAM wParam, LPARAM lParam) ;
BEGIN_MESSAGE_MAP(CDIODlg, CDialog)
//{{AFX_MSG_MAP
// 선언
ON_MESSAGE(WM_AXL_INTERRUPT, OnInterruptMessage)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// 인터럽트 발생 시 ‘OnInterruptMessage()’ 호출 됨
AxdiInterruptSetModule(0, m_hWnd, WM_AXL_INTERRUPT, NULL, NULL);
AxdiInterruptSetModuleEnable
Purpose
지정한 모듈의 인터럽트 사용 유무를 설정한다.
Format
C++
DWORD AxdiInterruptSetModuleEnable(long lpModuleNo, DWORD uUse);
C#
uint AxdiInterruptSetModuleEnable(int lpModuleNo, uint uUse);
Parameters
[in/out] Name | [Init Value] Explanation |
---|---|
[in]lpModuleNo | 입력 모듈 번호 (0 ~ N-1) |
[in]uUse | 인터럽트 사용 여부: AXT_USE - [00h] 인터럽트 사용 해제 - [01h] 인터럽트 사용 설정 |
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
Description
사용자가 지정한 모듈의 인터럽트 사용 유무를 설정한다.
예제 코드
// 0번째 모듈의 인터럽트를 사용 가능하게 설정한다.
AxdiInterruptSetModuleEnable(0, ENABLE);
AxdiInterruptGetModuleEnable
Purpose
지정한 모듈의 인터럽트 사용 유무를 확인한다.
Format
C++
DWORD AxdiInterruptGetModuleEnable(long lpModuleNo, DWORD *upUse);
C#
uint AxdiInterruptGetModuleEnable(int lpModuleNo, ref uint upUse);
Parameters
[in/out] Name | [Init Value] Explanation |
---|---|
[in]lpModuleNo | 입력 모듈 번호 (0 ~ N-1) |
[out]upUse | 인터럽트 사용 여부: AXT_USE - [00h] 인터럽트 사용 해제 - [01h] 인터럽트 사용 설정 |
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
Description
사용자가 지정한 모듈의 인터럽트 사용 유무를 확인한다.
예제 코드
// 0번 입력 모듈의 인터럽트 사용 가능 여부를 확인한다.
DWORD uUse;
AxdiInterruptGetModuleEnable(0, &uUse);
if (uUse)
{
AfxMessageBox(“0번 모듈은 인터럽트 사용이 가능합니다.”);
}
else
{
AfxMessageBox(“0번 모듈은 인터럽트 사용이 불가능합니다.”);
}
AxdiInterruptRead
Purpose
인터럽트 발생 위치를 확인한다.
Format
C++
DWORD AxdiInterruptRead(long *lpModuleNo, DWORD *upFlag);
C#
uint AxdiInterruptRead(ref int lpModuleNo, ref uint upFlag);
Parameters
[in/out] Name | [Init Value] Explanation |
---|---|
[in]lpModuleNo | 모듈 번호 |
[out]upFlag | 인터럽트 발생 위치 |
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3052] AXT_RT_DIO_NOT_INTERRUPT: DIO 인터럽트 설정 안 됨
Description
이벤트 방식의 인터럽트를 사용할 경우 인터럽트 발생 위치를 확인한다.
예제 코드
// 0번째 모듈의 인터럽트 발생 위치를 확인한다.
DWORD uFlag;
AxdiInterruptRead(0, &uFlag);
AxdiInterruptEdgeSet
Purpose
전체 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 bit 단위로 상승 또는 하강 에지 값을 설정한다.
Format
C++
DWORD AxdiInterruptEdgeSet(long lOffset, DWORD uMode, DWORD uValue);
C#
uint AxdiInterruptEdgeSet(int lOffset, uint uMode, uint uValue);
Parameters
[in/out] Name | [Init Value] Explanation |
---|---|
[in]lOffset | 입력 접점에 대한 Offset 위치 |
[in]uMode | 인터럽트 발생에지 설정: AXT_DIO_EDGE - [00h] 하강 에지 - [01h] 상승 에지 |
[in]uValue | 인터럽트 발생 설정 여부 ( Boolean ) |
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3102] AXT_RT_DIO_INVALID_OFFSET_NO : 유효하지 않은 DIO OFFSET 번호
[3104] AXT_RT_DIO_INVALID_MODE : 유효하지 않은 Edge 를 설정했을 때
Description
전체 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 bit 단위로 상승 또는 하강 에지 값을 설정한다. Offset 은 ‘0’부터 총 입력 ‘접점 수 – 1’까지 사용할 수 있다.
예제 코드
// 전체 입력 접점 모듈, Interrupt Rising Edge Register의 Offset 위치에서 bit 단위로 상승 에지 값을 설정한다.
AxdiInterruptEdgeSet(0, UP_EDGE, 1);
AxdiInterruptEdgeGet
Purpose
전체 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 bit 단위로 상승 또는 하강 에지 값을 확인한다.
Format
C++
DWORD AxdiInterruptEdgeGet(long lOffset, DWORD uMode, DWORD *upValue);
C#
uint AxdiInterruptEdgeGet(int lOffset, uint uMode, ref uint upValue);
Parameters
[in/out] Name | [Init Value] Explanation |
---|---|
[in]lOffset | 입력 접점에 대한 Offset 위치 |
[in]uMode | 인터럽트 발생 에지 설정: AXT_DIO_EDGE - [00h] 하강 에지 - [01h] 상승 에지 |
[out]upValue | 인터럽트 발생 설정 여부 ( Boolean ) |
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3102] AXT_RT_DIO_INVALID_OFFSET_NO : 유효하지 않은 DIO OFFSET 번호
[3104] AXT_RT_DIO_INVALID_MODE : 유효하지 않은 Edge 를 설정했을 때
Description
전체 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 bit 단위로 상승 또는 하강 에지 값을 확인한다. Offset 은 ‘0’부터 총 입력 접점 수 – 1 까지 사용할 수 있다.
예제 코드
// 전체 입력 접점 모듈, Interrupt Rising Edge Register의 Offset 위치에서 bit 단위로 상승 에지 설정 값을 읽는다.
DWORD uEdge;
AxdiInterruptEdgeGet(0, UP_EDGE, &uEdge);
AxdiInterruptEdgeSetBit
Purpose
지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 bit 단위로 상승 또는 하강 에지 값을 설정한다.
Format
C++
DWORD AxdiInterruptEdgeSetBit(long lModuleNo, long lOffset, DWORD uMode, DWORD uValue);
C#
uint AxdiInterruptEdgeSetBit(int lModuleNo, int lOffset, uint uMode, uint uValue);
Parameters
[in/out] Name | [Init Value] Explanation |
---|---|
[in]lModuleNo | 모듈 번호 |
[in]lOffset | 입력 접점에 대한 Offset 위치 |
[in]uMode | 인터럽트 발생 에지 설정: AXT_DIO_EDGE - [00h] 하강 에지 - [01h] 상승 에지 |
[in]uValue | 인터럽트 발생 설정 여부 (Boolean) |
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공 [3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음 [3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호 [3104] AXT_RT_DIO_INVALID_MODE : 유효하지 않은 Edge 를 설정했을 때
Description
사용자가 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 bit 단위로 레지스터 값을 설정한다. 지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 을 참조 하여 Offset 을 정한다.
Offset 범위와 Value 값
Module | Offset | Value |
---|---|---|
SIO-DI32 | 0 ~ 31 | 0(Off ), 1(On) |
SIO-DB32x | 0 ~ 15 | 0(Off ), 1(On) |
예제 코드
// 0번째 입력 접점 모듈, Interrupt Rising Edge Register의 Offset 위치에서 bit 단위로 상승 에지 값을 설정한다.
AxdiInterruptEdgeSetBit(0, 0, UP_EDGE, 1);
AxdiInterruptEdgeGetBit
Purpose
지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 bit 단위로 상승 또는 하강 에지 값을 확인한다.
Format
C++
DWORD AxdiInterruptEdgeGetBit(long lModuleNo, long lOffset, DWORD uMode, DWORD *upValue);
C#
uint AxdiInterruptEdgeGetBit(int lModuleNo, int lOffset, uint uMode, ref uint upValue);
Parameters
[in/out] Name | [Init Value] Explanation |
---|---|
[in]lModuleNo | 모듈 번호 |
[in]lOffset | 입력 접점에 대한 Offset 위치 |
[in]uMode | 인터럽트 발생 에지 설정: AXT_DIO_EDGE - [00h] 하강 에지 - [01h] 상승 에지 |
[out]upValue | 인터럽트 발생 설정 여부 (Bit) |
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3104] AXT_RT_DIO_INVALID_MODE : 유효하지 않은 Edge 를 설정했을 때
Description
사용자가 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 bit 단위로 상승 또는 하강 에지 값을 확인한다. 지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 확인한다.
Offset 범위와 Value 값
Module | Offset | Value |
---|---|---|
SIO-DI32 | 0 ~ 31 | 0(Off ), 1(On) |
SIO-DB32x | 0 ~ 15 | 0(Off ), 1(On) |
예제 코드
// 0번째 입력 접점 모듈, Interrupt Rising Edge Register의 Offset 위치에서 bit 단위로 상승 에지 설정 값을 읽는다.
DWORD uEdge;
AxdiInterruptEdgeGetBit(0, 0, UP_EDGE, &uEdge);
AxdiInterruptEdgeSetByte
Purpose
지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 byte 단위로 상승 또는 하강 에지 값을 설정한다.
Format
C++
DWORD AxdiInterruptEdgeSetByte(long lModuleNo, long lOffset, DWORD uMode, DWORD uValue);
C#
uint AxdiInterruptEdgeSetByte(int lModuleNo, int lOffset, uint uMode, uint uValue);
Parameters
[in/out] Name | [Init Value] Explanation |
---|---|
[in]lModuleNo | 모듈 번호 |
[in]lOffset | 입력 접점에 대한 Offset 위치 |
[in]uMode | 인터럽트 발생 에지 설정: AXT_DIO_EDGE - [00h] 하강 에지 - [01h] 상승 에지 |
[in]uValue | 인터럽트 발생 설정 여부 ( Byte ) |
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3104] AXT_RT_DIO_INVALID_MODE : 유효하지 않은 Edge 를 설정했을 때
Description
사용자가 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 byte 단위로 상승 또는 하강 에지 값을 설정한다. 지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 설정한다.
Offset 범위와 Value 값
Module | Offset | Value |
---|---|---|
SIO-DI32 | 0, 1, 2, 3 | 00h ~ FFh |
SIO-DB32x | 0, 1 | 00h ~ FFh |
예제 코드
// 0번째 입력 접점 모듈, Interrupt Rising Edge Register의 Offset 위치에서 byte 단위로 상승 에지 값을 설정한다.
AxdiInterruptEdgeSetByte(0, 0, UP_EDGE, 0xFF);
AxdiInterruptEdgeGetByte
Purpose
지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 byte 단위로 상승 또는 하강 에지 값을 확인한다.
Format
C++
DWORD AxdiInterruptEdgeGetByte(long lModuleNo, long lOffset, DWORD uMode, DWORD *upValue);
C#
uint AxdiInterruptEdgeGetByte(int lModuleNo, int lOffset, uint uMode, ref uint upValue);
Parameters
[in/out] Name | [Init Value] Explanation |
---|---|
[in]lModuleNo | 모듈 번호 |
[in]lOffset | 입력 접점에 대한 Offset 위치 |
[in]uMode | 인터럽트 발생 에지 설정: AXT_DIO_EDGE - [00h] 하강 에지 - [01h] 상승 에지 |
[out]upValue | 인터럽트 발생 설정 여부 (Byte) |
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3104] AXT_RT_DIO_INVALID_MODE : 유효하지 않은 Edge 를 설정했을 때
Description
사용자가 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 byte 단위로 상승 또는 하강 에지 값을 확인한다. 지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 확인한다.
Offset 범위와 Value 값
Module | Offset | Value |
---|---|---|
SIO-DI32 | 0, 1, 2, 3 | 00h ~ FFh |
SIO-DB32x | 0, 1 | 00h ~ FFh |
예제 코드
// 0번째 입력 접점 모듈, Interrupt Rising Edge Register의 Offset 위치에서 byte 단위로 상승 에지 설정 값을 읽는다.
DWORD uEdge;
AxdiInterruptEdgeGetByte(0, 0, UP_EDGE, &uEdge);
AxdiInterruptEdgeSetWord
Purpose
지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 word 단위로 상승 또는 하강 에지 값을 설정한다.
Format
C++
DWORD AxdiInterruptEdgeSetWord(long lModuleNo, long lOffset, DWORD uMode, DWORD uValue);
C#
uint AxdiInterruptEdgeSetWord(int lModuleNo, int lOffset, uint uMode, uint uValue);
Parameters
[in/out] Name | [Init Value] Explanation |
---|---|
[in]lModuleNo | 모듈 번호 |
[in]lOffset | 입력 접점에 대한 Offset 위치 |
[in]uMode | 인터럽트 발생 에지 설정: AXT_DIO_EDGE - [00h] 하강 에지 - [01h] 상승 에지 |
[in]uValue | 인터럽트 발생 설정 여부 (Word) |
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3104] AXT_RT_DIO_INVALID_MODE : 유효하지 않은 Edge 를 설정했을 때
Description
사용자가 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 word 단위로 상승 또는 하강 에지 값을 설정한다. 지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 설정한다.
Offset 범위와 Value 값
Module | Offset | Value |
---|---|---|
SIO-DI32 | 0, 1 | 0000h ~ FFFFh |
SIO-DB32x | 0 | 0000h ~ FFFFh |
예제 코드
// 0번째 입력 접점 모듈, Interrupt Rising Edge Register의 Offset 위치에서 word 단위로 상승 에지 값을 설정한다.
AxdiInterruptEdgeSetWord(0, 0, UP_EDGE, 0xFFFF);
AxdiInterruptEdgeGetWord
Purpose
지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 word 단위로 상승 또는 하강 에지 값을 확인한다.
Format
C++
DWORD AxdiInterruptEdgeGetWord(long lModuleNo, long lOffset, DWORD uMode, DWORD *upValue);
C#
uint AxdiInterruptEdgeGetWord(int lModuleNo, int lOffset, uint uMode, ref uint upValue);
Parameters
[in/out] Name | [Init Value] Explanation |
---|---|
[in]lModuleNo | 모듈 번호 |
[in]lOffset | 입력 접점에 대한 Offset 위치 |
[in]uMode | 인터럽트 발생 에지 설정: AXT_DIO_EDGE - [00h] 하강 에지 - [01h] 상승 에지 |
[out]upValue | 인터럽트 발생 설정 여부 (Word) |
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3104] AXT_RT_DIO_INVALID_MODE : 유효하지 않은 Edge 를 설정했을 때
Description
사용자가 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 word 단위로 상승 또는 하강 에지 값을 확인한다. 지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 확인한다.
Offset 범위와 Value 값
Module | Offset | Value |
---|---|---|
SIO-DI32 | 0, 1 | 0000h ~ FFFFh |
SIO-DB32x | 0 | 0000h ~ FFFFh |
예제 코드
// 0번째 입력 접점 모듈, Interrupt Rising Edge Register의 Offset 위치에서 word 단위로 상승 에지 설정 값을 읽는다.
DWORD uEdge;
AxdiInterruptEdgeGetWord(0, 0, UP_EDGE, &uEdge);
AxdiInterruptEdgeSetDword
Purpose
지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 double word 단위로 상승 또는 하강 에지 값을 설정한다.
Format
C++
DWORD AxdiInterruptEdgeSetDword(long lModuleNo, long lOffset, DWORD uMode, DWORD uValue);
C#
uint AxdiInterruptEdgeSetDWord(int lModuleNo, int lOffset, uint uMode, uint uValue);
Parameters
[in/out] Name | [Init Value] Explanation |
---|---|
[in]lModuleNo | 모듈 번호 |
[in]lOffset | 입력 접점에 대한 Offset 위치 |
[in]uMode | 인터럽트 발생 에지 설정: AXT_DIO_EDGE - [00h] 하강 에지 - [01h] 상승 에지 |
[in]uValue | 인터럽트 발생 설정 여부 (Double Word) |
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3104] AXT_RT_DIO_INVALID_MODE : 유효하지 않은 Edge 를 설정했을 때
Description
사용자가 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 double word 단위로 상승 또는 하강 에지 값을 설정한다. 지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 설정한다.
Offset 범위와 Value 값
Module | Offset | Value |
---|---|---|
SIO-DI32 | 0 | 00000000h ~ FFFFFFFFh |
SIO-DB32x | 0 | 00000000h ~ FFFFFFFFh |
예제 코드
// 0번째 입력 접점 모듈, Interrupt Rising Edge Register의 Offset 위치에서 double word 단위로 상승 에지 값을 설정한다.
AxdiInterruptEdgeSetDword(0, 0, UP_EDGE, 0xFFFFFFFF);
AxdiInterruptEdgeGetDword
Purpose
지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 double word 단위로 상승 또는 하강 에지 값을 확인한다.
Format
C++
DWORD AxdiInterruptEdgeGetDword(long lModuleNo, long lOffset, DWORD uMode, DWORD *upValue);
C#
uint AxdiInterruptEdgeGetDword(int lModuleNo, int lOffset, uint uMode, ref uint upValue);
Parameters
[in/out] Name | [Init Value] Explanation |
---|---|
[in]lModuleNo | 모듈 번호 |
[in]lOffset | 입력 접점에 대한 Offset 위치 |
[in]uMode | 인터럽트 발생 에지 설정: AXT_DIO_EDGE - [00h] 하강 에지 - [01h] 상승 에지 |
[out]upValue | 인터럽트 발생 설정 여부 (Double Word) |
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3104] AXT_RT_DIO_INVALID_MODE : 유효하지 않은 Edge 를 설정했을 때
Description
사용자가 지정한 입력 접점 모듈, Interrupt Rising / Falling Edge Register 의 Offset 위치에서 double word 단위로 상승 또는 하강 에지 값을 확인한다. 지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 확인한다.
Offset 범위와 Value 값
Module | Offset | Value |
---|---|---|
SIO-DI32 | 0 | 00000000h ~ FFFFFFFFh |
SIO-DB32x | 0 | 00000000h ~ FFFFFFFFh |
예제 코드
// 0번째 입력 접점 모듈, Interrupt Rising Edge Register의 Offset 위치에서 double word 단위로 상승 에지 설정 값을 읽는다.
DWORD uEdge;
AxdiInterruptEdgeGetDword(0, 0, UP_EDGE, &uEdge);