#include "mhcompcode.h" #include MHCompCode::MHCompCode() { } void MHCompCode::setXStartPos(double value) { xStartPos = value; } void MHCompCode::setYStartPos(double value) { yStartPos = value; } void MHCompCode::setXWorkRange(double value) { xWorkRange = value; } void MHCompCode::setYWorkRange(double value) { yWorkRange = value; } void MHCompCode::setXInterval(double value) { xInterval = value; } void MHCompCode::setYInterval(double value) { yInterval = value; } int MHCompCode::getLookupRows() { // 比如范围为3,间隔为1,Y方向会有4条线段 return int(xWorkRange/xInterval)+1; } int MHCompCode::getLookupCols() { return int(yWorkRange/yInterval)+1; } void MHCompCode::setMHRHYOffset(double value) { MHRHYOffset = value; } void MHCompCode::setMHRHXOffset(double value) { MHRHXOffset = value; } void MHCompCode::setLookupRows(int value) { rows = value; } void MHCompCode::setLookupCols(int value) { cols = value; } QString MHCompCode::getCode() { QString code = QString("global real LookupTable(%1)(%2),xStart,yStart\n").arg(rows).arg(cols); code+= "MFLAGS(Z).#DEFCON = 0\n" "CONNECT RPOS(Z) = RPOS(Z)\n" "DEPENDS Z, Z\n"+ //QString("SET APOS(Z) = RPOS(Z) - MAP2(FPOS(Y), FPOS(X), LookupTable, %1, %2, %3, %4)\n").arg(yStartPos+MHRHYOffset-yInterval).arg(yInterval).arg(xStartPos+MHRHXOffset-xInterval).arg(xInterval)+ //QString("CONNECT RPOS(Z) = APOS(Z) + MAP2(FPOS(Y), FPOS(X), LookupTable, %1, %2, %3, %4)\n").arg(yStartPos+MHRHYOffset-yInterval).arg(yInterval).arg(xStartPos+MHRHXOffset-xInterval).arg(xInterval)+ //QString("SET APOS(Z) = RPOS(Z) - MAP2(FPOS(Y), FPOS(X), LookupTable, %1, %2, %3, %4)\n").arg(yStartPos+MHRHYOffset).arg(yInterval).arg(xStartPos+MHRHXOffset).arg(xInterval)+ //QString("CONNECT RPOS(Z) = APOS(Z) + MAP2(FPOS(Y), FPOS(X), LookupTable, %1, %2, %3, %4)\n").arg(yStartPos+MHRHYOffset).arg(yInterval).arg(xStartPos+MHRHXOffset).arg(xInterval)+ QString("SET APOS(Z) = RPOS(Z) - MAP2(FPOS(X), FPOS(Y), LookupTable, %1, %2, %3, %4)\n").arg(xStartPos+MHRHXOffset).arg(xInterval).arg(yStartPos+MHRHYOffset).arg(yInterval)+ QString("CONNECT RPOS(Z) = APOS(Z) + MAP2(FPOS(X), FPOS(Y), LookupTable, %1, %2, %3, %4)\n").arg(xStartPos+MHRHXOffset).arg(xInterval).arg(yStartPos+MHRHYOffset).arg(yInterval)+ "DEPENDS Z, Z\n" "runF = 1\n" "STOP"; return code; } QString MHCompCode::getCode_motion() { QString code = QString("GLOBAL REAL MAXINlhc=%1,MAXPOS_Xlhc=%2,MINPOS_Xlhc=%3,X_OFFSETlhc=%4,myRange\n").arg(MaxCmp).arg(MaxPos_x).arg(MinPos_x).arg(x_offset); code+= "GLOBAL REAL XPOINT(10000),ERR_Z1(10000)\n" "REAL tmp_data\n" "INT i,flag,count_data\n" "i=9999\n" "FILL(0,ERR_Z1,0,9999)\n" "FILL(MINPOS_Xlhc,XPOINT,0,9999)\n" "tmp_data=0;count_data=0\n" "MFLAGS(Z).17=0\n" "CONNECT RPOS(Z)=APOS(Z)+MAPNS((FPOS(X)+X_OFFSETlhc),XPOINT,ERR_Z1)\n" "DEPENDS Z, Z\n" "WHILE 1\n" "IF FPOS(X)>MINPOS_Xlhc & FPOS(X)MAXINlhc\n" "if i<9999\n" "myRange=ERR_Z1(i+1)\n" "else\n" "myRange=tmp_data\n" "end\n" "ELSE\n" "IF count_data<1\n" "tmp_data=myRange\n" "count_data=count_data+1\n" "END\n" "END\n" "ERR_Z1(i)=myRange\n" "i=i-1\n" "if i<0\n" "i=0\n" "END\n" "END\n" "END\n" "IF FPOS(X)>MAXPOS_Xlhc\n" "i=9999\n" "count_data=0\n" "FILL(tmp_data,ERR_Z1,0,9999)\n" "FILL(MINPOS_Xlhc,XPOINT,0,9999)\n" "END\n" "END\n" "MFLAGS(Z).17=1\n" "STOP\n"; return code; }