/// <summary> /// 二维位置压入 /// </summary> /// <param name="nCardNum">位置比较数据个数</param> /// <param name="axis1">轴1坐标</param> /// <param name="axis2">D轴2坐标</param> /// <param name="chn">通道号 0:HSIO1 ; 通道号 1: HSIO2</param> /// <param name="fifo">数据压入的 FIFO,范围: [0,1],该数据目前保留,使用 0 即可</param> /// <returns></returns> public override short D2DCompareData(short nCardNum, List <int> axis1, List <int> axis2, short chn, short fifo) { short nRtn = 0; //清除 nRtn |= CMc.GT_2DCompareClear(nCardNum, chn); //设置模式 nRtn |= CMc.GT_2DCompareMode(nCardNum, chn, CMc.m_c_COMPARE2_D_MODE_2_D); var ll = axis1.Count; var maxL = ll > 1000 ? 1000 : ll; var td = new CMc.T2_D_COMPARE_DATA[1000]; for (var i = 0; i < maxL; i++) { td[i].m_px = axis1[i]; td[i].m_py = axis2[i]; } //压入数据 nRtn |= CMc.GT_2DCompareData(nCardNum, chn, (short)maxL, ref td[0], fifo); //如果数量超过1000个,开启线程继续压入 if (maxL == 1000) { STRUCT_2_D_POINT t2P; t2P.m_listOfAxis1Position = axis1; t2P.m_listOfAxis2Position = axis2; t2P.m_indexNo = 1000; t2P.m_chnNo = chn; t2P.m_cardNo = nCardNum; var t = new Thread(ThreadAddP) { IsBackground = true }; t.Start(t2P); } return(nRtn); }