Prechádzať zdrojové kódy

添加多字节版本IsDigitStringA;同时,通过CheckBox 锁定来更新或插入新的订单信息。

JeffWang 3 rokov pred
rodič
commit
2844fe9e55

+ 30 - 0
Source/OGCAssistTool/OGCAssistTool/Global.cpp

@@ -1239,4 +1239,34 @@ end:
 		return npt ? 2 : 1;
 	}
 
+	int IsDigitStringA(LPCSTR lpString)
+	{
+		if ( !lpString || lpString[0] == '\0' )
+			return -1;
+
+		int npt = 0;
+		int nLen = strlen(lpString);
+		for (int i = 0; i < nLen; i++)
+		{
+			if (!isdigit(lpString[i]))
+			{
+				if ( lpString[i] == '.' && i != 0)
+				{
+					if ( npt > 1)
+					{
+						return -1;
+					}
+
+					npt++;
+				}
+				else
+				{
+					return -1;
+				}
+			}
+		}
+
+		return npt ? 2 : 1;
+	}
+
 };

+ 1 - 0
Source/OGCAssistTool/OGCAssistTool/Global.h

@@ -203,6 +203,7 @@ namespace GLOBAL {
 	BOOL EnumProcessAllWnd(LPPROC_WND_INFO lpProcWndInfo);
 	BOOL StartProcess(LPCTSTR lpPath, BOOL bShowWnd = FALSE, BOOL bSuspend = FALSE);
 	int IsDigitString(IN CONST CString& str);
+	int IsDigitStringA(LPCSTR lpString);
 };
 
 #endif

+ 64 - 6
Source/OGCAssistTool/OGCAssistTool/PageDebug.cpp

@@ -92,6 +92,7 @@ BOOL CPageDebug::OnInitDialog()
 		SetDlgItemText(EDIT_BATCH_NUMBER, GLOBAL::g_config.szBatchNumber);
 		((CComboBox*)GetDlgItem(COMBO_ETYPE))->SetCurSel(GLOBAL::g_config.nDeltaEType);
 	}
+	GetDlgItem(EDIT_SN)->EnableWindow(FALSE);
 
 	m_btnConnect.SetFaceColor(COLOR_RED);
 	GLOBAL::g_IOCP.SetCallBack(NULL, NULL, NULL, ReceiveProc);
@@ -399,6 +400,9 @@ DWORD CPageDebug::ThreadGoProc(LPVOID lpParam)
 									if ( vtRGB.size() )
 									{
 										BOOL bRet = GLOBAL::IsDebugPass(vtRGB, GLOBAL::g_config.nDeltaEType, GLOBAL::g_config.dDeltaEValue, dAVGValue);
+										TCHAR szDeltaValue[20] = {0};
+										_stprintf_s(szDeltaValue, _T("%0.3f"), dAVGValue);
+										m_pDlg->SetDlgItemText(EDIT_ARG_EVALUE, szDeltaValue);
 										if ( bRet )
 										{
 
@@ -504,7 +508,10 @@ void CPageDebug::OnBnClickedTest()
 
 		if ( strSN.IsEmpty() )
 		{
-			MessageBox(_T("错误:SN不能空,请输入SN!"), _T("错误!"), MB_ICONERROR);
+			if ( !((CButton*)GetDlgItem(CHECK_LOCK))->GetCheck() )
+				MessageBox(_T("错误:请锁定DeltaE选项启用SN编辑框!"), _T("错误!"), MB_ICONERROR);
+			else
+				MessageBox(_T("错误:SN不能空,请输入SN!"), _T("错误!"), MB_ICONERROR);
 			return;
 		}
 
@@ -682,13 +689,59 @@ void CPageDebug::OnCancel()
 void CPageDebug::OnBnClickedLock()
 {
 	// TODO: 在此添加控件通知处理程序代码
-	BOOL bCheckLock = !((CButton*)GetDlgItem(CHECK_LOCK))->GetCheck();
-	GetDlgItem(EDIT_BATCH_NUMBER)->EnableWindow(bCheckLock);
+	BOOL bCheckLock = ((CButton*)GetDlgItem(CHECK_LOCK))->GetCheck();
+	GetDlgItem(EDIT_BATCH_NUMBER)->EnableWindow(!bCheckLock);
 	if ( GLOBAL::g_config.nOffline )
 	{
-		GetDlgItem(COMBO_ETYPE)->EnableWindow(bCheckLock);
-		GetDlgItem(EDIT_EVALUE)->EnableWindow(bCheckLock);
-		GetDlgItem(SPIN_EVALUE)->EnableWindow(bCheckLock);
+		GetDlgItem(COMBO_ETYPE)->EnableWindow(!bCheckLock);
+		GetDlgItem(EDIT_EVALUE)->EnableWindow(!bCheckLock);
+		GetDlgItem(SPIN_EVALUE)->EnableWindow(!bCheckLock);
+	}
+	else
+	{
+		// 在线模式,更新DeltaEType;
+		GLOBAL::g_config.nDeltaEType = m_cbDeltaEType.GetCurSel();
+	}
+	GetDlgItem(EDIT_SN)->EnableWindow(bCheckLock);
+
+	// 数据库操作;
+	if ( bCheckLock )
+	{
+		CHAR szOrderNum[MAX_PATH] = {0};
+		CHAR szDeltaEValue[MAX_PATH] = {0};
+		GetDlgItemTextA(m_hWnd, EDIT_BATCH_NUMBER, szOrderNum, MAX_PATH);
+		GetDlgItemTextA(m_hWnd, EDIT_EVALUE, szDeltaEValue, MAX_PATH);
+
+		if ( GLOBAL::g_config.nDeltaEType != -1 && strlen(szOrderNum) > 0 && strlen(szDeltaEValue))
+		{
+			if ( GLOBAL::IsDigitStringA(szDeltaEValue) != -1 )
+			{
+				CHAR szType[3] = {0};
+				_itoa_s(GLOBAL::g_config.nDeltaEType, szType, 10);		
+
+				// 查询订单是否存在;
+				TB_ORDER tbOrder;
+				if ( GLOBAL::g_db.QueryOrder(szOrderNum, tbOrder) < 1)
+				{
+					// 新增订单;
+					tbOrder.nMode = GLOBAL::g_config.nOffline;
+					tbOrder.strOrder = szOrderNum;
+					tbOrder.strDeltaEType = szType;
+					tbOrder.strDeltaEValue = szDeltaEValue;
+
+					GLOBAL::g_db.InsertOrder(tbOrder);
+				}
+				else
+				{
+					// 更新订单;
+					tbOrder.nMode = GLOBAL::g_config.nOffline;
+					tbOrder.strDeltaEType = szType;
+					tbOrder.strDeltaEValue = szDeltaEValue;
+
+					GLOBAL::g_db.UpdateOrder(tbOrder);
+				}
+			}			
+		}		
 	}
 }
 
@@ -702,5 +755,10 @@ void CPageDebug::OnCbnSelchangeEtype()
 	// TODO: 在此添加控件通知处理程序代码
 	INT nCurSel = m_cbDeltaEType.GetCurSel();
 	if ( nCurSel != CB_ERR )
+	{
+		TCHAR szValue[3]={0};
+		_ltot_s(nCurSel, szValue, 10);
 		GLOBAL::g_config.nDeltaEType = nCurSel;
+		WritePrivateProfileString(_T("BATCH"), _T("EType"), szValue, GLOBAL::g_szConfigFile);		
+	}
 }