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;
|