备忘一下
public bool Click(List<List<double>> ptList, List<double> scales, int CardId, double vStart = 5.0, double vMax = 40.0, double vEnd = 5.0, double acc = 1000.0, double dec = 1000.0, bool isCompute = false, int computeIdx = 1)
{
isReport = true;
if (!base.IsHomed)
{
SetError("轴:" + base.AxisName!.ToString() + "未回原点,请先回原点在移动");
return false;
}
vStart *= base.Scale;
vMax *= base.Scale;
vEnd *= base.Scale;
acc *= base.Scale;
dec *= base.Scale;
int num = 0;
PTSTS Status = default(PTSTS);
PTLINE Prof = default(PTLINE);
int ptbId = 0;
int num2 = 3;
int[] axisArr = new int[3] { 0, 1, 2 };
int num3 = APS168.APS_pt_disable(CardId, ptbId);
num3 = APS168.APS_pt_enable(CardId, ptbId, num2, axisArr);
if (num3 != num)
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(11, 1);
defaultInterpolatedStringHandler.AppendLiteral("启用点表失败,ret:");
defaultInterpolatedStringHandler.AppendFormatted(num3);
SetError(defaultInterpolatedStringHandler.ToStringAndClear());
return false;
}
num3 = APS168.APS_pt_set_absolute(CardId, ptbId);
if (num3 != num)
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(12, 1);
defaultInterpolatedStringHandler.AppendLiteral("设置缓冲区失败,ret:");
defaultInterpolatedStringHandler.AppendFormatted(num3);
SetError(defaultInterpolatedStringHandler.ToStringAndClear());
return false;
}
num3 = APS168.APS_pt_set_trans_buffered(CardId, ptbId);
num3 = APS168.APS_pt_set_acc(CardId, ptbId, acc);
num3 = APS168.APS_pt_set_dec(CardId, ptbId, dec);
DateTime now = DateTime.Now;
for (int i = 0; i < ptList.Count; i++)
{
while (true)
{
num3 = APS168.APS_get_pt_status(CardId, ptbId, ref Status);
if (num3 != num)
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(13, 1);
defaultInterpolatedStringHandler.AppendLiteral("获取点表状态失败,ret:");
defaultInterpolatedStringHandler.AppendFormatted(num3);
SetError(defaultInterpolatedStringHandler.ToStringAndClear());
return false;
}
int pntBufFreeSpace = Status.PntBufFreeSpace;
int pntBufUsageSpace = Status.PntBufUsageSpace;
int runningCnt = (int)Status.RunningCnt;
if (Status.PntBufFreeSpace > 10)
{
break;
}
Thread.Sleep(100);
bool flag = true;
}
num3 = APS168.APS_pt_set_vs(CardId, ptbId, vStart);
if (num3 != num)
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(11, 1);
defaultInterpolatedStringHandler.AppendLiteral("设置启动速度,ret:");
defaultInterpolatedStringHandler.AppendFormatted(num3);
SetError(defaultInterpolatedStringHandler.ToStringAndClear());
return false;
}
num3 = APS168.APS_pt_set_vm(CardId, ptbId, vMax);
if (num3 != num)
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(11, 1);
defaultInterpolatedStringHandler.AppendLiteral("设置最大速度,ret:");
defaultInterpolatedStringHandler.AppendFormatted(num3);
SetError(defaultInterpolatedStringHandler.ToStringAndClear());
return false;
}
num3 = APS168.APS_pt_set_ve(CardId, ptbId, vEnd);
if (num3 != num)
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(11, 1);
defaultInterpolatedStringHandler.AppendLiteral("设置结束速度,ret:");
defaultInterpolatedStringHandler.AppendFormatted(num3);
SetError(defaultInterpolatedStringHandler.ToStringAndClear());
return false;
}
Prof.Dim = num2;
Prof.Pos = new double[6]
{
ptList[i][0] * scales[0],
ptList[i][1] * scales[1],
ptList[i][2] * scales[2],
0.0,
0.0,
0.0
};
num3 = APS168.APS_pt_line(CardId, ptbId, ref Prof, ref Status);
if (num3 != num)
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(15, 1);
defaultInterpolatedStringHandler.AppendLiteral("点集推入线性运动失败,ret:");
defaultInterpolatedStringHandler.AppendFormatted(num3);
SetError(defaultInterpolatedStringHandler.ToStringAndClear());
return false;
}
if (i == ptList.Count - 1)
{
num3 = APS168.APS_pt_start(CardId, ptbId);
if (num3 != num)
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(13, 1);
defaultInterpolatedStringHandler.AppendLiteral("开始点集运动失败,ret:");
defaultInterpolatedStringHandler.AppendFormatted(num3);
SetError(defaultInterpolatedStringHandler.ToStringAndClear());
return false;
}
}
}
do
{
num3 = APS168.APS_get_pt_status(CardId, ptbId, ref Status);
int pntBufFreeSpace = Status.PntBufFreeSpace;
int pntBufUsageSpace = Status.PntBufUsageSpace;
int runningCnt = (int)Status.RunningCnt;
if (pntBufUsageSpace == computeIdx && isCompute)
{
OnClickDown?.Invoke();
}
Thread.Sleep(2);
}
while (Status.PntBufUsageSpace > 0);
while (true)
{
Thread.Sleep(10);
double num4 = (DateTime.Now - now).Seconds;
if (CheckStop() && num4 < base.Timeout)
{
break;
}
if (num4 > base.Timeout)
{
SetError("轴:" + base.AxisName!.ToString() + "点表运动超时!");
break;
}
Thread.Sleep(5);
}
return true;
}
}