int CPI_E761_ZStage::OnTravelHighEnd(MM::PropertyBase* pProp, MM::ActionType eAct) { MMThreadGuard guard(g_PI_ThreadLock); if (eAct == MM::BeforeGet) { double val; BOOL ret = E7XX_qTMX(g_DeviceId, axisName_, &val); if (!ret) return processErr(); pProp->Set(val); } return DEVICE_OK; }
int CPI_E761_XYStage::OnTravelRange(MM::PropertyBase* pProp, MM::ActionType eAct) { if (eAct == MM::BeforeGet) { MMThreadGuard guard(g_PI_ThreadLock); double lowArray[2]; double highArray[2]; BOOL ret = E7XX_qTMN(g_DeviceId, axisName_, lowArray); if (!ret) return processErr(); ret = E7XX_qTMX(g_DeviceId, axisName_, highArray); if (!ret) return processErr(); char str[1024]; snprintf(str, 1024, "Travel range: axis 1: %g~%gum / axis 2: %g~%gum", lowArray[0], highArray[0], lowArray[1], highArray[1]); pProp->Set(str); } return DEVICE_OK; }
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { // usage if (nrhs != 1) { mexPrintf("\nUsage: nmssPSYAxisHighEnd(<controller_handle>), where <controller_handle> must be a valid controller handle."); return; } int iControllerHandle = mxGetScalar(prhs[0]); try { // switch on servo int bServoState[1]; bServoState[0] = true; if(!E7XX_SVO(iControllerHandle, "2", bServoState)) throw true; // high limit of the moving range double dRet[1]; if (!E7XX_qTMX (iControllerHandle, "2", dRet)) throw true; double* pdRet; plhs[0] = mxCreateString(sOK); plhs[1] = mxCreateDoubleMatrix(1, 1, mxREAL); pdRet = mxGetPr(plhs[1]); *pdRet = dRet[0]; } catch(bool bError) { // something went wrong, oh my god! nmssPSError(iControllerHandle, nlhs, plhs); } return; }