3.1.7. cmmGnInitFromFile_MapOnly


SYSNOPSYS

VT_I4cmmGnInitFromFile_MapOnly (
    [in] VT_STR szCmeFile, [in] VT_I4 nMapType
    )

DESCRIPTION

  • 커미조아 환경 설정 파일(.CME2) 을 통해 설정된 값으로 모션 제어기 및 디지털 입출력 장치의 각종 환경 중 모션 또는 범용 디지털 입출력 채널에 대한 맵핑 정보만을 자동으로 설정합니다.

PARAMETER

  • szCmeFile : CME2 파일의 절대 경로 혹은 파일의 상대 경로를 지정합니다.

  • nMapType : 모션 혹은 범용 디지털 입출력 채널 맵핑 정보 중 하나 또는 두 가지 모두의 Mapping 형식을 선택합니다.

RETURN VALUE

Value

Meaning

음수

수행 실패

cmERR_NONE

수행 성공

REFERENCE

  • 이 함수는 cmmGnInitFromFile 처럼 모션 환경 설정에 대한 모든 정보를 가져오지 않고 모션 또는 I/O 채널 맵핑 정보에 대해서만 로드 하는 것에 유의 하십시오.

EXAMPLE

  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
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
C/C++

void InitMotionDevices()
{
       ////////////////////////////////////////////////////////////////////////////////////////
       // [CAUTION]: 아래와 다른 CME 파일을 사용하는 경우에는 아래 코드를 수정하여 올바른 CME 파일의
       // 경로를 지정하십시오.
       #define CME_FILE_NAME "Default.cme2"
       char szCmeFilePath[MAX_PATH], szSystemDir[MAX_PATH];

/* 윈도우즈 시스템 디렉토리명 얻어오기 (일반적으로는 C:\Windows\System32) */
       GetSystemDirectory(szSystemDir, MAX_PATH);
       sprintf(szCmeFilePath, "%s\\%s", szSystemDir, CME_FILE_NAME);

       if(cmmGnInitFromFile_MapOnly(szCmeFilePath, cmDMAP_ALL) != cmERR_NONE){
               cmmErrShowLast(NULL); // 에러 발생하였으면 에러 디스플레이.
       }
       else{
               //////////////////////////////////////////////////////////////////////////////////
               // CME 파일에서 정의한 축수와 실제 장착되어 있는 모션 축수를 비교확인(確認) 하고자 할 때는
               // 아래와 같이 하면 됩니다.
               long nNumAxes_installed, nNumAxes_defined;
               cmmAdvGetNumAvailAxes(&nNumAxes_installed); // 현재 실제로 PC 에 장착되어 있는
               // 모션축 수 (cmmGnDeviceLoad() 함수에서 반환하는 축수와 동일)
               cmmAdvGetNumDefinedAxes(&nNumAxes_defined); // CME 파일에서 정의한 축 수
               //(CME 파일이 지정되지 않는 경우에는 현재 장착된 축 수와 일치합니다.)
               if(nNumAxes_installed != nNumAxes_defined){
                   MessageBox(NULL, "현재 장착되어 있는 모션 축 수가 정의된 축 수와 일치하지
                       않습니다", "Warning", MB_OK | MB_ICONWARNING);
               }
       }

       // SERVO-ON //
       long nNumAxes;
       cmmAdvGetNumDefinedAxes(&nNumAxes);
       for(int i=0; i<nNumAxes; i++){
               cmmGnSetServoOn(i, TRUE);
       }
}

--------------------------------------------------------------------------------------------------------------------
 Visual Basic

' *****************************************************************
' 윈도우 시스템 디렉토리명을 얻어오려면 비주얼 베이직에서
' 다음과 같은 코드를 CmmSDK.bas 모듈에 추가해 준다.
' Public Declare Function GetWindowsDirectory _
' Lib "kernel32.dll" Alias "GetWindowsDirectoryA" _
' (ByVal lpBuffer As String, ByVal nSize As Long) _
' As Long
' Public Declare Function GetSystemDirectory _
' Lib "kernel32.dll" Alias "GetSystemDirectoryA" _
' (ByVal lpBuffer As String, ByVal nSize As Long) _
' As Long
' *****************************************************************

' *******************************************************************************************************
' [CAUTION]: 아래와 다른 CME 파일을 사용하는 경우에는 아래 코드를 수정하여 올바른 CME 파일의
' 경로를 지정하십시오.
' *******************************************************************************************************
Const MAX_PATH = 100
Const CME_FILE_NAME = "Default.cme2"

Private Sub InitMotionDevices(void)

 Dim szCmeFilePath As String
 Dim szSystemDir As String
 Dim nNumAxes_installed As Long
 Dim nNumAxes_defined As Long
 Dim nNumAxes As Long
 Dim length As Long
 Dim i As Long

 length = GetSystemDirectory(szSystemDir, MAX_PATH)
 szSystemDir = Left(szSystemDir, MAX_PATH)
 szCmeFilePath = szSystemDir & CME_FILE_NAME

 If cmmGnInitFromFile_MapOnly (szCmeFilePath, cmDMAP_ALL) <> cmERR_NONE Then
   Call cmmErrShowLast(Null)
 Else
   ' ************************************************************************************************
   ' CME 파일에서 정의한 축수와 실제 장착되어 있는 모션 축수를 비교확인 (確認)하고자 할 때는
   ' 아래와 같이 하면 됩니다.
   ' ************************************************************************************************
   Call cmmAdvGetNumAvailAxes(nNumAxes_installed)
   Call cmmAdvGetNumfinedAxes(nNumAxes_defined)
   If nNumAxes_installed <> nNumAxes_defined Then
           MsgBox ("현재 장착되어 있는 모션 축 수가 정의된 축 수와 일치하지 않습니다")
   End If
 End If

 ' SERVO-ON

 Call cmmAdvGetNumDefinedAxes(nNumAxes)

 For i = 0 To nNumAxes
 Call cmmGnSetServoOn(i, cmTRUE)
 Next

 End Sub

--------------------------------------------------------------------------------------------------------------------
Delphi

Const CME_FILE_NAME = 'Default.cme2';
Const MAX_PATH = 100;

procedure InitMotionDevices();
var
       szCmeFilePath : Array[0..MAX_PATH] of Char;
       szSystemDir : Array[0..MAX_PATH] of Char;
       nNumAxes_installed: LongInt;
       nNumAxes_defined: LongInt;
       nNumAxes : LongInt;
       i : LongInt;
begin
       //윈도우즈 시스템 디렉토리명 얻어오기 (일반적으로는 C:\Windows\System32)
       GetSystemDirectory(@szSystemDir, MAX_PATH);
       Format('%s\\%s',[ szSystemDir, CME_FILE_NAME]);

       if(cmmGnInitFromFile_MapOnly(@szCmeFilePath, cmDMAP_ALL) <> cmERR_NONE) then
       begin
               cmmErrShowLast(0); // 에러 발생하였으면 에러 디스플레이.
       end
       else
       begin
               //////////////////////////////////////////////////////////////////////////////////
               // CME 파일에서 정의한 축수와 실제 장착되어 있는 모션 축수를 비교확인(確認) 하고자 할 때는
               // 아래와 같이 하면 됩니다.
               cmmAdvGetNumAvailAxes(@nNumAxes_installed);
       // 현재 실제로 PC 에 장착되어 있는 모션축 수 (cmmGnDeviceLoad() 함수에서 반환하는 축수와 동일)
               cmmAdvGetNumDefinedAxes(@nNumAxes_defined);
       // CME 파일에서 정의한 축 수(CME 파일이 지정되지 않는 경우에는 현재 장착된 축 수와 일치합니다.)
               if(nNumAxes_installed <> nNumAxes_defined) then
               begin
                       Writeln('현재 장착되어 있는 모션 축 수가 정의된 축 수와 일치하지 않습니다');
               end;
       end;
       // SERVO-ON //
       cmmAdvGetNumDefinedAxes(@nNumAxes);
       //i := 0;
       For i := 0 to nNumAxes do cmmGnSetServoOn(i, cmTRUE);
end;