#include "GCMotion.h"
#include "string.h"
#include <windows.h>
#include <math.h>
using namespace System;
using namespace System::Windows::Forms;

/*****************************************************************
* Function Name : 指令返回值
* Description   : 返回错误值 rtn
* Date			: 2022年8月3日
* Auther		: LWH
******************************************************************/
short gc_rtn_error(short rtn)
{
	if (rtn != RTN_CMD_SUCCESS) {
		MessageBox::Show(Convert::ToString(rtn));
		return rtn;		// 指令执行错误
	}
}

/*****************************************************************
* Function Name : XYZA机型变换例程
* Description   : 略
* Date			: 2022年8月3日
* Auther		: LWH
******************************************************************/
short gc_example(void)
{
	short rtn;					// 指令返回值
	short devNum;				// 设备序号，从0开始
	short axisNum;				// 轴号，从0开始
	HAND devHandle;				// 设备句柄
	HAND axisHandle;			// 轴句柄
	HAND crdHandle;				// 坐标系句柄
	rtn = NMC_DevOpen(devNum, &devHandle);				//打开控制器
	gc_rtn_error(rtn);
	rtn = NMC_MtOpen(devHandle, axisNum, &axisHandle);	//打开轴,并获得轴句柄
	gc_rtn_error(rtn);
	rtn = NMC_MtSetSvOn(axisHandle);					//打开轴使能(根据实际情况使用)
	gc_rtn_error(rtn);

	/************************* 先建立坐标系(插补),过程略 ***************************/
	double pulse2Rad = 2 * PI / 288000;			//A轴旋转一圈脉冲为
	long	deltaX = -3687;						//0转到PI/3后重新校正到一点是的X偏移量			
	long	deltaY = -9494;						//0转到PI/3后重新校正到一点是的Y偏移量
	long toolX = 0;
	long toolY = 0;
	rtn = NMC_CrdSetXYZAToolCalc(crdHandle, PI / 3, deltaX, deltaY, &toolX, &toolY);//计算工具偏移
	gc_rtn_error(rtn);	
	rtn = NMC_CrdSetXYZAPara(crdHandle, pulse2Rad, toolX, toolY);//设置工具参数
	gc_rtn_error(rtn);
	short pMapAxisArray[4] = { 0,1,2,3 };
	rtn = NMC_CrdSetTransXYZA(crdHandle, pMapAxisArray);//设置XYZA机型
	gc_rtn_error(rtn);
	return 0; 
}
