3.1.6. cmmGnInitFromFile


SYNOPSYS

VT_I4 cmmGnInitFromFile (
    [in] VT_STR szCmeFile
    )

DESCRIPTION

  • 커미조아 환경 설정 파일(.CME2)을 통해 설정된 값으로 모션제어기 및 디지털 입출력 장치의 각종 환경을 자동으로 설정합니다.

PARAMETER

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

RETURN VALUE

Value

Meaning

음수

수행 실패

cmERR_NONE

수행 성공

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
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(szCmeFilePath) != 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(szCmeFilePath) <> 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(@szCmeFilePath) <> 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;