cmmMxStop


SYNOPSIS

VT_I4 cmmMxStop(
    [in] VT_I4 NumAxes, [in] VT_PI4 AxisList, [in] VT_I4 IsWaitComplete, [in] VT_I4 IsBlocking
    )

DESCRIPTION

  • 지정한 모든 축에 대한 모션을 정지합니다. cmmMxStop() 함수는 정지시에 감속 후 정지를 수행하며, cmmMxStopEmg() 함수는 감속없이 즉시정지를 수행합니다.

PARAMETER

  • NumAxes : 동시에 작업을 수행할 대상 축의 수

  • ChannelList : 동시에 작업을 수행할 대상 축의 배열 주소값. 이 배열의 크기는 NumAxes 값과 일치하거나 커야 합니다.

  • IsWaitComplete : 완료될때까지 기다리는지 여부.

  • IsBlocking : 완료될 때까지 기다리는 동안 윈도우 메시지를 블록(Blocking)할 것인지를 결정합니다.

Value

Meaning

cmFALSE

블록(Blocking)을 하지 않습니다. 따라서 핻당 모션이 완ㄹ되는 동안에도 윈도우 이벤트를 처리합니다.

cmTRUE

블록(Blocking)을 합니다. 따라서 해당 모션이 완료되는 동안에는 윈도우 이벤트가 처리되지 않습니다.

RETURN VALUE

Value

Meaning

음수

수행 실패

cmERR_NONE

수행 성공

REFERENCE

Note

윈도우 이벤트라는 것은 무엇입니까? 윈도우 운영체제는 Event Driven 혹은 Message Driven 방식의 구조로 되어 있습니다. 각 응용프로그램은 메시지 큐(Queue)를 가지고 있으며, 정확히 말하면, 메시지를 사용해 이벤트를 통지하는 방식으로 설계되어 있습니다. 윈도우 메시지를 처리한다는 것은 메시지 큐에서 메시지를 하나씩 꺼내서 윈도우 프로시저에 전송한다는 것을 의미하며, 이것은 그 행선지가 되는 윈도우에 전송되어 처리됩니다.

EXAMPLE

1
2
3
4
5
6
7
8
9
C/C++

void CMxMotionDlg::OnStop()
{
   long nAxes[4]={0, 1, 2, 3};
   GetDlgItem(IDC_btnStop)->EnableWindow(FALSE);
   cmmMxStop(4, nAxes, TRUE, FALSE);
   GetDlgItem(IDC_btnStop)->EnableWindow(TRUE);
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Visual Basic

Private Sub btnStop_Click()
   Dim nRetVal As Long

   Dim AxisList(2) As Long

   AxisList(0) = 0
   AxisList(1) = 1

   ' 각 인자에 대한 설명을 드립니다.
   ' cmmMxStop( 축 갯수, 배열, 완료대기여부, 블록여부)

   ' 1. 축 갯수
   ' 다축제어에서 배열 요소에 해당하는 대상 축의 갯수입니다.

   ' 2. 배열
   ' 축 배열을 전달합니다. 이 배열 내부의 축은 X, Y, Z, U 축을 기본으로
   ' 하지만 사용자가 원하는 축의 조합 (예 : X1, Y2, U1, Z1) 등의 조합의
   ' 배열로도 전달 할 수 있습니다.
   ' 단 '1. 축 갯수'는 대상 축의 총 갯수입니다.

   ' 3. 완료 대기 여부
   ' cmmMxStop 함수의 이 인자의 값이 True 일 경우 함수는 정지 명령을 송달한 후 반환하지 않습니다.
   ' 만약 False 일 경우 정지 완료까지 기다리지 않습니다.

   ' 4. 블록 여부
   ' 이 매뉴얼에서 설명한 내용이므로 생략합니다.
   nRetVal = cmmMxStop(2, AxisList(0), True, GetIsBlocking())

End Sub
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Delphi

// * Description :
// * 이 함수는 버튼 이벤트에 의해 모션 동작을 정지하는 함수입니다.
// *

procedure btnStopClick();
var
   AxisList : Array[0..1] of LongInt;
   gnTargetAxis : LongInt;
begin
   AxisList[0] := cmX1;
   AxisList[1] := cmY1;
   gnTargetAxis := 2;

   // 정지 함수의 원형은 cmmSxStop([TargetAxis], [IsWaitComplete], [IsBlocking]) 입니다.
   // TargetAxis : 정지 할 대상 축을 설정합니다.
   // IsWaitComplete : 대상 축이 완전히 정지할 때 까지
   //함수 반환을 하지 않습니다.
   // IsBlocking : 함수의 동작시 윈도우 메시지 처리의 여부를 판단합니다.
   // cmFALSE 시에는 윈도우 메시지를 함수 내부에서 처리해주게 됩니다.
   // 보다 자세한 설명은 매뉴얼을 참고해주시기 바랍니다.

   cmmMxStop(gnTargetAxis, @AxisList, cmTRUE, cmFALSE);
end;

See also

cmmMxStopEmg