Files
coco df489d5640 a
2026-07-03 16:05:30 +08:00

2029 lines
78 KiB
C++

// 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<STRemTaskArg, STRemTaskArg> 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<STLoopTaskTable,STLoopTaskTable> 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);
}