From d34256830982fb9ea822c1e9b874c3b7fa0a614d Mon Sep 17 00:00:00 2001 From: zxd <zxdvslxy@gmail.com> Date: 星期四, 14 九月 2023 18:31:26 +0800 Subject: [PATCH] Modify(包含部分测试代码) 1.添加注释 2.ins按钮功能 --- MTerm1/MTerm1View.cpp | 1138 ++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 624 insertions(+), 514 deletions(-) diff --git a/MTerm1/MTerm1View.cpp b/MTerm1/MTerm1View.cpp index a34e24c..3e2dbf9 100644 --- a/MTerm1/MTerm1View.cpp +++ b/MTerm1/MTerm1View.cpp @@ -28,6 +28,10 @@ IMPLEMENT_DYNCREATE(CMTerm1View, CScrollView) +/// <summary> +/// 娑堟伅鏄犲皠 +/// 鏄� MFC 涓敤浜庡皢 Windows 娑堟伅锛堝榧犳爣鐐瑰嚮銆佹寜閿瓑锛夋槧灏勫埌鎴愬憳鍑芥暟鐨勬満鍒躲�� +/// </summary> BEGIN_MESSAGE_MAP(CMTerm1View, CScrollView) // 鏍囧噯鎵撳嵃鍛戒护 ON_COMMAND(ID_FILE_PRINT, &CScrollView::OnFilePrint) @@ -102,19 +106,31 @@ return CScrollView::PreCreateWindow(cs); } +/// <summary> +/// MFC 涓殑涓�涓嚱鏁帮紝瀹冨湪瑙嗗浘棣栨鏄剧ず涔嬪墠琚皟鐢� +/// </summary> void CMTerm1View::OnInitialUpdate() { CScrollView::OnInitialUpdate(); + + //鍒涘缓浜嗕笁绉嶄笉鍚岀殑瀛椾綋 TextFont.CreateFont(13, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_ROMAN, _T("瀹嬩綋")); MonTextFont.CreateFont(12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_ROMAN, _T("瀹嬩綋")); AnnoFont.CreateFont(12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_ROMAN, _T("瀹嬩綋")); + + //鑾峰彇浜嗙姸鎬佹爮鐨勫紩鐢ㄥ苟瀛樺偍鍦� m_pStatusBar 鎴愬憳鍙橀噺涓� m_pStatusBar = ((CChildFrame *)GetParentFrame())->GetStatusBar(); + CSize sizeTotal; // TODO: 璁$畻姝よ鍥剧殑鍚堣澶у皬 sizeTotal.cx = m_LeftMargin + m_CellWidth* m_CellPerLine + m_CellWidth *2; sizeTotal.cy = 2000; + //璁剧疆浜嗘粴鍔ㄥぇ灏� SetScrollSizes(MM_TEXT, sizeTotal); - CString s1; + + CString s1;//娌″暐鐢� + + //璁剧疆浜嗕袱涓畾鏃跺櫒锛屼竴涓棿闅斾负50姣锛屽彟涓�涓负10姣銆� SetTimer(1, 50,NULL); SetTimer(2, 10, NULL); @@ -130,25 +146,27 @@ return; // TODO: 鍦ㄦ澶勪负鏈満鏁版嵁娣诲姞缁樺埗浠g爜 - CString s1; + CString s1;//娌″暐鐢� + needReDraw = 1; DrawLDSGraph(pDC); needReDraw = 0; } -// CMTerm1View 鎵撳嵃 - +// CMTerm1View 鎵撳嵃锛孧FC 鍑芥暟锛岀敤浜庡噯澶囨墦鍗般�� BOOL CMTerm1View::OnPreparePrinting(CPrintInfo* pInfo) { // 榛樿鍑嗗 return DoPreparePrinting(pInfo); } +// MFC 鍑芥暟锛岀敤浜庡湪鎵撳嵃寮�濮嬩箣鍓嶈繘琛屽垵濮嬪寲銆� void CMTerm1View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: 娣诲姞棰濆鐨勬墦鍗板墠杩涜鐨勫垵濮嬪寲杩囩▼ } +//MFC 鍑芥暟锛岀敤浜庡湪鎵撳嵃缁撴潫鍚庤繘琛屾竻鐞嗐�� void CMTerm1View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: 娣诲姞鎵撳嵃鍚庤繘琛岀殑娓呯悊杩囩▼ @@ -158,16 +176,19 @@ // CMTerm1View 璇婃柇 #ifdef _DEBUG +//鍑芥暟鐢ㄤ簬楠岃瘉瀵硅薄鐨勬湁鏁堟�с�� void CMTerm1View::AssertValid() const { CScrollView::AssertValid(); -} + } +// 鍑芥暟鐢ㄤ簬灏嗗璞$殑鍐呭杞偍鍒版寚瀹氱殑涓婁笅鏂囥�� void CMTerm1View::Dump(CDumpContext& dc) const { CScrollView::Dump(dc); } +//鍑芥暟杩斿洖涓庢瑙嗗浘鍏宠仈鐨勬枃妗e璞°�� CMTerm1Doc* CMTerm1View::GetDocument() const // 闈炶皟璇曠増鏈槸鍐呰仈鐨� { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMTerm1Doc))); @@ -175,6 +196,7 @@ } #endif //_DEBUG +//MFC 鍑芥暟锛岀敤浜庡鐞嗚鍥剧殑鍒涘缓浜嬩欢銆� int CMTerm1View::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CScrollView::OnCreate(lpCreateStruct) == -1) @@ -185,9 +207,13 @@ return 0; } +/// <summary> +/// 鐢ㄤ簬閲嶆柊缁樺埗瑙嗗浘銆� +/// </summary> +/// <returns></returns> int CMTerm1View::DoReDraw() { - // TODO: 鍦ㄦ澶勬坊鍔犲疄鐜颁唬鐮�. + CPoint scroll1; scroll1 = this->GetScrollPosition(); @@ -210,6 +236,13 @@ return 0; } +/// <summary> +/// 婊氬姩鍒扮壒瀹氬崟鍏冩牸 +/// 鍑芥暟鍐呴儴璁$畻浜嗗崟鍏冩牸鐨勬�婚珮搴︼紝鑰冭檻浜嗘槸鍚︽樉绀烘敞閲� +/// </summary> +/// <param name="nRow"></param> +/// <param name="nCol"></param> +/// <returns></returns> int CMTerm1View::ScrollToCell(int nRow, int nCol) { int CellTotalHeight = m_CellHeight + (m_bShowComments ? m_CommentHeight : 0); @@ -227,36 +260,57 @@ return 0; } +/// <summary> +/// 婊氬姩鍗曞厓鏍艰繘鍏ヨ鍥撅紙鏈畬鎴愮殑鍔熻兘锛� +/// </summary> +/// <param name="nRow"></param> +/// <param name="nCol"></param> +/// <returns></returns> int CMTerm1View::ScrollCellIntoView(int nRow, int nCol) { int CellTotalHeight = m_CellHeight + (m_bShowComments ? m_CommentHeight : 0); return 0; } +/// <summary> +/// 妫�鏌ュ崟鍏冩牸鏄惁鍦ㄨ鍥句腑锛堟湭瀹屾垚鐨勫姛鑳斤級 +/// </summary> +/// <param name="nRow"></param> +/// <param name="nCol"></param> +/// <returns></returns> int CMTerm1View::isCellInView(int nRow, int nCol) { int CellTotalHeight = m_CellHeight + (m_bShowComments ? m_CommentHeight : 0); return 0; } +/// <summary> +/// 鐢ㄤ簬鍦ㄨ鍥句腑缁樺埗鍥惧舰鐨勪富瑕佸嚱鏁� +/// </summary> +/// <param name="pDC">鏂囨。</param> +/// <returns></returns> int CMTerm1View::DrawLDSGraph(CDC* pDC) { // TODO: 鍦ㄦ澶勬坊鍔犲疄鐜颁唬鐮�. - CString s1; + CString s1;//娌″暐鐢� + + //楠岃瘉鏂囨。寮曠敤 CMTerm1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return false; + if (m_bMonitoring) { pDoc->DoPLCMonitor(); } + int x1, y1, x2, y2; // RECT rect1; int CellTotalHeight = m_CellHeight + (m_bShowComments ? m_CommentHeight : 0); int nDataType, nDataAddr; int nStat; - CBrush br0(BkColor); - CBrush br01(BkEditColor); + CBrush br0(BkColor);//鑳屾櫙棰滆壊 + CBrush br01(BkEditColor);//缂栬緫锛堥�変腑锛夌姸鎬佷笅鐨勮儗鏅鑹� int nRow, nCol; CRect rect0; this->GetClientRect(&rect0); @@ -264,19 +318,26 @@ CPoint scroll1; scroll1 = this->GetScrollPosition(); - int nFirstVisibleLine; - int nLastVisibleLine; - + int nFirstVisibleLine;//鐢ㄤ簬纭畾鍙琛岃寖鍥�-璧峰浣嶇疆 + int nLastVisibleLine;//鐢ㄤ簬纭畾鍙琛岃寖鍥�-缁堟浣嶇疆 + //閫氳繃婊氬姩浣嶇疆鍜岃鍥剧殑楂樺害璁$畻涓婅堪涓や釜鍊� nFirstVisibleLine = (scroll1.y - m_TopMargin) / CellTotalHeight; nLastVisibleLine = (rect0.Height() + scroll1.y - m_TopMargin) / CellTotalHeight + 1; - if (nFirstVisibleLine < 0) { nFirstVisibleLine = 0; } - if (nLastVisibleLine < 0) { nLastVisibleLine = 0; } + if (nFirstVisibleLine < 0) + { + nFirstVisibleLine = 0; + } + if (nLastVisibleLine < 0) + { + nLastVisibleLine = 0; + } + //閫夋嫨瀛椾綋 CFont *pOldFont; pOldFont = (CFont *)pDC->SelectObject(&TextFont); - - for (int i = nFirstVisibleLine; i < nLastVisibleLine && i < 1000; i++) { + for (int i = nFirstVisibleLine; i < nLastVisibleLine && i < 1000; i++) + { // 鐢讳竴琛� 鍗曞厓 nRow = i; int x0, y0; @@ -401,7 +462,6 @@ return 0; } - void CMTerm1View::DrawFocusRect(CDC* pDC) { // DrawCell(pDC, m_oldFocusRow, m_oldFocusCol); @@ -430,7 +490,6 @@ // pDC->SelectObject(poldBrush); } - int CMTerm1View::DrawLeftRightLine(CDC* pDC, int x0, int y0, int size1, int size2) { // TODO: 鍦ㄦ澶勬坊鍔犲疄鐜颁唬鐮�. @@ -452,7 +511,6 @@ pDC->LineTo(x2, y2); return 0; } - void CMTerm1View::DrawOT(CDC* pDC, int x0, int y0) { @@ -535,6 +593,7 @@ pDC->LineTo(x2, y2); return 0; } + int CMTerm1View::DrawAngleBracket(CDC* pDC, int x0, int y0, int size1, int size2) { // TODO: 鍦ㄦ澶勬坊鍔犲疄鐜颁唬鐮�. @@ -542,7 +601,7 @@ DrawLeftRightLine(pDC, x0, y0, size1, size2); // 宸﹀皷鎷彿 x1 = x0 + size1 + 6; - y1 = y0 + m_LinePosY -6; + y1 = y0 + m_LinePosY -6; x2 = x1 -6; y2 = y1 +6 ; pDC->MoveTo(x1, y1); @@ -664,7 +723,7 @@ int CellTotalHeight = m_CellHeight + (m_bShowComments ? m_CommentHeight : 0); rect1.left = m_LeftMargin + 1 + m_CellWidth * nCol; - rect1.right = rect1.left + m_CellWidth; + rect1.right = rect1.left + m_CellWidth; rect1.top = m_TopMargin + CellTotalHeight * nRow; rect1.bottom = rect1.top + CellTotalHeight; @@ -1138,6 +1197,13 @@ CScrollView::OnKeyDown(nChar, nRepCnt, nFlags); } + +/// <summary> +/// 鍗曞厓鏍肩劍鐐瑰彉鍖�*閫変腑鐐瑰彉鍖� +/// </summary> +/// <param name="nRow"></param> +/// <param name="nCol"></param> +/// <returns></returns> int CMTerm1View::CellFocusChg(int nRow, int nCol) { CString s1; @@ -1150,8 +1216,6 @@ auto p1 = (CMainFrame*)AfxGetMainWnd(); auto p2 = p1->GetInputWnd(); p2->SetCurCellPos(nRow,nCol,thecell); - - return 0; } @@ -1169,10 +1233,21 @@ int CellTotalHeight = m_CellHeight + (m_bShowComments ? m_CommentHeight : 0); nRow = (ty - m_TopMargin) / CellTotalHeight; nCol = (tx - m_LeftMargin) / m_CellWidth; - if (nRow < 0) { nRow = 0; } - if (nCol < 0) { nCol = 0; } - if (nCol >= m_CellPerLine) { nCol = m_CellPerLine - 1; } - s1.Format(_T("LD %d %d %02X Scroll %d %d Total %d %d Row %d Col %d"), point.x, point.y, nFlags, scroll1.x, scroll1.y, tx, ty, nRow, nCol); + if (nRow < 0) + { + nRow = 0; + } + if (nCol < 0) + { + nCol = 0; + } + if (nCol >= m_CellPerLine) + { + nCol = m_CellPerLine - 1; + } + s1.Format(_T("OnLButtonDown::zxd:: LD %d %d %02X Scroll %d %d Total %d %d Row %d Col %d"), point.x, point.y, nFlags, scroll1.x, scroll1.y, tx, ty, nRow, nCol); + DbgLog(s1);//zxd add to test + m_pStatusBar->SetPaneText(6, s1); m_FocusRow = nRow; m_FocusCol = nCol; @@ -1800,7 +1875,10 @@ } } - +/// <summary> +/// 绋嬪簭鏁版嵁杞负姊舰鍥� +/// </summary> +/// <returns></returns> int CMTerm1View::TransProgToLDS() { CString s1; @@ -1826,518 +1904,526 @@ int cx = 0, cy = 0; int maxy = 0; - for (int i = 0; i < pDoc->m_nProgSteps; i++) + try { - int nOp = pDoc->Progs[i].nOpType1; - int nParamCount = pDoc->Progs[i].nParamCount; - CStringA OpName; - CStringA ShowTxt; - pDoc->OpToTxt(nOp, OpName); - pDoc->OpToShowTxt(nOp, ShowTxt); - int nPairTo = pDoc->Progs[i].PairTo; - int nPairOp = 0; - if (nPairTo) nPairOp = pDoc->Progs[nPairTo].nOpType1; - int nCellType; - switch (nOp) + for (int i = 0; i < pDoc->m_nProgSteps; i++) { + int nOp = pDoc->Progs[i].nOpType1; + int nParamCount = pDoc->Progs[i].nParamCount; + CStringA OpName; + CStringA ShowTxt; + pDoc->OpToTxt(nOp, OpName); + pDoc->OpToShowTxt(nOp, ShowTxt); + int nPairTo = pDoc->Progs[i].PairTo; + int nPairOp = 0; + if (nPairTo) nPairOp = pDoc->Progs[nPairTo].nOpType1; + int nCellType; + switch (nOp) + { - case OP_NOP: - break; - case OP_ST: - case OP_ST_: - if (i == 0) { + case OP_NOP: + break; + case OP_ST: + case OP_ST_: + if (i == 0) { - } - else { - //璁板綍褰撳墠浣嶇疆 - EndPt[nEndPts] = POINT{ cx,cy }; - nEndPts++; - if (nPairOp == OP_ANS) { - //缁х画鍓嶈繘 - //cx = 0, cy = nCurLine; - //cx = StPts[nSts - 1].x; - //nCurLine = cy + 1; //鍙﹁捣涓�琛� -///* - nCurLine=cy; - int hasData = 1; - while (hasData) { - hasData = 0; - for (int j = cx +1; j < m_CellPerLine; j++) { - if (Cells[nCurLine][j].nType != 0) { - nCurLine++; hasData = 1; break; + } + else { + //璁板綍褰撳墠浣嶇疆 + EndPt[nEndPts] = POINT{ cx,cy }; + nEndPts++; + if (nPairOp == OP_ANS) { + //缁х画鍓嶈繘 + //cx = 0, cy = nCurLine; + //cx = StPts[nSts - 1].x; + //nCurLine = cy + 1; //鍙﹁捣涓�琛� + ///* + nCurLine = cy; + int hasData = 1; + while (hasData) { + hasData = 0; + for (int j = cx + 1; j < m_CellPerLine; j++) { + if (Cells[nCurLine][j].nType != 0) { + nCurLine++; hasData = 1; break; + } } } + // nCurLine = maxy + 1; //鍙﹁捣涓�琛� + if (nCurLine > maxy) maxy = nCurLine; + for (int j = cy; j < nCurLine; j++) { + Cells[j][cx].bLeftLineDn = 1; + Cells[j + 1][cx].bLeftLineUp = 1; + } + cy = nCurLine; + //*/ } - // nCurLine = maxy + 1; //鍙﹁捣涓�琛� - if (nCurLine > maxy) maxy = nCurLine; - for (int j = cy; j < nCurLine; j++) { - Cells[j][cx].bLeftLineDn = 1; - Cells[j + 1][cx].bLeftLineUp = 1; - } - cy = nCurLine; -//*/ - } - else if (nPairOp == OP_ORS) { - cx = StPts[nSts - 1].x; - nCurLine = cy + 1; //鍙﹁捣涓�琛� - int hasData = 1; - while (hasData) { - hasData = 0; - for (int j = cx; j < m_CellPerLine; j++) { - if (Cells[nCurLine][j].nType != 0) { - nCurLine++; hasData = 1; break; + else if (nPairOp == OP_ORS) { + cx = StPts[nSts - 1].x; + nCurLine = cy + 1; //鍙﹁捣涓�琛� + int hasData = 1; + while (hasData) { + hasData = 0; + for (int j = cx; j < m_CellPerLine; j++) { + if (Cells[nCurLine][j].nType != 0) { + nCurLine++; hasData = 1; break; + } } } + // nCurLine = maxy + 1; //鍙﹁捣涓�琛� + if (nCurLine > maxy) maxy = nCurLine; + for (int j = cy; j < nCurLine; j++) { + Cells[j][cx].bLeftLineDn = 1; + Cells[j + 1][cx].bLeftLineUp = 1; + } + cy = nCurLine; } - // nCurLine = maxy + 1; //鍙﹁捣涓�琛� - if (nCurLine > maxy) maxy = nCurLine; - for (int j = cy; j < nCurLine; j++) { - Cells[j][cx].bLeftLineDn = 1; - Cells[j + 1][cx].bLeftLineUp = 1; + else if (nPairOp == 0) { + nCurLine = maxy + 1; //鍙﹁捣涓�琛� + maxy = nCurLine; + cx = 0; cy = nCurLine; } - cy = nCurLine; } - else if (nPairOp == 0) { - nCurLine = maxy + 1; //鍙﹁捣涓�琛� - maxy = nCurLine; - cx = 0; cy = nCurLine; - } - } - stpos[nSts] = i; - StPts[nSts] = POINT{ cx,cy }; - nSts++; - Cells[cy][cx].nType = pDoc->Progs[i].nOpType1 == OP_ST ? typeNO : typeNC; //typeNC - Cells[cy][cx].nProgStep = i; - Cells[cy][cx].sCoilName = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][cx].sParam = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][cx].nDataType = pDoc->Progs[i].Params[0].nParamType; - Cells[cy][cx].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; - cx++; //绉诲埌涓嬩竴鏍� - break; - case OP_ST_EQ: - case OP_ST_NE: - case OP_ST_LT: - case OP_ST_GT: - case OP_ST_LE: - case OP_ST_GE: - if (i == 0) { + stpos[nSts] = i; + StPts[nSts] = POINT{ cx,cy }; + nSts++; + Cells[cy][cx].nType = pDoc->Progs[i].nOpType1 == OP_ST ? typeNO : typeNC; //typeNC + Cells[cy][cx].nProgStep = i; + Cells[cy][cx].sCoilName = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][cx].sParam = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][cx].nDataType = pDoc->Progs[i].Params[0].nParamType; + Cells[cy][cx].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; + cx++; //绉诲埌涓嬩竴鏍� + break; + case OP_ST_EQ: + case OP_ST_NE: + case OP_ST_LT: + case OP_ST_GT: + case OP_ST_LE: + case OP_ST_GE: + if (i == 0) { - } - else { - //璁板綍褰撳墠浣嶇疆 - EndPt[nEndPts] = POINT{ cx,cy }; - nEndPts++; - if (nPairOp == OP_ANS) { - //缁х画鍓嶈繘 - //cx = 0, cy = nCurLine; } - else if (nPairOp == OP_ORS) { - cx = StPts[nSts - 1].x; - nCurLine = cy + 1; //鍙﹁捣涓�琛� - int hasData = 1; - while (hasData) { - hasData = 0; - for (int j = cx; j < m_CellPerLine; j++) { - if (Cells[nCurLine][j].nType != 0) { - nCurLine++; hasData = 1; break; + else { + //璁板綍褰撳墠浣嶇疆 + EndPt[nEndPts] = POINT{ cx,cy }; + nEndPts++; + if (nPairOp == OP_ANS) { + //缁х画鍓嶈繘 + //cx = 0, cy = nCurLine; + } + else if (nPairOp == OP_ORS) { + cx = StPts[nSts - 1].x; + nCurLine = cy + 1; //鍙﹁捣涓�琛� + int hasData = 1; + while (hasData) { + hasData = 0; + for (int j = cx; j < m_CellPerLine; j++) { + if (Cells[nCurLine][j].nType != 0) { + nCurLine++; hasData = 1; break; + } } } - } - // nCurLine = maxy + 1; //鍙﹁捣涓�琛� - if (nCurLine > maxy) maxy = nCurLine; - for (int j = cy; j < nCurLine; j++) { - Cells[j][cx].bLeftLineDn = 1; - Cells[j + 1][cx].bLeftLineUp = 1; - } - cy = nCurLine; - } - else if (nPairOp == 0) { - nCurLine = maxy + 1; //鍙﹁捣涓�琛� - maxy = nCurLine; - cx = 0; cy = nCurLine; - } - } - stpos[nSts] = i; - StPts[nSts] = POINT{ cx,cy }; - nSts++; - Cells[cy][cx].nType = typeCMP; - Cells[cy][cx].nProgStep = i; - Cells[cy][cx].sParam = OpName; - Cells[cy][cx].sCoilName = ShowTxt; - Cells[cy][cx + 1].nType = typeExt1; - Cells[cy][cx + 1].sParam = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][cx + 1].nDataType = pDoc->Progs[i].Params[0].nParamType; - Cells[cy][cx + 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; - Cells[cy][cx + 2].nType = typeExt1; - Cells[cy][cx + 2].sParam = pDoc->Progs[i].Params[1].sParamStr; - Cells[cy][cx + 2].nDataType = pDoc->Progs[i].Params[1].nParamType; - Cells[cy][cx + 2].nDataAddr = pDoc->Progs[i].Params[1].nParamAddr; - cx += 3; //绉诲埌涓�3鏍� - break; - - case OP_AN: - case OP_AN_: - - Cells[cy][cx].nType = nOp == OP_AN ? typeNO : typeNC; //typeNC - Cells[cy][cx].nProgStep = i; - Cells[cy][cx].sParam = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][cx].sCoilName = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][cx].nDataType = pDoc->Progs[i].Params[0].nParamType; - Cells[cy][cx].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; - cx++; - break; - case OP_AN_EQ: - case OP_AN_NE: - case OP_AN_LT: - case OP_AN_GT: - case OP_AN_LE: - case OP_AN_GE: - Cells[cy][cx].nType = typeCMP; - Cells[cy][cx].nProgStep = i; - Cells[cy][cx].sCoilName = ShowTxt; - Cells[cy][cx + 1].nType = typeExt1; - Cells[cy][cx + 1].sParam = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][cx + 1].nDataType = pDoc->Progs[i].Params[0].nParamType; - Cells[cy][cx + 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; - Cells[cy][cx + 2].nType = typeExt1; - Cells[cy][cx + 2].sParam = pDoc->Progs[i].Params[1].sParamStr; - Cells[cy][cx + 2].nDataType = pDoc->Progs[i].Params[1].nParamType; - Cells[cy][cx + 2].nDataAddr = pDoc->Progs[i].Params[1].nParamAddr; - cx += 3; - break; - - case OP_OR: - case OP_OR_: - EndPt[nEndPts] = POINT{ cx,cy }; - nEndPts++; - cx = StPts[nSts - 1].x; - nCurLine = cy + 1; //鍙﹁捣涓�琛� - { - int hasData = 1; - while (hasData) { - hasData = 0; - for (int j = cx; j < m_CellPerLine; j++) { - if (Cells[nCurLine][j].nType != 0) { - nCurLine++; hasData = 1; break; + // nCurLine = maxy + 1; //鍙﹁捣涓�琛� + if (nCurLine > maxy) maxy = nCurLine; + for (int j = cy; j < nCurLine; j++) { + Cells[j][cx].bLeftLineDn = 1; + Cells[j + 1][cx].bLeftLineUp = 1; } + cy = nCurLine; + } + else if (nPairOp == 0) { + nCurLine = maxy + 1; //鍙﹁捣涓�琛� + maxy = nCurLine; + cx = 0; cy = nCurLine; } } - } - if (nCurLine > maxy) maxy = nCurLine; - for (int j = cy; j < nCurLine; j++) { - Cells[j][cx].bLeftLineDn = 1; - Cells[j + 1][cx].bLeftLineUp = 1; - } - cy = nCurLine; - Cells[cy][cx].nProgStep = i; - Cells[cy][cx].nType = nOp == OP_OR ? typeNO : typeNC; //typeNC - Cells[cy][cx].sCoilName = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][cx].sParam = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][cx].nDataType = pDoc->Progs[i].Params[0].nParamType; - Cells[cy][cx].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; - cx++; - if (cx < EndPt[nEndPts - 1].x) - { //鏈琛ラ綈 - for (int j = cx; j < EndPt[nEndPts - 1].x; j++) - { - Cells[cy][j].nType = typeLine1; - } - cx = EndPt[nEndPts - 1].x; - } - else { - //鍓嶄竴琛岃ˉ榻� - for (int j = EndPt[nEndPts - 1].x; j < cx; j++) - { - Cells[EndPt[nEndPts - 1].y][j].nType = typeLine1; - } + stpos[nSts] = i; + StPts[nSts] = POINT{ cx,cy }; + nSts++; + Cells[cy][cx].nType = typeCMP; + Cells[cy][cx].nProgStep = i; + Cells[cy][cx].sParam = OpName; + Cells[cy][cx].sCoilName = ShowTxt; + Cells[cy][cx + 1].nType = typeExt1; + Cells[cy][cx + 1].sParam = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][cx + 1].nDataType = pDoc->Progs[i].Params[0].nParamType; + Cells[cy][cx + 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; + Cells[cy][cx + 2].nType = typeExt1; + Cells[cy][cx + 2].sParam = pDoc->Progs[i].Params[1].sParamStr; + Cells[cy][cx + 2].nDataType = pDoc->Progs[i].Params[1].nParamType; + Cells[cy][cx + 2].nDataAddr = pDoc->Progs[i].Params[1].nParamAddr; + cx += 3; //绉诲埌涓�3鏍� + break; - } - //杩炴帴涓婁笅绾� - for (int j = EndPt[nEndPts - 1].y; j < cy; j++) - { - Cells[j][cx].bLeftLineDn = 1; - Cells[j + 1][cx].bLeftLineUp = 1; - } - //鍏夋爣浣嶇疆, 鍓嶄竴缁撴潫鐐逛綅缃� - cy = EndPt[nEndPts - 1].y; - nEndPts--; + case OP_AN: + case OP_AN_: - break; - case OP_OR_EQ: - case OP_OR_NE: - case OP_OR_LT: - case OP_OR_GT: - case OP_OR_LE: - case OP_OR_GE: - EndPt[nEndPts] = POINT{ cx,cy }; - nEndPts++; - cx = StPts[nSts - 1].x; - nCurLine = cy + 1; //鍙﹁捣涓�琛� - { - int hasData = 1; - while (hasData) { - hasData = 0; - for (int j = cx; j < m_CellPerLine; j++) { - if (Cells[nCurLine][j].nType != 0) { - nCurLine++; hasData = 1; break; - } - } - } - } - if (nCurLine > maxy) maxy = nCurLine; - for (int j = cy; j < nCurLine; j++) { - Cells[j][cx].bLeftLineDn = 1; - Cells[j + 1][cx].bLeftLineUp = 1; - } - cy = nCurLine; - Cells[cy][cx].nType = typeCMP; - Cells[cy][cx].nProgStep = i; - Cells[cy][cx].sCoilName = ShowTxt; - Cells[cy][cx + 1].nType = typeExt1; - Cells[cy][cx + 1].sParam = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][cx + 1].nDataType = pDoc->Progs[i].Params[0].nParamType; - Cells[cy][cx + 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; - Cells[cy][cx + 2].nType = typeExt1; - Cells[cy][cx + 2].sParam = pDoc->Progs[i].Params[1].sParamStr; - Cells[cy][cx + 2].nDataType = pDoc->Progs[i].Params[1].nParamType; - Cells[cy][cx + 2].nDataAddr = pDoc->Progs[i].Params[1].nParamAddr; - cx += 3; - if (cx < EndPt[nEndPts - 1].x) - { //鏈琛ラ綈 - for (int j = cx; j < EndPt[nEndPts - 1].x; j++) - { - Cells[cy][j].nType = typeLine1; - } - cx = EndPt[nEndPts - 1].x; - } - else { - //鍓嶄竴琛岃ˉ榻� - for (int j = EndPt[nEndPts - 1].x; j < cx; j++) - { - Cells[EndPt[nEndPts - 1].y][j].nType = typeLine1; - } - - } - //杩炴帴涓婁笅绾� - for (int j = EndPt[nEndPts - 1].y; j < cy; j++) - { - Cells[j][cx].bLeftLineDn = 1; - Cells[j + 1][cx].bLeftLineUp = 1; - } - //鍏夋爣浣嶇疆, 鍓嶄竴缁撴潫鐐逛綅缃� - cy = EndPt[nEndPts - 1].y; - nEndPts--; - - break; - case OP_NOT: - Cells[cy][cx].nType = typeNOT; - Cells[cy][cx].sCoilName = _T("NOT"); - - Cells[cy][cx].nProgStep = i; - cx++; - break; - case OP_DF: - case OP_DF_: - Cells[cy][cx].nType = nOp == OP_DF ? typeDF : typeDF_; - Cells[cy][cx].sCoilName = nOp == OP_DF ? _T("DF") : _T("DF/"); - - Cells[cy][cx].nProgStep = i; - cx++; - break; - case OP_ANS: - nSts--; - nEndPts--; - - break; - case OP_ORS: - // 褰撳墠搴忓垪涓庡墠闈㈢殑搴忓垪鍚堝苟銆� - //褰撳墠搴忓垪鐨勫紑濮嬬粨鏉熶綅缃� - //EndPt[nEndPts] = POINT{ cx,cy }; - //nEndPts++; - //StPts[nSts - 1]; EndPt[nEndPts - 1]; - //鍓嶄竴搴忓垪鐨勫紑濮嬬粨鏉熶綅缃� - StPts[nSts - 1]; EndPt[nEndPts - 1]; - //鍒ゆ柇浜岃�呴暱搴� - if (cx < EndPt[nEndPts - 1].x) - { //鏈琛ラ綈 - for (int j = cx; j < EndPt[nEndPts - 1].x; j++) - { - Cells[cy][j].nType = typeLine1; - } - cx = EndPt[nEndPts - 1].x; - } - else { - //鍓嶄竴琛岃ˉ榻� - for (int j = EndPt[nEndPts - 1].x; j < cx; j++) - { - Cells[EndPt[nEndPts - 1].y][j].nType = typeLine1; - } - - } - //杩炴帴涓婁笅绾� - for (int j = EndPt[nEndPts - 1].y; j < cy; j++) - { - Cells[j][cx].bLeftLineDn = 1; - Cells[j + 1][cx].bLeftLineUp = 1; - } - //鍏夋爣浣嶇疆, 鍓嶄竴缁撴潫鐐逛綅缃� - cy = EndPt[nEndPts - 1].y; - nSts--; - nEndPts--; - - break; - case OP_PSHS: - EndPt[nEndPts] = POINT{ cx,cy }; - nEndPts++; - break; - case OP_RDS: - cx = EndPt[nEndPts - 1].x; - for (int j = cx; j < m_CellPerLine; j++) { - if (Cells[cy][j].nType != 0) - { - cy++; j = cx - 1; //break; - } - } - for (int j = EndPt[nEndPts - 1].y; j < cy; j++) - { - Cells[j][cx].bLeftLineDn = 1; - Cells[j + 1][cx].bLeftLineUp = 1; - } - break; - case OP_POPS: - cx = EndPt[nEndPts - 1].x; - for (int j = cx; j < m_CellPerLine; j++) { - if (Cells[cy][j].nType != 0) - { - cy++; j = cx - 1; break; - } - } - for (int j = EndPt[nEndPts - 1].y; j < cy; j++) - { - Cells[j][cx].bLeftLineDn = 1; - Cells[j + 1][cx].bLeftLineUp = 1; - } - nEndPts--; - - break; - case OP_OUT: - case OP_SET: - case OP_RESET: - nCellType = nOp == OP_OUT ? typeOUT : nOp == OP_SET ? typeSET : typeRESET; - nCurLine = cy; - if (cx <= m_CellPerLine) { - - int hasData = 1; - while (hasData) { - hasData = 0; - for (int j = cx; j < m_CellPerLine; j++) { - if (Cells[nCurLine][j].nType != 0) { - nCurLine++; hasData = 1; break; - } - } - } - //if (nCurLine > maxy) maxy = nCurLine; - for (int j = cy; j < nCurLine; j++) { - Cells[j][cx].bLeftLineDn = 1; - Cells[j + 1][cx].bLeftLineUp = 1; - } - cy = nCurLine; - for (int j = cx; j < m_CellPerLine; j++) - { - Cells[cy][j].nType = typeLine1; - } - Cells[cy][m_CellPerLine - 1].nType = nCellType; - Cells[cy][m_CellPerLine - 1].nProgStep = i; - Cells[cy][m_CellPerLine - 1].sParam = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][m_CellPerLine - 1].sCoilName = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][m_CellPerLine - 1].nDataType = pDoc->Progs[i].Params[0].nParamType; - Cells[cy][m_CellPerLine - 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; - - } - else { - Cells[cy][cx].nType = nCellType; + Cells[cy][cx].nType = nOp == OP_AN ? typeNO : typeNC; //typeNC Cells[cy][cx].nProgStep = i; Cells[cy][cx].sParam = pDoc->Progs[i].Params[0].sParamStr; Cells[cy][cx].sCoilName = pDoc->Progs[i].Params[0].sParamStr; Cells[cy][cx].nDataType = pDoc->Progs[i].Params[0].nParamType; Cells[cy][cx].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; + cx++; + break; + case OP_AN_EQ: + case OP_AN_NE: + case OP_AN_LT: + case OP_AN_GT: + case OP_AN_LE: + case OP_AN_GE: + Cells[cy][cx].nType = typeCMP; + Cells[cy][cx].nProgStep = i; + Cells[cy][cx].sCoilName = ShowTxt; + Cells[cy][cx + 1].nType = typeExt1; + Cells[cy][cx + 1].sParam = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][cx + 1].nDataType = pDoc->Progs[i].Params[0].nParamType; + Cells[cy][cx + 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; + Cells[cy][cx + 2].nType = typeExt1; + Cells[cy][cx + 2].sParam = pDoc->Progs[i].Params[1].sParamStr; + Cells[cy][cx + 2].nDataType = pDoc->Progs[i].Params[1].nParamType; + Cells[cy][cx + 2].nDataAddr = pDoc->Progs[i].Params[1].nParamAddr; + cx += 3; + break; + + case OP_OR: + case OP_OR_: + EndPt[nEndPts] = POINT{ cx,cy }; + nEndPts++; + cx = StPts[nSts - 1].x; + nCurLine = cy + 1; //鍙﹁捣涓�琛� + { + int hasData = 1; + while (hasData) { + hasData = 0; + for (int j = cx; j < m_CellPerLine; j++) { + if (Cells[nCurLine][j].nType != 0) { + nCurLine++; hasData = 1; break; + } + } + } + } + if (nCurLine > maxy) maxy = nCurLine; + for (int j = cy; j < nCurLine; j++) { + Cells[j][cx].bLeftLineDn = 1; + Cells[j + 1][cx].bLeftLineUp = 1; + } + cy = nCurLine; + Cells[cy][cx].nProgStep = i; + Cells[cy][cx].nType = nOp == OP_OR ? typeNO : typeNC; //typeNC + Cells[cy][cx].sCoilName = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][cx].sParam = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][cx].nDataType = pDoc->Progs[i].Params[0].nParamType; + Cells[cy][cx].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; + cx++; + if (cx < EndPt[nEndPts - 1].x) + { //鏈琛ラ綈 + for (int j = cx; j < EndPt[nEndPts - 1].x; j++) + { + Cells[cy][j].nType = typeLine1; + } + cx = EndPt[nEndPts - 1].x; + } + else { + //鍓嶄竴琛岃ˉ榻� + for (int j = EndPt[nEndPts - 1].x; j < cx; j++) + { + Cells[EndPt[nEndPts - 1].y][j].nType = typeLine1; + } + + } + //杩炴帴涓婁笅绾� + for (int j = EndPt[nEndPts - 1].y; j < cy; j++) + { + Cells[j][cx].bLeftLineDn = 1; + Cells[j + 1][cx].bLeftLineUp = 1; + } + //鍏夋爣浣嶇疆, 鍓嶄竴缁撴潫鐐逛綅缃� + cy = EndPt[nEndPts - 1].y; + nEndPts--; + + break; + case OP_OR_EQ: + case OP_OR_NE: + case OP_OR_LT: + case OP_OR_GT: + case OP_OR_LE: + case OP_OR_GE: + EndPt[nEndPts] = POINT{ cx,cy }; + nEndPts++; + cx = StPts[nSts - 1].x; + nCurLine = cy + 1; //鍙﹁捣涓�琛� + { + int hasData = 1; + while (hasData) { + hasData = 0; + for (int j = cx; j < m_CellPerLine; j++) { + if (Cells[nCurLine][j].nType != 0) { + nCurLine++; hasData = 1; break; + } + } + } + } + if (nCurLine > maxy) maxy = nCurLine; + for (int j = cy; j < nCurLine; j++) { + Cells[j][cx].bLeftLineDn = 1; + Cells[j + 1][cx].bLeftLineUp = 1; + } + cy = nCurLine; + Cells[cy][cx].nType = typeCMP; + Cells[cy][cx].nProgStep = i; + Cells[cy][cx].sCoilName = ShowTxt; + Cells[cy][cx + 1].nType = typeExt1; + Cells[cy][cx + 1].sParam = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][cx + 1].nDataType = pDoc->Progs[i].Params[0].nParamType; + Cells[cy][cx + 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; + Cells[cy][cx + 2].nType = typeExt1; + Cells[cy][cx + 2].sParam = pDoc->Progs[i].Params[1].sParamStr; + Cells[cy][cx + 2].nDataType = pDoc->Progs[i].Params[1].nParamType; + Cells[cy][cx + 2].nDataAddr = pDoc->Progs[i].Params[1].nParamAddr; + cx += 3; + if (cx < EndPt[nEndPts - 1].x) + { //鏈琛ラ綈 + for (int j = cx; j < EndPt[nEndPts - 1].x; j++) + { + Cells[cy][j].nType = typeLine1; + } + cx = EndPt[nEndPts - 1].x; + } + else { + //鍓嶄竴琛岃ˉ榻� + for (int j = EndPt[nEndPts - 1].x; j < cx; j++) + { + Cells[EndPt[nEndPts - 1].y][j].nType = typeLine1; + } + + } + //杩炴帴涓婁笅绾� + for (int j = EndPt[nEndPts - 1].y; j < cy; j++) + { + Cells[j][cx].bLeftLineDn = 1; + Cells[j + 1][cx].bLeftLineUp = 1; + } + //鍏夋爣浣嶇疆, 鍓嶄竴缁撴潫鐐逛綅缃� + cy = EndPt[nEndPts - 1].y; + nEndPts--; + + break; + case OP_NOT: + Cells[cy][cx].nType = typeNOT; + Cells[cy][cx].sCoilName = _T("NOT"); + + Cells[cy][cx].nProgStep = i; + cx++; + break; + case OP_DF: + case OP_DF_: + Cells[cy][cx].nType = nOp == OP_DF ? typeDF : typeDF_; + Cells[cy][cx].sCoilName = nOp == OP_DF ? _T("DF") : _T("DF/"); + + Cells[cy][cx].nProgStep = i; + cx++; + break; + case OP_ANS: + nSts--; + nEndPts--; + + break; + case OP_ORS: + // 褰撳墠搴忓垪涓庡墠闈㈢殑搴忓垪鍚堝苟銆� + //褰撳墠搴忓垪鐨勫紑濮嬬粨鏉熶綅缃� + //EndPt[nEndPts] = POINT{ cx,cy }; + //nEndPts++; + //StPts[nSts - 1]; EndPt[nEndPts - 1]; + //鍓嶄竴搴忓垪鐨勫紑濮嬬粨鏉熶綅缃� + StPts[nSts - 1]; EndPt[nEndPts - 1]; + //鍒ゆ柇浜岃�呴暱搴� + if (cx < EndPt[nEndPts - 1].x) + { //鏈琛ラ綈 + for (int j = cx; j < EndPt[nEndPts - 1].x; j++) + { + Cells[cy][j].nType = typeLine1; + } + cx = EndPt[nEndPts - 1].x; + } + else { + //鍓嶄竴琛岃ˉ榻� + for (int j = EndPt[nEndPts - 1].x; j < cx; j++) + { + Cells[EndPt[nEndPts - 1].y][j].nType = typeLine1; + } + + } + //杩炴帴涓婁笅绾� + for (int j = EndPt[nEndPts - 1].y; j < cy; j++) + { + Cells[j][cx].bLeftLineDn = 1; + Cells[j + 1][cx].bLeftLineUp = 1; + } + //鍏夋爣浣嶇疆, 鍓嶄竴缁撴潫鐐逛綅缃� + cy = EndPt[nEndPts - 1].y; + nSts--; + nEndPts--; + + break; + case OP_PSHS: + EndPt[nEndPts] = POINT{ cx,cy }; + nEndPts++; + break; + case OP_RDS: + cx = EndPt[nEndPts - 1].x; + for (int j = cx; j < m_CellPerLine; j++) { + if (Cells[cy][j].nType != 0) + { + cy++; j = cx - 1; //break; + } + } + for (int j = EndPt[nEndPts - 1].y; j < cy; j++) + { + Cells[j][cx].bLeftLineDn = 1; + Cells[j + 1][cx].bLeftLineUp = 1; + } + break; + case OP_POPS: + cx = EndPt[nEndPts - 1].x; + for (int j = cx; j < m_CellPerLine; j++) { + if (Cells[cy][j].nType != 0) + { + cy++; j = cx - 1; break; + } + } + for (int j = EndPt[nEndPts - 1].y; j < cy; j++) + { + Cells[j][cx].bLeftLineDn = 1; + Cells[j + 1][cx].bLeftLineUp = 1; + } + nEndPts--; + + break; + case OP_OUT: + case OP_SET: + case OP_RESET: + nCellType = nOp == OP_OUT ? typeOUT : nOp == OP_SET ? typeSET : typeRESET; + nCurLine = cy; + if (cx <= m_CellPerLine) { + + int hasData = 1; + while (hasData) { + hasData = 0; + for (int j = cx; j < m_CellPerLine; j++) { + if (Cells[nCurLine][j].nType != 0) { + nCurLine++; hasData = 1; break; + } + } + } + //if (nCurLine > maxy) maxy = nCurLine; + for (int j = cy; j < nCurLine; j++) { + Cells[j][cx].bLeftLineDn = 1; + Cells[j + 1][cx].bLeftLineUp = 1; + } + cy = nCurLine; + for (int j = cx; j < m_CellPerLine; j++) + { + Cells[cy][j].nType = typeLine1; + } + Cells[cy][m_CellPerLine - 1].nType = nCellType; + Cells[cy][m_CellPerLine - 1].nProgStep = i; + Cells[cy][m_CellPerLine - 1].sParam = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][m_CellPerLine - 1].sCoilName = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][m_CellPerLine - 1].nDataType = pDoc->Progs[i].Params[0].nParamType; + Cells[cy][m_CellPerLine - 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; + + } + else { + Cells[cy][cx].nType = nCellType; + Cells[cy][cx].nProgStep = i; + Cells[cy][cx].sParam = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][cx].sCoilName = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][cx].nDataType = pDoc->Progs[i].Params[0].nParamType; + Cells[cy][cx].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; + } + if (cy > maxy) { maxy = cy; } + //cy++; + break; + + case OP_TML: + case OP_TMR: + case OP_TMX: + case OP_TMY: + Cells[cy][cx].nType = typeTM; + Cells[cy][cx].nProgStep = i; + Cells[cy][cx].sCoilName = ShowTxt; + Cells[cy][cx + 1].nType = typeExt1; + Cells[cy][cx + 1].sParam = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][cx + 1].nDataType = KLDataTypeEV; + Cells[cy][cx + 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; + Cells[cy][cx + 2].nType = typeExt1; + Cells[cy][cx + 2].sParam = pDoc->Progs[i].Params[1].sParamStr; + Cells[cy][cx + 2].nDataType = pDoc->Progs[i].Params[1].nParamType; + Cells[cy][cx + 2].nDataAddr = pDoc->Progs[i].Params[1].nParamAddr; + cx += 3; + break; + case OP_INC: + case OP_DEC: + Cells[cy][cx].nType = typeFN1; + Cells[cy][cx].nProgStep = i; + Cells[cy][cx].sCoilName = ShowTxt; + Cells[cy][cx + 1].nType = typeExt1; + Cells[cy][cx + 1].sParam = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][cx + 1].nDataType = pDoc->Progs[i].Params[0].nParamType; + Cells[cy][cx + 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; + cx += 2; + break; + + case OP_MV: + case OP_ADD2: + case OP_SUB2: + Cells[cy][cx].nType = typeFN2; + Cells[cy][cx].nProgStep = i; + Cells[cy][cx].sCoilName = ShowTxt; + Cells[cy][cx + 1].nType = typeExt1; + Cells[cy][cx + 1].sParam = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][cx + 1].nDataType = pDoc->Progs[i].Params[0].nParamType; + Cells[cy][cx + 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; + Cells[cy][cx + 2].nType = typeExt1; + Cells[cy][cx + 2].sParam = pDoc->Progs[i].Params[1].sParamStr; + Cells[cy][cx + 2].nDataType = pDoc->Progs[i].Params[1].nParamType; + Cells[cy][cx + 2].nDataAddr = pDoc->Progs[i].Params[1].nParamAddr; + cx += 3; + break; + + case OP_ADD3: + case OP_SUB3: + case OP_MUL: + case OP_DIV: + Cells[cy][cx].nType = typeFN3; + Cells[cy][cx].nProgStep = i; + Cells[cy][cx].sCoilName = ShowTxt; + Cells[cy][cx + 1].nType = typeExt1; + Cells[cy][cx + 1].sParam = pDoc->Progs[i].Params[0].sParamStr; + Cells[cy][cx + 1].nDataType = pDoc->Progs[i].Params[0].nParamType; + Cells[cy][cx + 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; + Cells[cy][cx + 2].nType = typeExt1; + Cells[cy][cx + 2].sParam = pDoc->Progs[i].Params[1].sParamStr; + Cells[cy][cx + 2].nDataType = pDoc->Progs[i].Params[1].nParamType; + Cells[cy][cx + 2].nDataAddr = pDoc->Progs[i].Params[1].nParamAddr; + Cells[cy][cx + 3].nType = typeExt1; + Cells[cy][cx + 3].sParam = pDoc->Progs[i].Params[2].sParamStr; + Cells[cy][cx + 3].nDataType = pDoc->Progs[i].Params[2].nParamType; + Cells[cy][cx + 3].nDataAddr = pDoc->Progs[i].Params[2].nParamAddr; + cx += 4; + break; + + default: + break; } - if (cy > maxy) { maxy = cy; } - //cy++; - break; - - case OP_TML: - case OP_TMR: - case OP_TMX: - case OP_TMY: - Cells[cy][cx].nType = typeTM; - Cells[cy][cx].nProgStep = i; - Cells[cy][cx].sCoilName = ShowTxt; - Cells[cy][cx + 1].nType = typeExt1; - Cells[cy][cx + 1].sParam = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][cx + 1].nDataType = KLDataTypeEV; - Cells[cy][cx + 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; - Cells[cy][cx + 2].nType = typeExt1; - Cells[cy][cx + 2].sParam = pDoc->Progs[i].Params[1].sParamStr; - Cells[cy][cx + 2].nDataType = pDoc->Progs[i].Params[1].nParamType; - Cells[cy][cx + 2].nDataAddr = pDoc->Progs[i].Params[1].nParamAddr; - cx += 3; - break; - case OP_INC: - case OP_DEC: - Cells[cy][cx].nType = typeFN1; - Cells[cy][cx].nProgStep = i; - Cells[cy][cx].sCoilName = ShowTxt; - Cells[cy][cx + 1].nType = typeExt1; - Cells[cy][cx + 1].sParam = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][cx + 1].nDataType = pDoc->Progs[i].Params[0].nParamType; - Cells[cy][cx + 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; - cx += 2; - break; - - case OP_MV: - case OP_ADD2: - case OP_SUB2: - Cells[cy][cx].nType = typeFN2; - Cells[cy][cx].nProgStep = i; - Cells[cy][cx].sCoilName = ShowTxt; - Cells[cy][cx + 1].nType = typeExt1; - Cells[cy][cx + 1].sParam = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][cx + 1].nDataType = pDoc->Progs[i].Params[0].nParamType; - Cells[cy][cx + 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; - Cells[cy][cx + 2].nType = typeExt1; - Cells[cy][cx + 2].sParam = pDoc->Progs[i].Params[1].sParamStr; - Cells[cy][cx + 2].nDataType = pDoc->Progs[i].Params[1].nParamType; - Cells[cy][cx + 2].nDataAddr = pDoc->Progs[i].Params[1].nParamAddr; - cx += 3; - break; - - case OP_ADD3: - case OP_SUB3: - case OP_MUL: - case OP_DIV: - Cells[cy][cx].nType = typeFN3; - Cells[cy][cx].nProgStep = i; - Cells[cy][cx].sCoilName = ShowTxt; - Cells[cy][cx + 1].nType = typeExt1; - Cells[cy][cx + 1].sParam = pDoc->Progs[i].Params[0].sParamStr; - Cells[cy][cx + 1].nDataType = pDoc->Progs[i].Params[0].nParamType; - Cells[cy][cx + 1].nDataAddr = pDoc->Progs[i].Params[0].nParamAddr; - Cells[cy][cx + 2].nType = typeExt1; - Cells[cy][cx + 2].sParam = pDoc->Progs[i].Params[1].sParamStr; - Cells[cy][cx + 2].nDataType = pDoc->Progs[i].Params[1].nParamType; - Cells[cy][cx + 2].nDataAddr = pDoc->Progs[i].Params[1].nParamAddr; - Cells[cy][cx + 3].nType = typeExt1; - Cells[cy][cx + 3].sParam = pDoc->Progs[i].Params[2].sParamStr; - Cells[cy][cx + 3].nDataType = pDoc->Progs[i].Params[2].nParamType; - Cells[cy][cx + 3].nDataAddr = pDoc->Progs[i].Params[2].nParamAddr; - cx += 4; - break; - - default: - break; } } + catch (const std::exception&) + { + DbgLog(_T("鏃犳硶缁樺埗鍥惧舰锛堢▼搴忎笉鍚堢悊锛�")); + } + m_nTotalRow = maxy + 1; /* for (int i = 0; i < 25; i++) @@ -2354,7 +2440,10 @@ return 0; } - +/// <summary> +/// 姊舰鍥捐浆Prog +/// </summary> +/// <returns></returns> int CMTerm1View::TransLDSToProg() { // TODO: 鍦ㄦ澶勬坊鍔犲疄鐜颁唬鐮�. @@ -2444,11 +2533,15 @@ nCurPosY = i; stProgSection thisprogsec; if (Cells[i][0].nType) - ScanLDSCells(nStartLine, nEndLine, nCurPosY, nCurPosX, 0, thisprogsec, sProgSec,nSteps); + { + //寰幆閬嶅巻鍗曞厓鏍� + ScanLDSCells(nStartLine, nEndLine, nCurPosY, nCurPosX, 0, thisprogsec, sProgSec, nSteps); + } sProg += sProgSec; nAllSteps += nSteps; Progsec += thisprogsec; } + DbgLog(_T("\r\n")+ sProg); int n = int(Progsec.Progs.size()); s1.Format(_T("progSec steps %d "), n); @@ -2488,6 +2581,19 @@ return 0; } + +/// <summary> +/// 锛氱粯鍒舵瘡涓崟鍏冩牸鐨勫唴瀹� +/// </summary> +/// <param name="nStartLine"></param> +/// <param name="nEndLine"></param> +/// <param name="nPosY"></param> +/// <param name="nPosX"></param> +/// <param name="nLevel"></param> +/// <param name="progsec"></param> +/// <param name="sProgSec"></param> +/// <param name="nSteps"></param> +/// <returns></returns> int CMTerm1View::ScanLDSCells(int nStartLine, int nEndLine, int nPosY, int nPosX, int nLevel, stProgSection & progsec, CString & sProgSec, int &nSteps) { // TODO: 鍦ㄦ澶勬坊鍔犲疄鐜颁唬鐮�. @@ -2506,7 +2612,8 @@ CMTerm1Doc::stProg theprog; CStringA sCellNameA; sCellNameA = sCellName; - if (nType == typeNO) { + if (nType == typeNO) + { if (j==0) { s1.Format(_T("%d %d ST %s"), nCurPosY, nCurPosX,sCellName); sProgSec.AppendFormat(_T("ST %s\r\n"),sCellName); @@ -2764,7 +2871,10 @@ CString ProgSec; int theSteps = 0; stProgSection thisprogsec; + + // int r = ScanLDSCells(nStartLine, nEndLine, nLineTop, j + nNextX, nLevel,thisprogsec, ProgSec,theSteps); + sProgSec += ProgSec; nSteps += theSteps; progsec += thisprogsec; -- Gitblit v1.9.1