// DialListMeasuData.cpp : implementation file // #include "stdafx.h" #include "GeoMative.h" #include "DialListRealTimeMeasuData.h" #include "FileOperTools.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDialListRealTimeMeasureData dialog extern int g_UIOffset; extern int g_iUILanguage; extern CString g_strSaveTestingTaskID; extern EN_TASK_TESTING_METHOD g_eTestingMethod; CDialListRealTimeMeasureData::CDialListRealTimeMeasureData(CWnd* pParent /*=NULL*/) : CDialog(CDialListRealTimeMeasureData::IDD, pParent) { //{{AFX_DATA_INIT(CDialListRealTimeMeasureData) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // m_iMeasuType = 0; m_iSptType = -1; m_strMeasuStatus = _T(""); m_pMeasuStatus = NULL; } void CDialListRealTimeMeasureData::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDialListRealTimeMeasureData) DDX_Control(pDX, IDC_LIST_MEASURE, m_listData); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDialListRealTimeMeasureData, CDialog) //{{AFX_MSG_MAP(CDialListRealTimeMeasureData) ON_WM_SHOWWINDOW() //ON_BN_CLICKED(IDC_BTN_LIST_PRE, OnBtnListPre) //ON_BN_CLICKED(IDC_BTN_LIST_NEXT, OnBtnListNext) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDialListRealTimeMeasureData message handlers BOOL CDialListRealTimeMeasureData::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here CString strColTitle; int iColIndex = 0; m_listData.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES); m_listData.InsertColumn(iColIndex++, _T("ID"),LVCFMT_LEFT,50); // strColTitle.Empty(); // strColTitle.LoadString(IDS_DB_SCRIPT_C1); m_listData.InsertColumn(iColIndex++, _T("A"), LVCFMT_CENTER, 50); // strColTitle.Empty(); // strColTitle.LoadString(IDS_DB_SCRIPT_C2); m_listData.InsertColumn(iColIndex++, _T("B"), LVCFMT_CENTER, 50); // strColTitle.Empty(); // strColTitle.LoadString(IDS_DB_SCRIPT_P1); m_listData.InsertColumn(iColIndex++, _T("M"), LVCFMT_CENTER, 50); // strColTitle.Empty(); // strColTitle.LoadString(IDS_DB_SCRIPT_P2); m_listData.InsertColumn(iColIndex++, _T("N"), LVCFMT_CENTER, 50); // strColTitle.Empty(); // strColTitle.LoadString(IDS_DB_SCRIPT_N); m_listData.InsertColumn(iColIndex++, _T("Stack"), LVCFMT_CENTER, 70); // strColTitle.Empty(); // strColTitle.LoadString(IDS_DB_SCRIPT_K); m_listData.InsertColumn(iColIndex++, _T("K"), LVCFMT_CENTER, 80); // strColTitle.Empty(); // strColTitle.LoadString(IDS_MEASU_TD_V); m_listData.InsertColumn(iColIndex++, _T("V(mV)"), LVCFMT_CENTER, 80); // strColTitle.Empty(); // strColTitle.LoadString(IDS_MEASU_TD_I); m_listData.InsertColumn(iColIndex++, _T("I(mA)"), LVCFMT_CENTER, 80); // strColTitle.Empty(); // strColTitle.LoadString(IDS_MEASU_TD_R0); m_listData.InsertColumn(iColIndex++, _T("R0(Ohm*m)"), LVCFMT_CENTER, 110); // strColTitle.Empty(); // strColTitle.LoadString(IDS_MEASU_TD_SP); m_listData.InsertColumn(iColIndex++, _T("SP(mV)"), LVCFMT_CENTER, 80); /*std::vector vtData; if (m_taskOper.QueryTdDataFromTsn(m_iTaskID, m_iSptType, 1, MAX_LIST_SHOW_NUM, vtData)) { if (!vtData.empty()) OnShowTdData(vtData); }*/ return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CDialListRealTimeMeasureData::ShowMeasuStatus(CString strStatus) { m_strMeasuStatus = strStatus; GetDlgItem(IDC_STATIC_MEASU_SHOW_STATUS)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC_MEASU_SHOW_STATUS)->SetWindowText(m_strMeasuStatus); } /*void CDialListRealTimeMeasureData::EnablePreviewBtn(bool bIsEnable) { GetDlgItem(IDC_BTN_LIST_PRE)->EnableWindow(bIsEnable); GetDlgItem(IDC_BTN_LIST_NEXT)->EnableWindow(bIsEnable); }*/ void CDialListRealTimeMeasureData::OnShowWindow(BOOL bShow, UINT nStatus) { CDialog::OnShowWindow(bShow, nStatus); if (TRUE == bShow) { CRect rect; //CRect orgrect; GetClientRect(&rect); //orgrect = rect; //rect.left += 5; //rect.top += 5; //rect.right -= 5; //rect.bottom -= 5; m_listData.MoveWindow(&rect); /*GetDlgItem(IDC_STATIC_MEASU_SHOW_STATUS)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC_MEASU_SHOW_STATUS)->SetWindowText(m_strMeasuStatus); CRect ctrRect; GetDlgItem(IDC_BTN_LIST_PRE)->GetClientRect(&ctrRect); GetDlgItem(IDC_BTN_LIST_PRE)->MoveWindow(orgrect.Width()/2-2-ctrRect.Width(), orgrect.bottom-ctrRect.Height(), ctrRect.Width(),ctrRect.Height()); GetDlgItem(IDC_BTN_LIST_NEXT)->MoveWindow(orgrect.Width()/2+2, orgrect.bottom-ctrRect.Height(), ctrRect.Width(),ctrRect.Height()); CRect rectStatus; rectStatus.left = rect.left; rectStatus.top = orgrect.bottom-ctrRect.Height()+7; rectStatus.right = orgrect.Width()/2-2-ctrRect.Width()-5; rectStatus.bottom = orgrect.bottom; GetDlgItem(IDC_STATIC_MEASU_SHOW_STATUS)->MoveWindow(&rectStatus);*/ } // TODO: Add your message handler code here } void CDialListRealTimeMeasureData::OnShowTdData(const std::vector& vtTdData) { if (vtTdData.empty()) { return; } m_listData.DeleteAllItems(); CString strTxt; for (int i = 0; i < vtTdData.size(); i++) { strTxt.Empty(); strTxt.Format(_T("%d"),vtTdData[i].iID); m_listData.InsertItem(i, strTxt); int iColIndex = 1; if (0 == m_iSptType) { strTxt.Empty(); strTxt.Format(_T("%.2f"),vtTdData[i].fA); m_listData.SetItemText(i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"),vtTdData[i].fB); m_listData.SetItemText(i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"),vtTdData[i].fX); m_listData.SetItemText(i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"),vtTdData[i].fY); m_listData.SetItemText(i, iColIndex++, strTxt); } else { strTxt.Empty(); strTxt.Format(_T("%d"),vtTdData[i].iA); m_listData.SetItemText(i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%d"),vtTdData[i].iB); m_listData.SetItemText(i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%d"),vtTdData[i].iM); m_listData.SetItemText(i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%d"),vtTdData[i].iN); m_listData.SetItemText(i, iColIndex++, strTxt); } strTxt.Empty(); strTxt.Format(_T("%d"),vtTdData[i].ucStack); m_listData.SetItemText(i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"),vtTdData[i].fK); m_listData.SetItemText(i, iColIndex++, strTxt); if (vtTdData[i].ucIsUse != 0) { strTxt.Empty(); strTxt.Format(_T("%.2f"),vtTdData[i].fV); m_listData.SetItemText(i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"),vtTdData[i].fI); m_listData.SetItemText(i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"),vtTdData[i].fR0); m_listData.SetItemText(i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"),vtTdData[i].fSP); m_listData.SetItemText(i, iColIndex++, strTxt); } m_listData.SetItemData(i,vtTdData[i].iID); } } void CDialListRealTimeMeasureData::OnShowTdDataAppend(const std::vector& vtTdData) { if (vtTdData.empty()) { return; } //m_listData.DeleteAllItems(); int iItemIndex = m_listData.GetItemCount(); CString strTxt; int iColIndex = 1; int i = 0; for (; i < vtTdData.size(); i++) { strTxt.Empty(); strTxt.Format(_T("%d"), vtTdData[i].iID); m_listData.InsertItem(iItemIndex + i, strTxt); iColIndex = 1; if (0 == m_iSptType) { strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fA); m_listData.SetItemText(iItemIndex + i , iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fB); m_listData.SetItemText(iItemIndex + i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fX); m_listData.SetItemText(iItemIndex + i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fY); m_listData.SetItemText(iItemIndex + i, iColIndex++, strTxt); } else { strTxt.Empty(); strTxt.Format(_T("%d"), vtTdData[i].iA); m_listData.SetItemText(iItemIndex + i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%d"), vtTdData[i].iB); m_listData.SetItemText(iItemIndex + i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%d"), vtTdData[i].iM); m_listData.SetItemText(iItemIndex + i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%d"), vtTdData[i].iN); m_listData.SetItemText(iItemIndex + i, iColIndex++, strTxt); } strTxt.Empty(); strTxt.Format(_T("%d"), vtTdData[i].ucStack); m_listData.SetItemText(iItemIndex + i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fK); m_listData.SetItemText(iItemIndex + i, iColIndex++, strTxt); if (vtTdData[i].ucIsUse != 0) { strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fV); m_listData.SetItemText(iItemIndex + i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fI); m_listData.SetItemText(iItemIndex + i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fR0); m_listData.SetItemText(iItemIndex + i, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fSP); m_listData.SetItemText(iItemIndex + i, iColIndex++, strTxt); } m_listData.SetItemData(iItemIndex + i, vtTdData[i].iID); m_listData.EnsureVisible(iItemIndex + i, TRUE); } //判断如果是最后一个点更新界面 if (vtTdData[i - 1].iID == m_stCurRealTimeTaskArg.uiTotalNum) { CString strLog; strLog.Format(_T("zm: 0x06 recv data end, taskid=%s,total num=%u"), m_stCurRealTimeTaskArg.ucTaskID, m_stCurRealTimeTaskArg.uiTotalNum); CFileOperTools::GetInstance()->WriteComLog(strLog); g_strSaveTestingTaskID.Empty();//清空当前保存的值 ::SendMessage(m_TaskManagerHwnd, WM_MSG_UPDATE_TASK_LIST, (WPARAM)0, 0); } } void CDialListRealTimeMeasureData::OnShowTdDataUpdate(const std::vector& vtTdData) { if (vtTdData.empty()) { return; } //m_listData.DeleteAllItems(); int iItemIndex = m_listData.GetItemCount(); CString strTxt,strLog; int iColIndex = 1; int i = 0; int j = 0; int iIndex = 0; BOOL bStopTraverList = FALSE; for (; i < vtTdData.size(); i++) { strTxt.Empty(); strTxt.Format(_T("%d"), vtTdData[i].iID); //先查找是否有这个数据,没有再插入 if (!bStopTraverList) { for (j = 0; j < iItemIndex; j++) { if (strTxt.Compare(m_listData.GetItemText(j, 0)) == 0) { m_listData.SetItemText(j, 0, strTxt); break; } } if (j == iItemIndex) { //追加 bStopTraverList = TRUE; iIndex = m_listData.GetItemCount(); strLog.Format(_T("zm:----------m_eTestingMethod(%d)==1,from current point begin,list nonono ID=%s, stop loop,iIndex=%d,vector i=%d,list j=%d,iItemIndex=%d"), g_eTestingMethod, strTxt, iIndex, i, j, iItemIndex); CFileOperTools::GetInstance()->WriteComLog(strLog); m_listData.InsertItem(iIndex, strTxt); } else { strLog.Format(_T("zm:----------m_eTestingMethod(%d)==2,one point,ID=%s,list iIndex=%d,vector i=%d"), g_eTestingMethod, strTxt, iIndex, i); CFileOperTools::GetInstance()->WriteComLog(strLog); iIndex = j; } } else { //已存在的点全部更新完了 strLog.Format(_T("zm:----------m_eTestingMethod(%d)==1,from current point begin,list nonono ID=%s, not need loop,list iIndex=%d, vector i=%d"), g_eTestingMethod, strTxt, iIndex, i); CFileOperTools::GetInstance()->WriteComLog(strLog); iIndex = m_listData.GetItemCount(); m_listData.InsertItem(iIndex, strTxt); } iColIndex = 1; if (0 == m_iSptType) { strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fA); m_listData.SetItemText(iIndex, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fB); m_listData.SetItemText(iIndex, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fX); m_listData.SetItemText(iIndex, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fY); m_listData.SetItemText(iIndex, iColIndex++, strTxt); } else { strTxt.Empty(); strTxt.Format(_T("%d"), vtTdData[i].iA); m_listData.SetItemText(iIndex, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%d"), vtTdData[i].iB); m_listData.SetItemText(iIndex, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%d"), vtTdData[i].iM); m_listData.SetItemText(iIndex, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%d"), vtTdData[i].iN); m_listData.SetItemText(iIndex, iColIndex++, strTxt); } strTxt.Empty(); strTxt.Format(_T("%d"), vtTdData[i].ucStack); m_listData.SetItemText(iIndex, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fK); m_listData.SetItemText(iIndex, iColIndex++, strTxt); if (vtTdData[i].ucIsUse != 0) { strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fV); m_listData.SetItemText(iIndex, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fI); m_listData.SetItemText(iIndex, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fR0); m_listData.SetItemText(iIndex, iColIndex++, strTxt); strTxt.Empty(); strTxt.Format(_T("%.2f"), vtTdData[i].fSP); m_listData.SetItemText(iIndex, iColIndex++, strTxt); } m_listData.SetItemData(iIndex, vtTdData[i].iID); m_listData.EnsureVisible(iIndex, TRUE); m_listData.SetItemState(iIndex, LVIS_FOCUSED, LVIS_FOCUSED); } //判断如果是最后一个点更新界面 if (EN_TASK_CURRENT_ONE_POINT_TEST == g_eTestingMethod) { g_strSaveTestingTaskID.Empty();//清空当前保存的值 ::SendMessage(m_TaskManagerHwnd, WM_MSG_UPDATE_TASK_LIST, (WPARAM)0, 0); } else { if (vtTdData[i - 1].iID == m_stCurRealTimeTaskArg.uiTotalNum) { CString strLog; strLog.Format(_T("zm: 0x06 recv data end taskid=%s,totalNum=%u"), m_stCurRealTimeTaskArg.ucTaskID, m_stCurRealTimeTaskArg.uiTotalNum); CFileOperTools::GetInstance()->WriteComLog(strLog); g_strSaveTestingTaskID.Empty();//清空当前保存的值 ::SendMessage(m_TaskManagerHwnd, WM_MSG_UPDATE_TASK_LIST, (WPARAM)0, 0); } } }