// OnLineSynTdDlg.cpp : 实现文件 // #include "stdafx.h" #include "GeoMative.h" #include "OnLineSynTdDlg.h" #include "afxdialogex.h" #include "DialLoopTaskCancel.h" #include "DialUploadLoopTask.h" #include "DialLoopTaskQuery.h" extern int g_UIOffset; extern int g_iUILanguage; extern CString g_szMacAddress; extern CGeoMativeApp theApp; extern float tcp_htonf(float f); extern float tcp_ntohf(float f); extern CString OnLineTask(BYTE ucTaskStats); extern CString Tm2GmtStr(time_t t); extern CString Tm2LocalStr(time_t t); extern time_t Str2LocalTm(CString szTime); extern time_t Str2GmtTm(CString szTime); BEGIN_EASYSIZE_MAP(OnLineSynTdDlg) //list 框 EASYSIZE(control,left,top,right,bottom,options)ES_KEEPSIZE EASYSIZE(IDC_LIST_SYN_SEV_OL, ES_BORDER, ES_BORDER, ES_KEEPSIZE, ES_BORDER, 0) EASYSIZE(IDC_LIST_SYN_LA_OL, ES_BORDER, ES_BORDER, ES_KEEPSIZE, ES_BORDER, 0) //EASYSIZE(IDC_STATIC_TD_SV_OL, ES_KEEPSIZE, ES_BORDER, ES_BORDER, ES_KEEPSIZE, 0) //EASYSIZE(IDC_STATIC_SYN_SEV_TOTAL, IDC_STATIC_TD_SV_OL, ES_BORDER, ES_KEEPSIZE, ES_KEEPSIZE, 0) //EASYSIZE(IDC_STATIC_TD_LO_OL, ES_KEEPSIZE, ES_BORDER, ES_BORDER, ES_KEEPSIZE, 0) //EASYSIZE(IDC_STATIC_SYN_LA_TOTAL, ES_KEEPSIZE, ES_BORDER, ES_BORDER, ES_KEEPSIZE, 0) //同步按键 /*EASYSIZE(IDC_SYN_OL_DOWN, ES_BORDER, IDC_STATIC_TD_SV_OL, ES_BORDER, ES_BORDER, 0) EASYSIZE(IDC_SYN_OL_UPLOAD, ES_BORDER, ES_BORDER, ES_BORDER, ES_BORDER, ES_HCENTER ) EASYSIZE(IDC_SYN_OL_TASK, ES_BORDER, ES_BORDER, ES_BORDER, ES_BORDER, ES_HCENTER ) EASYSIZE(IDC_SYN_OL_DATE, ES_BORDER, ES_BORDER, ES_BORDER, ES_BORDER, ES_HCENTER ) EASYSIZE(IDC_SYN_OL_ARG, ES_BORDER, ES_BORDER, ES_BORDER, ES_BORDER, ES_HCENTER) EASYSIZE(IDC_SYN_OL_TRUSTEE, ES_BORDER, ES_BORDER, ES_BORDER, ES_BORDER, ES_HCENTER ) EASYSIZE(IDC_BUTTON_DEL, ES_BORDER, ES_BORDER, ES_BORDER, ES_BORDER, ES_HCENTER )*/ /*EASYSIZE(IDC_SYN_OL_UPLOAD, ES_KEEPSIZE, ES_KEEPSIZE, ES_KEEPSIZE, ES_KEEPSIZE, ES_HCENTER) EASYSIZE(IDC_SYN_OL_TASK, ES_KEEPSIZE, ES_KEEPSIZE, ES_KEEPSIZE, ES_KEEPSIZE, ES_HCENTER) EASYSIZE(IDC_SYN_OL_DATE, ES_KEEPSIZE, ES_KEEPSIZE, ES_KEEPSIZE, ES_KEEPSIZE, ES_HCENTER) EASYSIZE(IDC_SYN_OL_ARG, ES_KEEPSIZE, ES_KEEPSIZE, ES_KEEPSIZE, ES_KEEPSIZE, ES_HCENTER) EASYSIZE(IDC_SYN_OL_TRUSTEE, ES_KEEPSIZE, ES_KEEPSIZE, ES_KEEPSIZE, ES_KEEPSIZE, ES_HCENTER) EASYSIZE(IDC_BUTTON_DEL, ES_KEEPSIZE, ES_KEEPSIZE, ES_KEEPSIZE, ES_KEEPSIZE, ES_HCENTER)*/ END_EASYSIZE_MAP // OnLineSynTdDlg 对话框 IMPLEMENT_DYNAMIC(OnLineSynTdDlg, CDialog) OnLineSynTdDlg::OnLineSynTdDlg(CWnd* pParent /*=NULL*/) : CDialog(OnLineSynTdDlg::IDD, pParent) { m_ptTaskTableInfo = NULL; } OnLineSynTdDlg::~OnLineSynTdDlg() { if (NULL != m_ptTaskTableInfo) { free(m_ptTaskTableInfo); }; } void OnLineSynTdDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST_SYN_SEV_OL, m_SevTdList); DDX_Control(pDX, IDC_LIST_SYN_LA_OL, m_LocalTdList); DDX_Control(pDX, IDC_STATIC_SYN_SEV_TOTAL, m_SevTotalNum); DDX_Control(pDX, IDC_STATIC_SYN_LA_TOTAL, m_LocalTotalNum); } BEGIN_MESSAGE_MAP(OnLineSynTdDlg, CDialog) ON_WM_SIZE() ON_WM_SIZING() ON_BN_CLICKED(IDC_SYN_OL_UPLOAD, &OnLineSynTdDlg::OnBnClickedSynOlUpload) ON_BN_CLICKED(IDC_SYN_OL_DOWN, &OnLineSynTdDlg::OnBnClickedSynOlDown) ON_BN_CLICKED(IDC_SYN_OL_TASK, &OnLineSynTdDlg::OnBnClickedSynOlTask) ON_BN_CLICKED(IDC_SYN_OL_ARG, &OnLineSynTdDlg::OnBnClickedSynOlArg) ON_BN_CLICKED(IDC_SYN_OL_DATE, &OnLineSynTdDlg::OnBnClickedSynOlDate) ON_BN_CLICKED(IDC_SYN_OL_TRUSTEE, &OnLineSynTdDlg::OnBnClickedSynOlTrustee) ON_BN_CLICKED(IDC_SYN_OL_DEL, &OnLineSynTdDlg::OnBnClickedButtonDel) ON_BN_CLICKED(IDC_SYN_OL_NO_TRUST, &OnLineSynTdDlg::OnBnClickedSynOlNoTrust) END_MESSAGE_MAP() // OnLineSynTdDlg 消息处理程序 void OnLineSynTdDlg::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); UPDATE_EASYSIZE; // TODO: 在此处添加消息处理程序代码 //CRect rect; //GetClientRect(&rect); //int iWidth = rect.Width()*0.42; //int iHeight = rect.Height()-40; //CPoint cpoint = rect.CenterPoint(); //m_LocalTdList.SetWindowPos(NULL, cpoint.x + 100, cpoint.y - 260, iWidth, iHeight, SWP_NOZORDER);// SWP_NOZORDER | SWP_NOSIZE); ////m_LocalTdList.SetWindowPos(NULL, cpoint.x + 100, cpoint.y - 260, 0, 0, SWP_NOZORDER | SWP_NOSIZE); // //m_SevTdList.SetWindowPos(NULL, cpoint.x-650, cpoint.y - 260, iWidth, iHeight, SWP_NOZORDER); } void OnLineSynTdDlg::OnSizing(UINT fwSide, LPRECT pRect) { CDialog::OnSizing(fwSide, pRect); UPDATE_EASYSIZE; // TODO: 在此处添加消息处理程序代码 } BOOL OnLineSynTdDlg::OnInitDialog() { CDialog::OnInitDialog(); //ModifyStyle(0, WS_SIZEBOX); //CRect rect; //GetClientRect(&rect); //CPoint cpoint = rect.CenterPoint(); ////GetWindowRect(&rect); ///*rect.top += 400; //rect.bottom -= 300; //rect.left += 120; //rect.right -= 400;*/ ////((CWnd*)GetDlgItem(IDC_SYN_OL_DOWN))->MoveWindow(&rect); //CenterWindow(); //((CWnd*)GetDlgItem(IDC_SYN_OL_DATE))->SetWindowPos(NULL, cpoint.x+100, cpoint.y, 0, 0, SWP_NOZORDER | SWP_NOSIZE); /*CRect rect; GetClientRect(&rect); CPoint cpoint = rect.CenterPoint(); ((CWnd*)GetDlgItem(IDC_SYN_OL_DOWN))->SetWindowPos(NULL, cpoint.x + 125, cpoint.y-120, 0, 0, SWP_NOZORDER | SWP_NOSIZE); ((CWnd*)GetDlgItem(IDC_SYN_OL_UPLOAD))->SetWindowPos(NULL, cpoint.x + 125, cpoint.y-80, 0, 0, SWP_NOZORDER | SWP_NOSIZE); ((CWnd*)GetDlgItem(IDC_SYN_OL_TASK))->SetWindowPos(NULL, cpoint.x + 125, cpoint.y-40, 0, 0, SWP_NOZORDER | SWP_NOSIZE); ((CWnd*)GetDlgItem(IDC_SYN_OL_DATE))->SetWindowPos(NULL, cpoint.x + 125, cpoint.y, 0, 0, SWP_NOZORDER | SWP_NOSIZE); ((CWnd*)GetDlgItem(IDC_SYN_OL_ARG))->SetWindowPos(NULL, cpoint.x + 125, cpoint.y+40, 0, 0, SWP_NOZORDER | SWP_NOSIZE); ((CWnd*)GetDlgItem(IDC_SYN_OL_TRUSTEE))->SetWindowPos(NULL, cpoint.x + 125, cpoint.y+80, 0, 0, SWP_NOZORDER | SWP_NOSIZE); ((CWnd*)GetDlgItem(IDC_BUTTON_DEL))->SetWindowPos(NULL, cpoint.x + 125, cpoint.y+120, 0, 0, SWP_NOZORDER | SWP_NOSIZE); (CWnd*)GetDlgItem(IDC_STATIC_TD_LO_OL)->SetWindowPos(NULL, cpoint.x + 295, cpoint.y-240, 0, 0, SWP_NOZORDER | SWP_NOSIZE); (CWnd*)GetDlgItem(IDC_STATIC_SYN_LA_TOTAL)->SetWindowPos(NULL, cpoint.x + 380, cpoint.y-240, 0, 0, SWP_NOZORDER | SWP_NOSIZE);*/ //EASYSIZE(IDC_STATIC_TD_LO_OL, ES_KEEPSIZE, ES_BORDER, ES_BORDER, ES_KEEPSIZE, 0) //EASYSIZE(IDC_STATIC_SYN_LA_TOTAL, ES_KEEPSIZE, ES_BORDER, ES_BORDER, ES_KEEPSIZE, 0) CString strColTitle; int iColIndex = (int)VAL_ZERO; m_SevTdList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES); //g_iCurrListColIndex = (int)VAL_ZERO; //g_iCurrListColOrder = (int)VAL_ZERO; m_SevTotalNum.SetWindowTextA(_T("0")); //m_SevTdList.SetBkColor(RGB(172, 199, 235)); //m_SevTdList.SetTextBkColor(RGB(172, 199, 235));//(126, 206, 183)); strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_TDNAME + g_UIOffset); m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 110); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("任务状态"); } else{ strColTitle += _T("Task status"); } m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 80); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("任务ID"); } else{ strColTitle += _T("Task ID"); } m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 150); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_SNAME + g_UIOffset); m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_TTYPE + g_UIOffset); m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_TRFREQUENCY + g_UIOffset); m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_TMODE + g_UIOffset); m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_CLAYOUT + g_UIOffset); m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_N + g_UIOffset); m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_SAFREQUENCY + g_UIOffset); m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_STYPE + g_UIOffset); m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_EDISTANCE + g_UIOffset); m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("开始电极"); } else{ strColTitle += _T("Start electrode"); } m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 115); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("结束电极"); } else{ strColTitle += _T("End electrode"); } m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 115); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("开始层数"); } else{ strColTitle += _T("Start layer"); } m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 115); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("结束层数"); } else{ strColTitle += _T("End layer"); } m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 115); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("开始测试时间"); } else{ strColTitle += _T("Start Test_time"); } m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 150); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("结束测试时间"); } else{ strColTitle += _T("End Test_time"); } m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 150); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("定时时间"); } else{ strColTitle += _T("Timer time"); } m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 115); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("总测点数"); } else{ strColTitle += _T("Total point"); } m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 50); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("Org标志"); } else{ strColTitle += _T("Org Flg"); } m_SevTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 50); ////////////////////////////////////////本地框显示///////////////////////////////////////////////// m_LocalTdList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES); //m_LocalTdList.SetBkColor(RGB(172, 199, 235)); //m_LocalTdList.SetTextBkColor(RGB(172, 199, 235));//(126, 206, 183)); m_LocalTotalNum.SetWindowTextA(_T("0")); iColIndex = (int)VAL_ZERO; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_TDNAME + g_UIOffset); m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 110); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("任务状态"); } else{ strColTitle += _T("Task status"); } m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 80); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("任务ID"); } else{ strColTitle += _T("Task ID"); } m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 150); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_SNAME + g_UIOffset); m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_TTYPE + g_UIOffset); m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_TRFREQUENCY + g_UIOffset); m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_TMODE + g_UIOffset); m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_CLAYOUT + g_UIOffset); m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_N + g_UIOffset); m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_SAFREQUENCY + g_UIOffset); m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_STYPE + g_UIOffset); m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_EDISTANCE + g_UIOffset); m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 100); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("开始电极"); } else{ strColTitle += _T("Start electrode"); } m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 115); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("结束电极"); } else{ strColTitle += _T("End electrode"); } m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 115); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("开始层数"); } else{ strColTitle += _T("Start layer"); } m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 115); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("结束层数"); } else{ strColTitle += _T("End layer"); } m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 115); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("开始测试时间"); } else{ strColTitle += _T("Start Test_time"); } m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 150); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("结束测试时间"); } else{ strColTitle += _T("End Test_time"); } m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 150); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("定时时间"); } else{ strColTitle += _T("Timer time"); } m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 115); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("总测点数"); } else{ strColTitle += _T("Total point"); } m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 115); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("Org标志"); } else{ strColTitle += _T("Org Flg"); } m_LocalTdList.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 50); // TODO: 在此添加额外的初始化 INIT_EASYSIZE; //ShowWindow(SW_MAXIMIZE); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void OnLineSynTdDlg::OnInitLocalList() { UINT32 uiTotalNum; theApp.m_pTdManager->InitialTDListByOnLineForSyn(this->m_LocalTdList, this->m_szDeSN, uiTotalNum); CString szTotalNum; szTotalNum.Format("%u",uiTotalNum); m_LocalTotalNum.SetWindowTextA(_T(szTotalNum)); } void OnLineSynTdDlg::OnSynAndInitSevTdList() { char chMsgSyn[4095] = { 0 }; UINT32 *uiRevData = NULL; char chSendStr[210] = {0}; int iLen = 0; CString szDevID = m_szDeSN.Mid(2); UINT32 uiDevID = atoi(szDevID); STRemTaskTable *ptTaskTable = NULL; CString lsStatus = ""; UINT32 uiTaskNum = 0; STRemTaskArg *ptTaskArg = NULL; //SYSTEMTIME sysTm; time_t tm; //GetSystemTime(&sysTm); int uiCurTime = (int)time(&tm); int uiStartTime = uiCurTime - 30 * 24 * 3600; theApp.m_NetWorkOper.SetSuspendForThread(true); ///////////////////////////////////////////////////////同步任务列表//////////////////////////////////////////////// uiDevID = htonl(uiDevID); uiCurTime = htonl(uiCurTime); uiStartTime = htonl(uiStartTime); memcpy(chSendStr, &uiDevID, sizeof(UINT32)); memcpy(&chSendStr[sizeof(UINT32)], &uiStartTime, sizeof(UINT32)); memcpy(&chSendStr[2 * sizeof(UINT32)], &uiCurTime, sizeof(UINT32)); chSendStr[3 * sizeof(UINT32)] = 1; if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_REQ_DOWNLOAD_TASK_TABLE, 0xFFFFFFFF, 1, chSendStr, 3*sizeof(UINT32)+sizeof(BYTE))) { theApp.m_NetWorkOper.SetSuspendForThread(false); if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("同步任务信息发送失败")); else MessageBoxEx(NULL, _T("Synchronization task table send failed."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chMsgSyn, &iLen, sizeof(chMsgSyn), 5000)) { uiRevData = (UINT32*)(chMsgSyn); uiTaskNum = ntohl(uiRevData[0]); if ((uiRevData[0] < 1) || (iLen < (sizeof(UINT32)+uiTaskNum * sizeof(STRemTaskTable)))) { theApp.m_NetWorkOper.SetSuspendForThread(false); if (uiRevData[0] > 0) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("同步任务列表接收失败,接收长度错误")); else MessageBoxEx(NULL, _T("Synchronization task table recv failed. recv length is error!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } return; } m_SevTdList.DeleteAllItems(); CString str;str.Format(_T("%d"),uiTaskNum); m_SevTotalNum.SetWindowTextA((LPCTSTR)(_bstr_t)str); ptTaskTable = (STRemTaskTable *) (&chMsgSyn[sizeof(UINT32)]); int i = (int)VAL_ZERO; for (i = 0; i < uiTaskNum; i++) { //if (0 <= ptTaskTable[i].ucTaskStats && ptTaskTable[i].ucTaskStats <= 3) { lsStatus = OnLineTask(ptTaskTable[i].ucTaskStats); m_SevTdList.InsertItem(i, _T("")); m_SevTdList.SetItemText(i, 0, (LPCTSTR)(_bstr_t)_T(" ")); m_SevTdList.SetItemText(i, 1, (LPCTSTR)(_bstr_t)lsStatus); //ptTaskTable[i].ucTaskStats); m_SevTdList.SetItemText(i, 2, (LPCTSTR)(_bstr_t)ptTaskTable[i].ucTaskID); //m_SevTdList.UpdateWindow(); } } //m_SevTdList.UpdateWindow(); //UpdateData(); //存入结构体供后面的任务上传作检查 if (uiTaskNum >= 1) { if (NULL != m_ptTaskTableInfo) { free(m_ptTaskTableInfo); }; m_ptTaskTableInfo = (STRemTaskTable *)malloc(uiTaskNum*sizeof(STRemTaskTable)); m_uiSevTaskNum = uiTaskNum; memcpy(m_ptTaskTableInfo, ptTaskTable, uiTaskNum*sizeof(STRemTaskTable)); } } /////////////////////////////////////同步任务参数///////////////////////////////////////////////// int j = 0; UINT32 uiRemainNum = 0; UINT32 uiGetNum = 0; for (j = 0; j < uiTaskNum; j++)//=5) { /*uiRemainNum = uiTaskNum - j; if (uiRemainNum < 5) { uiGetNum = uiRemainNum; } else { uiGetNum = 5; }*/ uiGetNum = 1; chSendStr[0] = 0; chSendStr[1] = 0; chSendStr[2] = 0; chSendStr[3] = uiGetNum; CString TmpStr = m_SevTdList.GetItemText(j,2); strncpy(&chSendStr[4], TmpStr,MAX_NAME_LEN*sizeof(BYTE)); /*TmpStr = m_SevTdList.GetItemText(j+1, 2); strncpy(&chSendStr[4 + MAX_NAME_LEN], TmpStr, MAX_NAME_LEN * sizeof(BYTE)); TmpStr = m_SevTdList.GetItemText(j+2, 2); strncpy(&chSendStr[4 + 80], TmpStr, MAX_NAME_LEN * sizeof(BYTE)); TmpStr = m_SevTdList.GetItemText(j+3, 2); strncpy(&chSendStr[4 + 120], TmpStr, MAX_NAME_LEN * sizeof(BYTE)); TmpStr = m_SevTdList.GetItemText(j+4, 2); strncpy(&chSendStr[4 + 160], TmpStr, MAX_NAME_LEN * sizeof(BYTE)); */ int iSendLen = sizeof(UINT32)+sizeof(BYTE)*MAX_NAME_LEN*uiGetNum; if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_REQ_DOWNLOAD_TASK_ARG, 0xFFFFFFFF, 1, chSendStr,iSendLen)) { theApp.m_NetWorkOper.SetSuspendForThread(false); if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("同步任务参数发送失败")); else MessageBoxEx(NULL, _T("Synchronization task arguments send failed."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chMsgSyn, &iLen, 1000, 5000)) { uiRevData = (UINT32*)(chMsgSyn); UINT32 uiRevDataNum = ntohl(uiRevData[0]); if ((uiRevDataNum < 1) || (iLen < (sizeof(UINT32)+uiRevDataNum * sizeof(STRemTaskArg)))) { theApp.m_NetWorkOper.SetSuspendForThread(false); return; } ptTaskArg = (STRemTaskArg *)(chMsgSyn + sizeof(UINT32)); int iIndex = (int)VAL_ZERO; for (iIndex = 0; iIndex < uiRevDataNum; iIndex++) { ptTaskArg[iIndex].stMeasuArg.iSAInterval = ntohl(ptTaskArg[iIndex].stMeasuArg.iSAInterval); ptTaskArg[iIndex].stMeasuArg.fXElecDistance = tcp_ntohf(ptTaskArg[iIndex].stMeasuArg.fXElecDistance); ptTaskArg[iIndex].stMeasuArg.fYElecDistance = tcp_ntohf(ptTaskArg[iIndex].stMeasuArg.fYElecDistance); ptTaskArg[iIndex].stMeasuArg.fXElecStep = tcp_ntohf(ptTaskArg[iIndex].stMeasuArg.fXElecStep); ptTaskArg[iIndex].stMeasuArg.fYElecStep = tcp_ntohf(ptTaskArg[iIndex].stMeasuArg.fYElecStep); ptTaskArg[iIndex].stMeasuArg.rcGridSize.left = ntohl(ptTaskArg[iIndex].stMeasuArg.rcGridSize.left); ptTaskArg[iIndex].stMeasuArg.rcGridSize.top = ntohl(ptTaskArg[iIndex].stMeasuArg.rcGridSize.top); ptTaskArg[iIndex].stMeasuArg.rcGridSize.right = ntohl(ptTaskArg[iIndex].stMeasuArg.rcGridSize.right); ptTaskArg[iIndex].stMeasuArg.rcGridSize.bottom = ntohl(ptTaskArg[iIndex].stMeasuArg.rcGridSize.bottom); ptTaskArg[iIndex].stMeasuArg.byLineDirection = ntohl(ptTaskArg[iIndex].stMeasuArg.byLineDirection); ptTaskArg[iIndex].uiStartElec = ntohl(ptTaskArg[iIndex].uiStartElec); ptTaskArg[iIndex].uiEndElec = ntohl(ptTaskArg[iIndex].uiEndElec); ptTaskArg[iIndex].uiStartLayer = ntohl(ptTaskArg[iIndex].uiStartLayer); ptTaskArg[iIndex].uiEndLayer = ntohl(ptTaskArg[iIndex].uiEndLayer); ptTaskArg[iIndex].uiStartTime = ntohl(ptTaskArg[iIndex].uiStartTime); ptTaskArg[iIndex].uiEndTime = ntohl(ptTaskArg[iIndex].uiEndTime); ptTaskArg[iIndex].uiTimerTime = ntohl(ptTaskArg[iIndex].uiTimerTime); ptTaskArg[iIndex].uiTotalNum = ntohl(ptTaskArg[iIndex].uiTotalNum); time_t tmTime = ptTaskArg[iIndex].uiStartTime; CString szTimeStart = Tm2LocalStr(tmTime);//Tm2GmtStr(tmTime); //szTimeStart.Format(_T("%d-%d-%d %d:%d:%d"), p->tm_year + 1900, p->tm_mon + 1, p->tm_mday, p->tm_hour,p->tm_min,p->tm_sec); tmTime = ptTaskArg[iIndex].uiEndTime; CString szTimeEnd = Tm2LocalStr(tmTime);//Tm2GmtStr(tmTime); //p = localtime(&tmTime); //szTimeStart.Format(_T("%d-%d-%d %d:%d:%d"), p->tm_year + 1900, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec); tmTime = ptTaskArg[iIndex].uiTimerTime; CString szTimeTimer = Tm2LocalStr(tmTime);//Tm2GmtStr(tmTime); //p = localtime(&tmTime); //szTimeStart.Format(_T("%d-%d-%d %d:%d:%d"), p->tm_year + 1900, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec); m_SevTdList.SetItemText(j+iIndex, 0, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].ucTDName); m_SevTdList.SetItemText(j+iIndex, 3, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].ucSciptName); m_SevTdList.SetItemText(j+iIndex, 4, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].stMeasuArg.ucTestType); m_SevTdList.SetItemText(j+iIndex, 5, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].stMeasuArg.ucTxPeriod); m_SevTdList.SetItemText(j+iIndex, 6, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].stMeasuArg.ucArrayType); m_SevTdList.SetItemText(j+iIndex, 7, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].stMeasuArg.ucCableLayout); m_SevTdList.SetItemText(j+iIndex, 8, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].stMeasuArg.ucStacking); CString str;str.Format(_T("%d"),ptTaskArg[iIndex].stMeasuArg.iSAInterval); m_SevTdList.SetItemText(j+iIndex, 9, (LPCTSTR)(_bstr_t)str); m_SevTdList.SetItemText(j+iIndex, 10, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].stMeasuArg.ucSptType); //m_SevTdList.SetItemText(j+iIndex, 11, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].stMeasuArg.fElecSpace); str.Empty(); str.Format(_T("%d"),ptTaskArg[iIndex].uiStartElec); m_SevTdList.SetItemText(j+iIndex, 12, (LPCTSTR)(_bstr_t)str); str.Empty(); str.Format(_T("%d"),ptTaskArg[iIndex].uiEndElec); m_SevTdList.SetItemText(j+iIndex, 13, (LPCTSTR)(_bstr_t)str); str.Empty(); str.Format(_T("%d"),ptTaskArg[iIndex].uiStartLayer); m_SevTdList.SetItemText(j+iIndex, 14, (LPCTSTR)(_bstr_t)str); str.Empty(); str.Format(_T("%d"),ptTaskArg[iIndex].uiEndLayer); m_SevTdList.SetItemText(j+iIndex, 15, (LPCTSTR)(_bstr_t)str); m_SevTdList.SetItemText(j+iIndex, 16, (LPCTSTR)(_bstr_t)szTimeStart); m_SevTdList.SetItemText(j+iIndex, 17, (LPCTSTR)(_bstr_t)szTimeEnd); m_SevTdList.SetItemText(j+iIndex, 18, (LPCTSTR)(_bstr_t)szTimeTimer); str.Empty(); str.Format(_T("%d"),ptTaskArg[iIndex].uiTotalNum); m_SevTdList.SetItemText(j+iIndex, 19, (LPCTSTR)(_bstr_t)str); str.Empty(); str.Format(_T("%d"),ptTaskArg[iIndex].ucOrgFlg); m_SevTdList.SetItemText(j+iIndex, 20, (LPCTSTR)(_bstr_t)str); } } } theApp.m_NetWorkOper.SetSuspendForThread(false); return; } BYTE OnLineSynTdDlg::ReturnServerTaskState(CString szTaskID) { if (NULL == m_ptTaskTableInfo) { return -1; } for (int i = 0; i < m_uiSevTaskNum; i++) { if (m_ptTaskTableInfo[i].ucTaskID == szTaskID) { return m_ptTaskTableInfo[i].ucTaskStats; } } return -1; } void OnLineSynTdDlg::OnBnClickedSynOlUpload() { // TODO: 在此添加控件通知处理程序代码 CString szListStr = ""; char chSendStr[210] = { 0 }; char chMsgSyn[10] = { 0 }; int iLen = 0; UINT32 uiTaskNum; STRemTaskArg stTaskArg; //比对是否上传过 POSITION pos = m_LocalTdList.GetFirstSelectedItemPosition(); if (pos == NULL) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("请选择本地的任务上传")); else MessageBoxEx(NULL, _T("Please select Local's list the task to upload !"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } theApp.m_NetWorkOper.SetSuspendForThread(true); while (pos) { int nItem = m_LocalTdList.GetNextSelectedItem(pos); CString szTaskStatus = m_LocalTdList.GetItemText(nItem, 1); uiTaskNum = 1; szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 0); strncpy(stTaskArg.ucTDName, szListStr, 60 * sizeof(BYTE)); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 2); strncpy(stTaskArg.ucTaskID, szListStr, MAX_NAME_LEN* sizeof(BYTE)); CString szStrMsg; BYTE ucSevTaskState = ReturnServerTaskState(stTaskArg.ucTaskID); if (0<= ucSevTaskState && ucSevTaskState <=3) { if (EN_TASK_STATE_NO_TRUST == ucSevTaskState) { szStrMsg.Empty(); szStrMsg.Format(_T("Task %s has been uploaded! whether to overwrite?"), stTaskArg.ucTDName); //AfxMessageBox(szStrMsg); if (IDYES != ::MessageBox(NULL, szStrMsg, "Notice", MB_YESNO)) { continue; } } else if (EN_TASK_STATE_FINISH == ucSevTaskState) { szStrMsg.Empty(); szStrMsg.Format(_T("Task %s has been completed at server! whether to overwrite?"), stTaskArg.ucTDName); //AfxMessageBox(szStrMsg); if (IDYES != ::MessageBox(NULL, szStrMsg, "Notice", MB_YESNO)) { continue; } } else { szStrMsg.Empty(); if (LANG_ZHCN == g_iUILanguage) { szStrMsg.Format(_T("任务%s已由服务器管理或测试!上传前请取消信任"), stTaskArg.ucTDName); AfxMessageBox(szStrMsg); } else { szStrMsg.Format(_T("Task %s has been managed or testing by server!Please cancel trust before uploading"), stTaskArg.ucTDName); MessageBoxEx(NULL, szStrMsg, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } continue; } } szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 3); strncpy(stTaskArg.ucSciptName, szListStr, MAX_NAME_LEN*sizeof(BYTE)); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 4); stTaskArg.stMeasuArg.ucTestType = atoi(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 5); stTaskArg.stMeasuArg.ucTxPeriod = atoi(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 6); stTaskArg.stMeasuArg.ucArrayType = atoi(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 7); stTaskArg.stMeasuArg.ucCableLayout = atoi(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 8); stTaskArg.stMeasuArg.ucStacking = atoi(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 9); stTaskArg.stMeasuArg.iSAInterval = atoi(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 10); stTaskArg.stMeasuArg.ucSptType = atoi(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 11); //stTaskArg.stMeasuArg.fElecSpace = atof(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 12); stTaskArg.uiStartElec = atoi(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 13); stTaskArg.uiEndElec = atoi(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 14); stTaskArg.uiStartLayer = atoi(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 15); stTaskArg.uiEndLayer = atoi(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 16); stTaskArg.uiStartTime = Str2GmtTm(szListStr);//atoi(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 17); stTaskArg.uiEndTime = Str2GmtTm(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 18); stTaskArg.uiTimerTime = Str2GmtTm(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 19); stTaskArg.uiTotalNum = atoi(szListStr); //Org上传标志 szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 20); stTaskArg.ucOrgFlg = atoi(szListStr); //////////////////////////////////////////////////////发送任务和任务参数到云端//////////////////////////////////////////////// uiTaskNum = htonl(uiTaskNum); stTaskArg.stMeasuArg.iSAInterval=htonl(stTaskArg.stMeasuArg.iSAInterval); //stTaskArg.stMeasuArg.fElecSpace = tcp_htonf(stTaskArg.stMeasuArg.fElecSpace); stTaskArg.uiStartElec = htonl(stTaskArg.uiStartElec); stTaskArg.uiEndElec = htonl(stTaskArg.uiEndElec); stTaskArg.uiStartLayer = htonl(stTaskArg.uiStartLayer); stTaskArg.uiEndLayer = htonl(stTaskArg.uiEndLayer); stTaskArg.uiStartTime = htonl(stTaskArg.uiStartTime); stTaskArg.uiEndTime = htonl(stTaskArg.uiEndTime); stTaskArg.uiTimerTime = htonl(stTaskArg.uiTimerTime); stTaskArg.uiTotalNum = htonl(stTaskArg.uiTotalNum); memcpy(chSendStr, &uiTaskNum, sizeof(UINT32)); memcpy(&chSendStr[sizeof(UINT32)], &stTaskArg, sizeof(stTaskArg)); if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_UPLOAD_TASK_ARG, 0xFFFFFFFF, 1, (char*)chSendStr, sizeof(UINT32)+sizeof(stTaskArg))) { theApp.m_NetWorkOper.SetSuspendForThread(false); if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("上传任务参数发送失败")); else MessageBoxEx(NULL, _T("Upload task parameter send to failed."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chMsgSyn, &iLen, sizeof(chMsgSyn), 5000)) { if ((iLen != sizeof(BYTE)) || (EN_RECV_SUCCESS != chMsgSyn[0])) { theApp.m_NetWorkOper.SetSuspendForThread(false); if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("上传任务参数接收失败")); else MessageBoxEx(NULL, _T("Upload task parameter recv to failed."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); //return; } } /////////////////////////////////////////////////////////发送接地电阻信息到云端//////////////////////////////////////////////// szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 2); strncpy(stTaskArg.ucTaskID, szListStr, MAX_NAME_LEN * sizeof(BYTE)); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 12); stTaskArg.uiStartElec = atoi(szListStr); szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 13); stTaskArg.uiEndElec = atoi(szListStr); //stTaskArg.uiEndElec = 95; //stTaskArg.uiStartElec = 1; stTaskArg.uiStartElec = htonl(stTaskArg.uiStartElec); stTaskArg.uiEndElec = htonl(stTaskArg.uiEndElec); memcpy(chSendStr, &stTaskArg.ucTaskID, MAX_NAME_LEN * sizeof(BYTE)); memcpy(&chSendStr[MAX_NAME_LEN * sizeof(BYTE)], &stTaskArg.uiStartElec, sizeof(UINT32)); memcpy(&chSendStr[MAX_NAME_LEN * sizeof(BYTE)+ sizeof(UINT32)], &stTaskArg.uiEndElec, sizeof(UINT32)); if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_UPLOAD_RG_INF, 0xFFFFFFFF, 1, (char*)chSendStr, MAX_NAME_LEN * sizeof(BYTE)+2*sizeof(UINT32))) { theApp.m_NetWorkOper.SetSuspendForThread(false); if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("上传任务接地电阻发送失败")); else MessageBoxEx(NULL, _T("Upload task Rg send to failed."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chMsgSyn, &iLen, sizeof(chMsgSyn), 5000)) { if ((iLen != sizeof(BYTE)) || (EN_RECV_SUCCESS != chMsgSyn[0])) { theApp.m_NetWorkOper.SetSuspendForThread(false); if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("上传任务接地电阻接收失败")); else MessageBoxEx(NULL, _T("Upload task Rg recv to failed."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); //return; } } /////////////////////////////////////////////////////////发送数据到云端//////////////////////////////////////////////////////// if (FALSE != UploadRes2DData((char*)stTaskArg.ucTaskID)) { //TrusteeLocalTaskToSev(nItem); //移动本地任务到服务栏状态框 Sleep(30000); //m_SevTdList.SetRedraw(FALSE); //更新内容 OnSynAndInitSevTdList(); //m_SevTdList.SetRedraw(TRUE); //m_SevTdList.Invalidate(); //m_SevTdList.UpdateWindow(); } } if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("上传任务完成")); else MessageBoxEx(NULL, _T("Upload task finished."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); theApp.m_NetWorkOper.SetSuspendForThread(false); } #define MAX_DOWNLOCAD_POINT (50) void OnLineSynTdDlg::SynOlDownData(char *chStr, int iSendLen, int iStartPoint, int iEndPoint, bool bTaskExistFlg, STRemTaskArg stTaskArg, DWORD iTdChannelID) { int iLen = 0; if (NULL == chStr) { return; } if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_REQ_DOWNLOAD_DATA_INFO, 0xFFFFFFFF, 1, (char*)chStr, iSendLen)) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Download task data send failed.")); return; } int iTotalPoint = (iEndPoint - iStartPoint + 1); int iRevLen = MAX_NAME_LEN*sizeof(BYTE)+sizeof(UINT32)+iTotalPoint*(11*sizeof(float)+2*sizeof(BYTE)); if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chStr, &iLen, iRevLen, 6000)) { STSynTaskDataRes *ptTaskDataHeader = (STSynTaskDataRes *)chStr; if ((iLen < iRevLen) || (iTotalPoint != ntohl(ptTaskDataHeader->dwPointNum))) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Download task data recv failed.")); return; } ///////存入数据库tdcon表中 if (!bTaskExistFlg) { //任务存在 for (int i = 0; i < iTotalPoint; i++) { STTaskDataRes *ptTaskData = (STTaskDataRes *)(chStr + MAX_NAME_LEN * sizeof(BYTE)+sizeof(UINT32)+i*sizeof(STTaskDataRes)); STMeasuDataResBasic stMeasuBasicData; stMeasuBasicData.iID = ntohl(ptTaskData->dwID); stMeasuBasicData.fV = tcp_ntohf(ptTaskData->fV); stMeasuBasicData.fI = tcp_ntohf(ptTaskData->fI); stMeasuBasicData.fR0 = tcp_ntohf(ptTaskData->fR0); stMeasuBasicData.fSP = tcp_ntohf(ptTaskData->fSP); stMeasuBasicData.fK = tcp_ntohf(ptTaskData->fK); stMeasuBasicData.ucAlram = ptTaskData ->ucAlram; stMeasuBasicData.ucStack = ptTaskData ->ucStack; stMeasuBasicData.fR0_LC = tcp_ntohf(ptTaskData->fR0_LC); int iAttachLen = (1 == stTaskArg.stMeasuArg.ucTestType) ? sizeof(STMeasuDataResAttachIP) : 0; m_TaskdDBOper.UpdateTdBasicData(stTaskArg.stMeasuArg.ucSptType, stTaskArg.stMeasuArg.ucTestType,\ iTdChannelID, stMeasuBasicData.iID, &stMeasuBasicData, ptTaskData + 1 + (i + 1)*sizeof(STMeasuDataResBasic)+i*iAttachLen); } } else { //任务不存在 for (int i = 0; i < iTotalPoint; i++) { STTaskDataRes *ptTaskData = (STTaskDataRes *)(chStr + MAX_NAME_LEN * sizeof(BYTE)+sizeof(UINT32)+i*sizeof(STTaskDataRes)); STTaskDataRes stMeasuBasicData; stMeasuBasicData.dwID = ntohl(ptTaskData->dwID); stMeasuBasicData.fA = tcp_ntohf(ptTaskData->fA); stMeasuBasicData.fB = tcp_ntohf(ptTaskData->fB); stMeasuBasicData.fM = tcp_ntohf(ptTaskData->fM); stMeasuBasicData.fN = tcp_ntohf(ptTaskData->fN); stMeasuBasicData.fK = tcp_ntohf(ptTaskData->fK); stMeasuBasicData.fV = tcp_ntohf(ptTaskData->fV); stMeasuBasicData.fI = tcp_ntohf(ptTaskData->fI); stMeasuBasicData.fR0 = tcp_ntohf(ptTaskData->fR0); stMeasuBasicData.fSP = tcp_ntohf(ptTaskData->fSP); stMeasuBasicData.fK = tcp_ntohf(ptTaskData->fK); stMeasuBasicData.ucAlram = ptTaskData->ucAlram; stMeasuBasicData.ucStack = ptTaskData->ucStack; stMeasuBasicData.fR0_LC = tcp_ntohf(ptTaskData->fR0_LC); //m_TaskdDBOper.OnlineDownloadRes2DData(&stMeasuBasicData, iTdChannelID); } } } return; } void OnLineSynTdDlg::OnBnClickedSynOlDown() { // TODO: 在此添加控件通知处理程序代码 //下发接地电阻信息和测试数据信息 CString szListStr = ""; //char chSendStr[210] = { 0 }; int iLen = 0; STRemTaskArg stTaskArg; DWORD dwTdID = 0; CString szTdID = ""; //比对是否上传过 POSITION pos = m_SevTdList.GetFirstSelectedItemPosition(); if (pos == NULL) { AfxMessageBox(_T("Please select the task to download!")); return; } theApp.m_NetWorkOper.SetSuspendForThread(true); while (pos) { int nItem = m_SevTdList.GetNextSelectedItem(pos); CString szTaskStatus = m_SevTdList.GetItemText(nItem, 1); if (szTaskStatus == "") { continue; } szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 0); strncpy(stTaskArg.ucTDName, szListStr, 60 * sizeof(BYTE)); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 2); strncpy(stTaskArg.ucTaskID, szListStr, MAX_NAME_LEN* sizeof(BYTE)); szTdID = szListStr; szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 3); strncpy(stTaskArg.ucSciptName, szListStr, MAX_NAME_LEN * sizeof(BYTE)); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 4); stTaskArg.stMeasuArg.ucTestType = atoi(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 5); stTaskArg.stMeasuArg.ucTxPeriod = atoi(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 6); stTaskArg.stMeasuArg.ucArrayType = atoi(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 7); stTaskArg.stMeasuArg.ucCableLayout = atoi(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 8); stTaskArg.stMeasuArg.ucStacking = atoi(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 9); stTaskArg.stMeasuArg.iSAInterval = atoi(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 10); stTaskArg.stMeasuArg.ucSptType = atoi(szListStr); /*szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 11); stTaskArg.stMeasuArg.fElecSpace = atof(szListStr);*/ szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 12); stTaskArg.uiStartElec = atoi(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 13); stTaskArg.uiEndElec = atoi(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 14); stTaskArg.uiStartLayer = atoi(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 15); stTaskArg.uiEndLayer = atoi(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 16); stTaskArg.uiStartTime = atoi(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 17); stTaskArg.uiEndTime = atoi(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 18); stTaskArg.uiTimerTime = atoi(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 19); stTaskArg.uiTotalNum = atoi(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 20); stTaskArg.ucOrgFlg = atoi(szListStr); /////////////////////////////////////////////////////云端任务和任务参数存到数据库//////////////////////////////////////////////// //判断任务是否存在 BOOL bTaskExistFlg = theApp.m_pTdManager->OnlineCheckTdExist(szTdID, m_szDeSN, &dwTdID); if (!bTaskExistFlg) { //删掉原有任务 /*if (_T("VESR") == szTdName.Left(4)) { theApp.m_pTdManager->DeleteRspCETd(dwTdID); } else if (_T("ERIR") == szTdName.Left(4)) {theApp.m_pTdManager->DeleteRsp2DTd(dwTdID); } else if (_T("ERTR") == szTdName.Left(4)) {theApp.m_pTdManager->DeleteRsp3DTd(dwTdID); } else if (_T("VESI") == szTdName.Left(4)) {theApp.m_pTdManager->DeleteIpspCETd(dwTdID);} else if (_T("ERII") == szTdName.Left(4)) {theApp.m_pTdManager->DeleteIpsp2DTd(dwTdID);} else if (_T("ERTI") == szTdName.Left(4)) {theApp.m_pTdManager->DeleteIpsp3DTd(dwTdID);} else if (_T("VESS") == szTdName.Left(4)) {theApp.m_pTdManager->DeleteSPCETd(dwTdID); } else if (_T("ERIS") == szTdName.Left(4)) {theApp.m_pTdManager->DeleteSP2DTd(dwTdID); } else if (_T("ERTS") == szTdName.Left(4)) {theApp.m_pTdManager->DeleteSP3DTd(dwTdID); }*/ //更新任务参数信息 theApp.m_pTdManager->OnlineSevTDListSynToDB(&stTaskArg, m_szDeSN); } else { //新建任务并插入任务参数信息 dwTdID = theApp.m_pTdManager->OnLineImportTdHeadToDB(&stTaskArg, m_szDeSN); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////云端接地电阻信息存到数据库//////////////////////////////////////////////// char chStr[2700] = { 0 }; memcpy(chStr, &stTaskArg.ucTaskID, MAX_NAME_LEN* sizeof(BYTE)); UINT32 uiStartElec = htonl(stTaskArg.uiStartElec); //转网络字节序给云端 UINT32 uiEndElec = htonl(stTaskArg.uiEndElec); memcpy(&chStr[MAX_NAME_LEN* sizeof(BYTE)], &uiStartElec, sizeof(UINT32)); memcpy(&chStr[MAX_NAME_LEN* sizeof(BYTE)+sizeof(UINT32)], &uiEndElec, sizeof(UINT32)); int iSendLen = MAX_NAME_LEN * sizeof(BYTE)+2 * sizeof(UINT32); if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_REQ_DOWNLOAD_RG_INFO, 0xFFFFFFFF, 1, (char*)chStr,iSendLen)) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Download task ag send failed.")); return; } INT32 cTotalElec = (stTaskArg.uiEndElec - stTaskArg.uiStartElec + 1); int iRevLen = cTotalElec * sizeof(STMeasuSigGRResult) + sizeof(INT32) + MAX_NAME_LEN; if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chStr, &iLen, iRevLen, 5000)) { INT32* pTotalElec = (INT32*)(&chStr[MAX_NAME_LEN]); INT32 chRecElenNum = ntohl(*pTotalElec); if ((iLen < iRevLen) || (cTotalElec != chRecElenNum)) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Download task Rg recv failed.")); //return; } else { ///////存入数据库RG表中 if (!bTaskExistFlg) { /*for (int i = 0; i < cTotalElec; i++) { char *pData = (&chStr[sizeof(INT32) + MAX_NAME_LEN + i*sizeof(STMeasuSigGRResult)]); m_TaskdDBOper.UpdateGrData(dwTdID, pData, stTaskArg.stMeasuArg.ucSptType, 1); }*/ m_TaskdDBOper.UpdateGrData(dwTdID, &chStr[sizeof(INT32) + MAX_NAME_LEN], stTaskArg.stMeasuArg.ucSptType, 1); } else { m_TaskdDBOper.InsertGrData(dwTdID, (DWORD)cTotalElec, &chStr[sizeof(INT32) + MAX_NAME_LEN], stTaskArg.stMeasuArg.ucSptType); } } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////云端测试点数据到数据库//////////////////////////////////////////////////////// int i = 0; UINT32 uiStartPoint; UINT32 uiEndPoint; STQueryTaskBasicInfo stTaskBasicInfo; m_TaskdDBOper.QueryTdBasicInfo(dwTdID, &stTaskBasicInfo); for (i = MAX_DOWNLOCAD_POINT; i < stTaskArg.uiTotalNum; i++) { if (stTaskArg.uiTotalNum - i < MAX_DOWNLOCAD_POINT) { break; } if (i >= MAX_DOWNLOCAD_POINT && 0 != i % MAX_DOWNLOCAD_POINT) { continue; } memcpy(chStr, &stTaskArg.ucTaskID, MAX_NAME_LEN * sizeof(BYTE)); uiStartPoint = i - MAX_DOWNLOCAD_POINT + 1; uiEndPoint = i; UINT32 uiNetStartPoint = htonl(uiStartPoint); //转网络序给云端 UINT32 uiNetEndPoint = htonl(uiEndPoint); memcpy(&chStr[MAX_NAME_LEN * sizeof(BYTE)], &uiNetStartPoint, sizeof(UINT32)); memcpy(&chStr[MAX_NAME_LEN * sizeof(BYTE)+sizeof(UINT32)], &uiNetEndPoint, sizeof(UINT32)); SynOlDownData(chStr, MAX_NAME_LEN * sizeof(BYTE)+2 * sizeof(UINT32), uiStartPoint, uiEndPoint, bTaskExistFlg, stTaskArg, stTaskBasicInfo.iTdChannelID); } //////少于50个点或剩余不足50个点的数据传输//// //UINT32 uiNoSendPoint = (stTaskArg.uiTotalNum % MAX_DOWNLOCAD_POINT); //if (50 > stTaskArg.uiTotalNum || 0 < uiNoSendPoint) if (MAX_DOWNLOCAD_POINT > stTaskArg.uiTotalNum) { i = 0;} for (; i <= stTaskArg.uiTotalNum; i++) { memcpy(chStr, &stTaskArg.ucTaskID, MAX_NAME_LEN * sizeof(BYTE)); uiStartPoint = i;// stTaskArg.uiTotalNum - uiNoSendPoint + 1; uiEndPoint = i;// stTaskArg.uiTotalNum; UINT32 uiNetStartPoint = htonl(uiStartPoint); //转网络序给云端 UINT32 uiNetEndPoint = htonl(uiEndPoint); memcpy(&chStr[MAX_NAME_LEN * sizeof(BYTE)], &uiNetStartPoint, sizeof(UINT32)); memcpy(&chStr[MAX_NAME_LEN * sizeof(BYTE)+sizeof(UINT32)], &uiNetEndPoint, sizeof(UINT32)); SynOlDownData(chStr, MAX_NAME_LEN * sizeof(BYTE)+2 * sizeof(UINT32), uiStartPoint, uiEndPoint, bTaskExistFlg, stTaskArg, stTaskBasicInfo.iTdChannelID); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////刷新表格任务状态////////////////////////////////////////////////////////////// UINT32 uiTotalNum; CString szTotalNum; theApp.m_pTdManager->InitialTDListByOnLineForSyn(this->m_LocalTdList, this->m_szDeSN,uiTotalNum); szTotalNum.Format("%u",uiTotalNum); m_LocalTotalNum.SetWindowTextA(_T(szTotalNum)); } AfxMessageBox(_T("Task download to succeed")); theApp.m_NetWorkOper.SetSuspendForThread(false); } //trust loop tasks to cloud server void OnLineSynTdDlg::OnBnClickedSynOlTask() { CString szListStr; STTaskListItem stTaskArg; // TODO: 在此添加控件通知处理程序代码 POSITION pos = m_SevTdList.GetFirstSelectedItemPosition(); if (pos == NULL) { AfxMessageBox(_T("Please select Sever's list the task to trust !")); return; } DialUploadLoopTask * dlg; dlg = new DialUploadLoopTask(); CString szDevID = m_szDeSN.Mid(2); dlg->m_uiGD10ID = atoi(szDevID); dlg->m_uiPLCID = m_uiPlcID; //CList stTaskArglist; while (pos) { int nItem = m_SevTdList.GetNextSelectedItem(pos); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 0); strncpy(stTaskArg.szTDName, szListStr, 60 * sizeof(BYTE)); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 2); strncpy(stTaskArg.szTaskID, szListStr, MAX_NAME_LEN* sizeof(BYTE)); szListStr.Empty(); //szListStr = m_SevTdList.GetItemText(nItem, 19); //stTaskArg.eSynStatus = atoi(szListStr); dlg->m_TaskList.AddTail(stTaskArg); } //dlg->m_stTaskArglist = stTaskArglist; dlg->DoModal(); } //Synchronization loop task's parameter to local. void OnLineSynTdDlg::OnBnClickedSynOlArg() { // TODO: 在此添加控件通知处理程序代码 char chMsgSyn[1024] = { 0 }; char chSendStr[210] = { 0 }; int iLen = 0; CString szDevID = m_szDeSN.Mid(2); UINT32 uiDevID = atoi(szDevID); UINT32 uiTaskNum = 0; //SYSTEMTIME sysTm; time_t tm; //GetSystemTime(&sysTm); int uiCurTime = (int)time(&tm); uiCurTime += 3600 * 8; int uiStartTime = uiCurTime - 30 * 24 * 3600; STLoopTaskTable *pstLoopTask = NULL; UINT32 uiLoopTaskNum = 0; theApp.m_NetWorkOper.SetSuspendForThread(true); ///////////////////////////////////////////////////////同步任务列表//////////////////////////////////////////////// uiDevID = htonl(uiDevID); uiCurTime = htonl(uiCurTime); uiStartTime = htonl(uiStartTime); memcpy(chSendStr, &uiDevID, sizeof(UINT32)); memcpy(&chSendStr[sizeof(UINT32)], &uiStartTime, sizeof(UINT32)); memcpy(&chSendStr[2 * sizeof(UINT32)], &uiCurTime, sizeof(UINT32)); if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_REQ_DOWNLOAD_LOOP_TABLE, 0xFFFFFFFF, 1, chSendStr, 3 * sizeof(UINT32))) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Synchronization loop task table send failed.")); return; } if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chMsgSyn, &iLen, 1023, 5000)) { memcpy(&uiLoopTaskNum, chMsgSyn, sizeof(uiLoopTaskNum)); uiLoopTaskNum = ntohl(uiLoopTaskNum); if (iLen < 3 && uiLoopTaskNum < 1) { AfxMessageBox(_T("Synchronization loop task table to failed. Can't find loop task.")); theApp.m_NetWorkOper.SetSuspendForThread(false); return; } } DialLoopTaskQuery * dlg; dlg = new DialLoopTaskQuery(); CString strTaskID; for (int i = 0; i < uiLoopTaskNum; i++) { pstLoopTask = (STLoopTaskTable*)&chMsgSyn[sizeof(uiLoopTaskNum)+i*sizeof(STLoopTaskTable)]; strTaskID.Empty(); strTaskID += pstLoopTask->ucTaskID; if (strTaskID.FindOneOf("LOOP") == -1) { continue; } pstLoopTask->uiStartTime = ntohl(pstLoopTask->uiStartTime); pstLoopTask->uiEndTime = ntohl(pstLoopTask->uiEndTime); dlg->m_szArrayLoopTaskID.Add(strTaskID); dlg->m_LoopTablelist.AddTail(*pstLoopTask); } dlg->DoModal(); if (dlg->m_szArrayLoopTaskID.GetSize() <= 0) { return; } CString szTaskID; CStringArray szArrayID; STLoopTaskInfo stLoopTaskInfo; STLoopTaskInfo *pstLoopTaskInfo = &stLoopTaskInfo; char *pcTaskID = NULL; //for (int i = 0; i < uiLoopTaskNum; i++) for(int i = 0; i < dlg->m_szArrayLoopTaskID.GetSize(); i++) { //pstLoopTask = (STLoopTaskTable*)&chMsgSyn[sizeof(uiLoopTaskNum)+i*sizeof(STLoopTaskTable)]; memcpy(pstLoopTask->ucTaskID, dlg->m_szArrayLoopTaskID.GetAt(i), sizeof(pstLoopTask->ucTaskID)); szTaskID.Empty(); szTaskID += pstLoopTask->ucTaskID; if (szTaskID.FindOneOf("LOOP") == -1) { continue; } if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_REQ_DOWNLOAD_LOOP_SUB_TABLE, 0xFFFFFFFF, 1, pstLoopTask->ucTaskID, sizeof(pstLoopTask->ucTaskID))) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Synchronization loop sub task send failed.")); return; } if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chMsgSyn, &iLen, 1023, 5000)) { pstLoopTaskInfo = (STLoopTaskInfo *)chMsgSyn; if (iLen < (sizeof(STLoopTaskInfo)+pstLoopTaskInfo->uiSubTaskNum*sizeof(pstLoopTaskInfo->ucTaskID))) { AfxMessageBox(_T("Synchronization loop sub task table to failed. Receiv Length is error.")); theApp.m_NetWorkOper.SetSuspendForThread(false); return; } if (0 != memcmp(pstLoopTask->ucTaskID,pstLoopTaskInfo->ucTaskID,sizeof(pstLoopTaskInfo->ucTaskID))) { AfxMessageBox(_T("Synchronization loop sub task table to failed. Receiv loop task name is error.")); theApp.m_NetWorkOper.SetSuspendForThread(false); return; } //取子任务名字 pcTaskID = (char*)&chMsgSyn[sizeof(STLoopTaskInfo)]; for (int j = 0; j < pstLoopTaskInfo->uiSubTaskNum; j++) { szTaskID.Empty(); pcTaskID = (char*)&pcTaskID[sizeof(char)*40*j]; memcpy(&szTaskID, pcTaskID, sizeof(char)* 40); szArrayID.Add(szTaskID); } //写入数据库 //查询子任务信息 int iListIndex = m_SevTdList.GetItemCount(); UINT32 *uiRevData = NULL; STRemTaskArg * ptTaskArg = NULL; for (int j = 0; j < pstLoopTaskInfo->uiSubTaskNum; j++) { iListIndex += j; chSendStr[0] = 0; chSendStr[1] = 0; chSendStr[2] = 0; chSendStr[3] = 1;// uiGetNum; strncpy(&chSendStr[4], szArrayID.GetAt(j), MAX_NAME_LEN*sizeof(BYTE)); int iSendLen = sizeof(UINT32)+sizeof(BYTE)*MAX_NAME_LEN;// *uiGetNum; if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_REQ_DOWNLOAD_TASK_ARG, 0xFFFFFFFF, 1, chSendStr, iSendLen)) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Synchronization task arguments send failed.")); return; } if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chMsgSyn, &iLen, 1000, 5000)) { uiRevData = (UINT32*)(chMsgSyn); UINT32 uiRevDataNum = ntohl(uiRevData[0]); if ((uiRevDataNum < 1) || (iLen < (sizeof(UINT32)+uiRevDataNum * sizeof(STRemTaskArg)))) { theApp.m_NetWorkOper.SetSuspendForThread(false); return; } ptTaskArg = (STRemTaskArg *)(chMsgSyn + sizeof(UINT32)); int iIndex = (int)VAL_ZERO; CString str; for (iIndex = 0; iIndex < uiRevDataNum; iIndex++) { ptTaskArg[iIndex].stMeasuArg.iSAInterval = ntohl(ptTaskArg[iIndex].stMeasuArg.iSAInterval); //ptTaskArg[iIndex].stMeasuArg.fElecSpace = tcp_ntohf(ptTaskArg[iIndex].stMeasuArg.fElecSpace); ptTaskArg[iIndex].uiStartElec = ntohl(ptTaskArg[iIndex].uiStartElec); ptTaskArg[iIndex].uiEndElec = ntohl(ptTaskArg[iIndex].uiEndElec); ptTaskArg[iIndex].uiStartLayer = ntohl(ptTaskArg[iIndex].uiStartLayer); ptTaskArg[iIndex].uiEndLayer = ntohl(ptTaskArg[iIndex].uiEndLayer); ptTaskArg[iIndex].uiStartTime = ntohl(ptTaskArg[iIndex].uiStartTime); ptTaskArg[iIndex].uiEndTime = ntohl(ptTaskArg[iIndex].uiEndTime); ptTaskArg[iIndex].uiTimerTime = ntohl(ptTaskArg[iIndex].uiTimerTime); ptTaskArg[iIndex].uiTotalNum = ntohl(ptTaskArg[iIndex].uiTotalNum); time_t tmTime = ptTaskArg[iIndex].uiStartTime; CString szTimeStart = Tm2GmtStr(tmTime); //szTimeStart.Format(_T("%d-%d-%d %d:%d:%d"), p->tm_year + 1900, p->tm_mon + 1, p->tm_mday, p->tm_hour,p->tm_min,p->tm_sec); tmTime = ptTaskArg[iIndex].uiEndTime; CString szTimeEnd = Tm2GmtStr(tmTime); //p = localtime(&tmTime); //szTimeStart.Format(_T("%d-%d-%d %d:%d:%d"), p->tm_year + 1900, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec); tmTime = ptTaskArg[iIndex].uiTimerTime; CString szTimeTimer = Tm2GmtStr(tmTime); //p = localtime(&tmTime); //szTimeStart.Format(_T("%d-%d-%d %d:%d:%d"), p->tm_year + 1900, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec); m_SevTdList.InsertItem(i, _T("")); m_SevTdList.SetItemText(iIndex + iListIndex, 0, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].ucTDName); m_SevTdList.SetItemText(iIndex + iListIndex, 1, (LPCTSTR)(_bstr_t)_T("LOOP")); m_SevTdList.SetItemText(iIndex + iListIndex, 2, (LPCTSTR)(_bstr_t)szArrayID.GetAt(j)); m_SevTdList.SetItemText(iIndex + iListIndex, 3, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].ucSciptName); m_SevTdList.SetItemText(iIndex + iListIndex, 4, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].stMeasuArg.ucTestType); m_SevTdList.SetItemText(iIndex + iListIndex, 5, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].stMeasuArg.ucTxPeriod); m_SevTdList.SetItemText(iIndex + iListIndex, 6, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].stMeasuArg.ucArrayType); m_SevTdList.SetItemText(iIndex + iListIndex, 7, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].stMeasuArg.ucCableLayout); m_SevTdList.SetItemText(iIndex + iListIndex, 8, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].stMeasuArg.ucStacking); str.Empty(); str.Format(_T("%u"),ptTaskArg[iIndex].stMeasuArg.iSAInterval); m_SevTdList.SetItemText(iIndex + iListIndex, 9, (LPCTSTR)(_bstr_t)str); m_SevTdList.SetItemText(iIndex + iListIndex, 10, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].stMeasuArg.ucSptType); //m_SevTdList.SetItemText(iIndex + iListIndex, 11, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].stMeasuArg.fElecSpace); str.Empty(); str.Format(_T("%u"),ptTaskArg[iIndex].uiStartElec); m_SevTdList.SetItemText(iIndex + iListIndex, 12, (LPCTSTR)(_bstr_t)str); str.Empty(); str.Format(_T("%u"),ptTaskArg[iIndex].uiEndElec); m_SevTdList.SetItemText(iIndex + iListIndex, 13, (LPCTSTR)(_bstr_t)str); str.Empty(); str.Format(_T("%u"),ptTaskArg[iIndex].uiStartLayer); m_SevTdList.SetItemText(iIndex + iListIndex, 14, (LPCTSTR)(_bstr_t)str); str.Empty(); str.Format(_T("%u"),ptTaskArg[iIndex].uiEndLayer); m_SevTdList.SetItemText(iIndex + iListIndex, 15, (LPCTSTR)(_bstr_t)str); m_SevTdList.SetItemText(iIndex + iListIndex, 16, (LPCTSTR)(_bstr_t)szTimeStart); m_SevTdList.SetItemText(iIndex + iListIndex, 17, (LPCTSTR)(_bstr_t)szTimeEnd); m_SevTdList.SetItemText(iIndex + iListIndex, 18, (LPCTSTR)(_bstr_t)szTimeTimer); str.Empty(); str.Format(_T("%u"),ptTaskArg[iIndex].uiTotalNum); m_SevTdList.SetItemText(iIndex + iListIndex, 19, (LPCTSTR)(_bstr_t)str); m_SevTdList.SetItemText(iIndex + iListIndex, 20, (LPCTSTR)(_bstr_t)ptTaskArg[iIndex].ucOrgFlg); } } } } } dlg->m_szArrayLoopTaskID.RemoveAll(); theApp.m_NetWorkOper.SetSuspendForThread(false); } //Cancel loop tasks void OnLineSynTdDlg::OnBnClickedSynOlDate() { // TODO: 在此添加控件通知处理程序代码 char chMsgSyn[4000] = { 0 }; char chSendStr[50] = { 0 }; int iLen = 0; CString szDevID = m_szDeSN.Mid(2); UINT32 uiDevID = atoi(szDevID); UINT32 uiTaskNum = 0; //SYSTEMTIME sysTm; time_t tm; //GetSystemTime(&sysTm); int uiCurTime = (int)time(&tm); uiCurTime += 3600 * 8; int uiStartTime = uiCurTime - 30 * 24 * 3600; STLoopTaskTable *pstLoopTask = NULL; UINT32 uiLoopTaskNum = 0; if (NULL == chMsgSyn) { AfxMessageBox(_T("There is not enough available memory.")); return; } theApp.m_NetWorkOper.SetSuspendForThread(true); ///////////////////////////////////////////////////////同步任务列表//////////////////////////////////////////////// uiDevID = htonl(uiDevID); uiCurTime = htonl(uiCurTime); uiStartTime = htonl(uiStartTime); memcpy(chSendStr, &uiDevID, sizeof(UINT32)); memcpy(&chSendStr[sizeof(UINT32)], &uiStartTime, sizeof(UINT32)); memcpy(&chSendStr[2 * sizeof(UINT32)], &uiCurTime, sizeof(UINT32)); if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_REQ_DOWNLOAD_LOOP_TABLE, 0xFFFFFFFF, 1, chSendStr, 3 * sizeof(UINT32))) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Synchronization loop task table send failed.")); return; } if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chMsgSyn, &iLen, sizeof(chMsgSyn), 5000)) { memcpy(&uiLoopTaskNum, chMsgSyn, sizeof(uiLoopTaskNum)); uiLoopTaskNum = ntohl(uiLoopTaskNum); if (iLen < 3 && uiLoopTaskNum < 1) { AfxMessageBox(_T("Synchronization loop task table to failed. Can't find loop task.")); theApp.m_NetWorkOper.SetSuspendForThread(false); return; } } CString szTaskID; CStringArray szArrayID; //STLoopTaskInfo *pstLoopTaskInfo; DialLoopTaskCancel * dlg; dlg = new DialLoopTaskCancel(); //CList LoopTablelist; char *pcTaskID = NULL; for (int i = 0; i < uiLoopTaskNum; i++) { pstLoopTask = (STLoopTaskTable*)&chMsgSyn[sizeof(uiLoopTaskNum)+i*sizeof(STLoopTaskTable)]; szTaskID.Empty(); szTaskID += pstLoopTask->ucTaskID; if (szTaskID.FindOneOf("LOOP") == -1) { continue; } pstLoopTask->uiStartTime = ntohl(pstLoopTask->uiStartTime); pstLoopTask->uiEndTime = ntohl(pstLoopTask->uiEndTime); //pstLoopTask->ucTaskName //LoopTablelist.AddTail(*pstLoopTask); dlg->m_LoopTablelist.AddTail(*pstLoopTask); } //dlg->m_LoopTablelist = LoopTablelist; dlg->DoModal(); } //void OnLineSynTdDlg::TrusteeLocalTaskToSev(int iListItm) //{ // // TODO: 在此添加控件通知处理程序代码 // CString szListStr = ""; // STTrusteeTaskTable stTaskTable; // char chStr[20] = { 0 }; // char chTaskID[41] = { 0 }; // int iLen = 0; // theApp.m_NetWorkOper.SetSuspendForThread(true); // // CString szDevSN = m_szDeSN; // UINT32 uiDevID = htonl(atoi(szDevSN.Mid(2))); // stTaskTable.uiGD10Id = uiDevID; // stTaskTable.uiPlcId = htonl(m_uiPlcID); // stTaskTable.ucTeatMode = EN_MANUAL_TASK; // //while (pos) // { // int nItem = iListItm; // CString szTaskStatus = m_LocalTdList.GetItemText(nItem, 1); // if (szTaskStatus != "") // { // AfxMessageBox(_T("Task trustee to failed! The task has been uploaded, whether the server data has been overwritten")); // return; // } // // if (EN_MANUAL_TASK == stTaskTable.ucTeatMode) // { // szListStr.Empty(); // szListStr = m_LocalTdList.GetItemText(nItem, 2); // strncpy(stTaskTable.Task.stManualTask.ucTaskID, szListStr, MAX_NAME_LEN * sizeof(BYTE)); // stTaskTable.Task.stManualTask.uiStartPoint = htonl(1); // szListStr.Empty(); // szListStr = m_LocalTdList.GetItemText(nItem, 19); // stTaskTable.Task.stManualTask.uiEndPoint = htonl(atoi(szListStr)); // // if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_REQ_COLLOCATION, 0xFFFFFFFF, 1, (char*)&stTaskTable, sizeof(STTrusteeTaskTable))) // { // theApp.m_NetWorkOper.SetSuspendForThread(false); // AfxMessageBox(_T("Download task ag send failed.")); // return; // } // if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chStr, &iLen, 20, 5000)) // { // if ((iLen < iLen) || (EN_RECV_SUCCESS != chStr[0])) // { // theApp.m_NetWorkOper.SetSuspendForThread(false); // CString szMsg; // szMsg.Format(_T("Task '%s' trustee to failed."), stTaskTable.Task.stManualTask.ucTaskID); // AfxMessageBox(szMsg); // return; // } // } // } // else if (EN_TIMER_TASK == stTaskTable.ucTeatMode) // { // time_t tm; // int uiTime = htonl((int)time(&tm)); // stTaskTable.Task.stTimerTask.uiCurTime = uiTime; // stTaskTable.Task.stTimerTask.uiTaksNum = htonl(1); // stTaskTable.Task.stTimerTask.ucTimerType = 0; // stTaskTable.Task.stTimerTask.ucLoopNum = 0; // stTaskTable.Task.stTimerTask.uiTaskInterval = 0; // // szListStr.Empty(); // szListStr = m_LocalTdList.GetItemText(nItem, 2); // strncpy(chTaskID, szListStr, MAX_NAME_LEN * sizeof(BYTE)); // stTaskTable.Task.stTimerTask.ucTaskID = chTaskID; // // if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_REQ_COLLOCATION, 0xFFFFFFFF, 1, (char*)&stTaskTable, sizeof(STTrusteeTaskTable))) // { // theApp.m_NetWorkOper.SetSuspendForThread(false); // AfxMessageBox(_T("Download task ag send failed.")); // return; // } // if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chStr, &iLen, 20, 5000)) // { // if ((iLen < iLen) || (EN_RECV_SUCCESS != chStr[0])) // { // theApp.m_NetWorkOper.SetSuspendForThread(false); // CString szMsg; // szMsg.Format(_T("Task '%s' trustee to failed."), stTaskTable.Task.stManualTask.ucTaskID); // AfxMessageBox(szMsg); // return; // } // } // } // } // AfxMessageBox(_T("Task trustee to succeed")); // theApp.m_NetWorkOper.SetSuspendForThread(false); //} void OnLineSynTdDlg::OnBnClickedSynOlTrustee() { // TODO: 在此添加控件通知处理程序代码 //TrusteeLocalTaskToSev(nItem); CString szListStr = ""; STTrusteeTaskTable stTaskTable; char chStr[20] = {0}; char chTaskName[40] = { 0 }; int iLen = 0; POSITION pos = m_SevTdList.GetFirstSelectedItemPosition(); UINT32 uiTaskNum = 0; if (pos == NULL) { AfxMessageBox(_T("Please select Sever's list the task to upload !")); return; } theApp.m_NetWorkOper.SetSuspendForThread(true); CString szDevSN = m_szDeSN; UINT32 uiDevID = htonl(atoi(szDevSN.Mid(2))); stTaskTable.uiGD10Id = uiDevID; stTaskTable.uiPlcId = htonl(m_uiPlcID); while (pos) { int nItem = m_SevTdList.GetNextSelectedItem(pos); CString szTaskStatus = m_SevTdList.GetItemText(nItem, 1); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 2); BYTE ucSevTaskState = ReturnServerTaskState(szListStr); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 0); CString szTaskName = szListStr; if (0)//EN_TASK_STATE_NO_TRUST != ucSevTaskState) { CString szStrMsg; if (EN_TASK_STATE_FINISH != ucSevTaskState) { szStrMsg.Empty(); szStrMsg.Format(_T("Task %s has been managed at server! Can't trust again!"), szTaskName); AfxMessageBox(szStrMsg); continue; } else { szStrMsg.Empty(); szStrMsg.Format(_T("Task %s has been finished at server!!whether test again and overwrite?"), szTaskName); if (IDYES != ::MessageBox(NULL, szStrMsg, "Notice", MB_YESNO)) { continue; } } } //判断是否手动任务 szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 18); CString szTimerStr = szListStr; UINT32 uiTimerTime = Str2GmtTm(szListStr); //Str2LocalTm(szListStr); time_t tm; UINT32 uiCurTime =(UINT32)time(&tm); if (uiTimerTime > uiCurTime) //大于当前时间秒才认为是定时任务,未设置或者时间失效的都为手动任务 { stTaskTable.ucTeatMode = EN_TIMER_TASK; } else { if (uiTimerTime > 0)//定时任务已过现有时间 { szListStr.Empty(); szListStr.Format(_T("Timing task[%s]'s time[%s] has overtime. Whether retest and overlay existing data?"), szTaskName, szTimerStr); if (IDYES != ::MessageBox(NULL, szListStr, "Notice", MB_YESNO)) { continue; } } stTaskTable.ucTeatMode = EN_MANUAL_TASK; } if (1) //EN_MANUAL_TASK == stTaskTable.ucTeatMode) { szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 2); strncpy(stTaskTable.Task.stManualTask.ucTaskID, szListStr, MAX_NAME_LEN * sizeof(BYTE)); stTaskTable.Task.stManualTask.uiStartPoint = htonl(1); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 19); stTaskTable.Task.stManualTask.uiEndPoint = htonl(atoi(szListStr)); if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_REQ_COLLOCATION, 0xFFFFFFFF, 1, (char*)&stTaskTable, sizeof(STTrusteeTaskTable))) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Trust task info send failed.")); return; } if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chStr, &iLen, 10, 5000)) { if ((iLen < iLen) || (EN_RECV_SUCCESS != chStr[0])) { theApp.m_NetWorkOper.SetSuspendForThread(false); CString szMsg; szMsg.Format(_T("Task '%s' trustee to failed."), stTaskTable.Task.stManualTask.ucTaskID); AfxMessageBox(szMsg); return; } } } //else if (EN_TIMER_TASK == stTaskTable.ucTeatMode) //{ // stTaskTable.Task.stTimerTask.uiCurTime = htonl(uiCurTime); // stTaskTable.Task.stTimerTask.uiTaksNum = htonl(1); // stTaskTable.Task.stTimerTask.ucTimerType = 0; // stTaskTable.Task.stTimerTask.ucLoopNum = 0; // stTaskTable.Task.stTimerTask.uiTaskInterval = 0; // szListStr.Empty(); // szListStr = m_SevTdList.GetItemText(nItem, 2); // //strncpy(chTaskName, szListStr, MAX_NAME_LEN * sizeof(BYTE)); // strncpy(stTaskTable.Task.stTimerTask.ucTaskID, szListStr, MAX_NAME_LEN * sizeof(BYTE)); // uiTaskNum = 1; // int iLen = sizeof(STTrusteeTaskTable); // if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_REQ_COLLOCATION, 0xFFFFFFFF, 1, (char*)&stTaskTable, iLen)) // { // theApp.m_NetWorkOper.SetSuspendForThread(false); // AfxMessageBox(_T("Trust task info send failed.")); // return; // } // if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chStr, &iLen, 20, 5000)) // { // if ((iLen < iLen) || (EN_RECV_SUCCESS != chStr[0])) // { // theApp.m_NetWorkOper.SetSuspendForThread(false); // CString szMsg; // szMsg.Format(_T("Task '%s' trustee to failed."), szTaskName); // AfxMessageBox(szMsg); // return; // } // } //} } AfxMessageBox(_T("Task trustee to finished")); theApp.m_NetWorkOper.SetSuspendForThread(false); } #define MAX_SEND_POINT_NUM (10) //一次最多传输数据点 bool OnLineSynTdDlg::UploadRes2DData(char *cTaskName) { _RecordsetPtr pRecTd = NULL; CString szSql = _T(""); UINT32 dwTDID; //任务ID UINT32 dwTDChId; //任务通道数据ID STTaskDataRes stTaskDataRes; //一次传15个点 STSynTaskDataRes stSynTask; char chSendstr[MAX_NAME_LEN * sizeof(BYTE)+sizeof(UINT32)+sizeof(STTaskDataRes)*MAX_SEND_POINT_NUM] = { 0 }; char chMsgSyn[10] = { 0 }; INT32 iLen = 0; UINT32 uiTotalNum = 0; int iDataStart = MAX_NAME_LEN * sizeof(BYTE)+sizeof(UINT32); memcpy(stSynTask.ucTaskID, cTaskName, sizeof(stSynTask.ucTaskID)); stSynTask.dwPointNum = MAX_SEND_POINT_NUM; stSynTask.dwPointNum = htonl(stSynTask.dwPointNum); //stSynTask.ptTaskData = stTaskDataRes; memcpy(chSendstr,&stSynTask, sizeof(STSynTaskDataRes)); pRecTd.CreateInstance(_uuidof(Recordset)); szSql.Empty(); szSql.Format(_T("select ID,TPamount from td where TDCN = '%s'"), cTaskName); pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); if (!pRecTd->adoEOF) { uiTotalNum = pRecTd->GetCollect(_T("TPamount")).iVal; dwTDID = pRecTd->GetCollect(_T("ID")).iVal; } pRecTd->Close(); szSql.Empty(); szSql.Format(_T("select ID from tdchannel where TDID = %u"), dwTDID); pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); if (!pRecTd->adoEOF) { dwTDChId = pRecTd->GetCollect(_T("ID")).iVal; } pRecTd->Close(); _RecordsetPtr pRecConList = NULL; pRecConList.CreateInstance(_uuidof(Recordset)); szSql.Empty(); szSql.Format(_T("select TSN,C1,C2,P1,P2,N,K,I,V,R0,SP,R0_LC from td2dcon where TCHID = %u"), dwTDChId); try { pRecConList->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); } catch (_com_error e) { AfxMessageBox((LPCTSTR)e.Description()); } try { CString strDBVal = _T(""); float fV = 0, fI = 0, fR = 0; UINT32 iSendLen = 0; int iIndex = (int)VAL_ZERO; int i=0; while ((short)VAL_ZERO == pRecConList->adoEOF) { stTaskDataRes.dwID = (UINT32)pRecConList->GetCollect(_T("TSN")).uintVal; stTaskDataRes.fA = (float)pRecConList->GetCollect(_T("C1")).iVal;//一维请用.fltVal stTaskDataRes.fB = (float)pRecConList->GetCollect(_T("C2")).iVal; stTaskDataRes.fM = (float)pRecConList->GetCollect(_T("P1")).iVal; stTaskDataRes.fN = (float)pRecConList->GetCollect(_T("P2")).iVal; stTaskDataRes.fK = (float)pRecConList->GetCollect(_T("K")).fltVal; stTaskDataRes.ucStack = (BYTE)pRecConList->GetCollect(_T("N")).bVal; stTaskDataRes.fV = (float)pRecConList->GetCollect(_T("V")).fltVal; stTaskDataRes.fI = (float)pRecConList->GetCollect(_T("I")).fltVal; stTaskDataRes.fR0 = (float)pRecConList->GetCollect(_T("R0")).fltVal; stTaskDataRes.fSP = (float)pRecConList->GetCollect(_T("SP")).fltVal; stTaskDataRes.ucAlram = 0;// (BYTE)pRecConList->GetCollect(_T("N")).bVal; //未存数据库 stTaskDataRes.fR0_LC = (float)pRecConList->GetCollect(_T("R0_LC")).fltVal; iSendLen = MAX_NAME_LEN * sizeof(BYTE)+sizeof(UINT32)+sizeof(STTaskDataRes)*MAX_SEND_POINT_NUM;//sizeof(STTaskDataRes); stTaskDataRes.dwID = htonl(stTaskDataRes.dwID); stTaskDataRes.fA = tcp_htonf(stTaskDataRes.fA); stTaskDataRes.fB = tcp_htonf(stTaskDataRes.fB); stTaskDataRes.fM = tcp_htonf(stTaskDataRes.fM); stTaskDataRes.fN = tcp_htonf(stTaskDataRes.fN); stTaskDataRes.fK = tcp_htonf(stTaskDataRes.fK); stTaskDataRes.fV = tcp_htonf(stTaskDataRes.fV); stTaskDataRes.fI = tcp_htonf(stTaskDataRes.fI); stTaskDataRes.fR0 = tcp_htonf(stTaskDataRes.fR0); stTaskDataRes.fSP = tcp_htonf(stTaskDataRes.fSP); stTaskDataRes.fR0_LC = tcp_htonf(stTaskDataRes.fR0_LC); memcpy(&chSendstr[iDataStart + i*sizeof(STTaskDataRes)], &stTaskDataRes, sizeof(STTaskDataRes)); i = (iIndex+1)%MAX_SEND_POINT_NUM; if ((uiTotalNum >= MAX_SEND_POINT_NUM) && (0 == i)) { //填写数据 //memcpy(chSend, &stSynTask, MAX_NAME_LEN * sizeof(BYTE)+sizeof(UINT32)); //memcpy(chSend, &stTaskDataRes, sizeof(stTaskDataRes)); if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_UPLOAD_DATA_INF, 0xFFFFFFFF, 1, (char*)chSendstr, iSendLen)) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Upload task data send failed.")); return FALSE; } if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chMsgSyn, &iLen, sizeof(chMsgSyn), 5000)) { if ((iLen != sizeof(BYTE)) || (EN_RECV_SUCCESS != chMsgSyn[0])) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Upload task data replay failed.")); return FALSE; } } } if (uiTotalNum <= iIndex) { break; } iIndex++; pRecConList->MoveNext(); } //小于15个点的数发送 if ((uiTotalNum < MAX_SEND_POINT_NUM) || (1 < i)) { stSynTask.dwPointNum = i; stSynTask.dwPointNum = htonl(stSynTask.dwPointNum); memcpy(chSendstr, &stSynTask, iDataStart); iSendLen = MAX_NAME_LEN * sizeof(BYTE)+sizeof(UINT32)+sizeof(STTaskDataRes)*i; if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_UPLOAD_DATA_INF, 0xFFFFFFFF, 1, (char*)chSendstr, iSendLen)) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Upload task data send failed.")); return FALSE; } if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chMsgSyn, &iLen, sizeof(chMsgSyn), 5000)) { if ((iLen != sizeof(BYTE)) || (EN_RECV_SUCCESS != chMsgSyn[0])) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Upload task data replay failed.")); return FALSE; } } } } catch (_com_error e) { AfxMessageBox(e.Description()); } pRecConList->Close(); return true; } void OnLineSynTdDlg::OnBnClickedButtonDel() { // TODO: 在此添加控件通知处理程序代码 CString szListStr = ""; char chStr[20] = { 0 }; char chSendStr[MAX_NAME_LEN +1] = { 0 }; int iLen = 0; POSITION pos = m_SevTdList.GetFirstSelectedItemPosition(); if (pos == NULL) { AfxMessageBox(_T("Please select Sever's list the task to delete !")); return; } theApp.m_NetWorkOper.SetSuspendForThread(true); //CString szDevSN = m_szDeSN; //UINT32 uiDevID = htonl(atoi(szDevSN.Mid(2))); //memcpy(chSendStr, &uiDevID, sizeof(UINT32)); while (pos) { int nItem = m_SevTdList.GetNextSelectedItem(pos); CString szTaskStatus = m_SevTdList.GetItemText(nItem, 1); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 2); strncpy(chSendStr, szListStr, MAX_NAME_LEN * sizeof(BYTE)); BYTE ucSevTaskState = ReturnServerTaskState(szListStr); /*if (EN_TASK_STATE_NO_TRUST != ucSevTaskState) { CString szStrMsg; szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 0); szStrMsg.Empty(); szStrMsg.Format(_T("Task %s was trust at server! Can't delete! please cancal trust task at first!"), szListStr); AfxMessageBox(szStrMsg); continue; } if (EN_TASK_STATE_TESTING == ucSevTaskState) { CString szStrMsg; szListStr.Empty(); szListStr = m_LocalTdList.GetItemText(nItem, 0); szStrMsg.Empty(); szStrMsg.Format(_T("Task %s was testing at server! Can't cancel trust!Cancel,please stop task at first!"), szListStr); AfxMessageBox(szStrMsg); continue; } */ if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_REQ_TASK_DEL, 0xFFFFFFFF, 1, (char*)chSendStr, MAX_NAME_LEN)) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Msg delete task send failed.")); return; } if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chStr, &iLen, 20, 5000)) { if ((iLen < iLen) || (EN_RECV_SUCCESS != chStr[0])) { theApp.m_NetWorkOper.SetSuspendForThread(false); CString szMsg; szMsg.Format(_T("Task '%s' delete to failed."), szListStr); AfxMessageBox(szMsg); return; } } } AfxMessageBox(_T("Task delete to succeed")); theApp.m_NetWorkOper.SetSuspendForThread(false); } void OnLineSynTdDlg::OnBnClickedSynOlNoTrust() { // TODO: 在此添加控件通知处理程序代码 CString szListStr = ""; char chStr[20] = { 0 }; char chSendStr[MAX_NAME_LEN + sizeof(UINT32)+1] = { 0 }; int iLen = 0; POSITION pos = m_SevTdList.GetFirstSelectedItemPosition(); if (pos == NULL) { AfxMessageBox(_T("Please select Sever's list the task to cacal trust !")); return; } theApp.m_NetWorkOper.SetSuspendForThread(true); /*CString szDevSN = m_szDeSN; UINT32 uiDevID = htonl(atoi(szDevSN.Mid(2))); memcpy(chSendStr, &uiDevID, sizeof(UINT32));*/ while (pos) { int nItem = m_SevTdList.GetNextSelectedItem(pos); CString szTaskStatus = m_SevTdList.GetItemText(nItem, 1); szListStr.Empty(); szListStr = m_SevTdList.GetItemText(nItem, 2); strncpy(chSendStr, szListStr, MAX_NAME_LEN * sizeof(BYTE)); BYTE ucSevTaskState = ReturnServerTaskState(szListStr); if (EN_TASK_STATE_NO_TRUST == ucSevTaskState) { AfxMessageBox(_T("Task don't trust.")); continue; } //if (EN_TASK_STATE_FINISH == ucSevTaskState) //{ // CString szStrMsg; // szListStr.Empty(); // szListStr = m_LocalTdList.GetItemText(nItem, 0); // szStrMsg.Empty(); // szStrMsg.Format(_T("Task %s has finished at server! Can't cancel trust!"), szListStr); // AfxMessageBox(szStrMsg); // continue; //} //if (EN_TASK_STATE_TESTING == ucSevTaskState) //{ // CString szStrMsg; // szListStr.Empty(); // szListStr = m_LocalTdList.GetItemText(nItem, 0); // szStrMsg.Empty(); // szStrMsg.Format(_T("Task %s was testing at server! Can't cancel trust!Cancel,please stop task at first!"), szListStr); // AfxMessageBox(szStrMsg); // continue; //} if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_CANCEL_COLLOCATION, 0xFFFFFFFF, 1, (char*)chSendStr, MAX_NAME_LEN)) { theApp.m_NetWorkOper.SetSuspendForThread(false); AfxMessageBox(_T("Cancel task send failed.")); return; } if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chStr, &iLen, 20, 5000)) { if ((iLen < iLen) || (EN_RECV_SUCCESS != chStr[0])) { theApp.m_NetWorkOper.SetSuspendForThread(false); CString szMsg; szMsg.Format(_T("Task '%s' cancel trustee to failed."), szListStr); AfxMessageBox(szMsg); return; } } } AfxMessageBox(_T("Task cancel trustee to succeed")); theApp.m_NetWorkOper.SetSuspendForThread(false); }