532 lines
19 KiB
C++
532 lines
19 KiB
C++
// DialUploadLoopTask.cpp : 实现文件
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "GeoMative.h"
|
|
#include "DialUploadLoopTask.h"
|
|
#include "afxdialogex.h"
|
|
#include "FileOperTools.h"
|
|
|
|
extern CGeoMativeApp theApp;
|
|
extern int g_UIOffset;
|
|
extern int g_iUILanguage;
|
|
extern SYSTEMTIME g_sysCurTime;
|
|
extern time_t Str2GmtTm(CString szTime);
|
|
extern int g_iTimeZone;
|
|
extern CString OnLineLocalTaskState(BYTE ucTaskStats);
|
|
extern char* G2U(const char* gb2312);
|
|
// DialUploadLoopTask 对话框
|
|
#define MODULE_NAME _T("DialUploadLoopTask")
|
|
IMPLEMENT_DYNAMIC(DialUploadLoopTask, CNetRequestDialog)
|
|
|
|
DialUploadLoopTask::DialUploadLoopTask(CWnd* pParent /*=NULL*/)
|
|
: CNetRequestDialog(DialUploadLoopTask::IDD, pParent)
|
|
{
|
|
//m_stTaskArglist = stTaskArglist;
|
|
}
|
|
|
|
DialUploadLoopTask::~DialUploadLoopTask()
|
|
{
|
|
}
|
|
|
|
void DialUploadLoopTask::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CNetRequestDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_STATIC_LOOP_TASK_ID, m_CStaticLoopID);
|
|
DDX_Control(pDX, IDC_LIST_LOOP_SUB_LIST, m_CListCtrlTask);
|
|
DDX_Control(pDX, IDC_EDIT_PLC_ID, m_CEditPlcID);
|
|
DDX_Control(pDX, IDC_EDIT_GD10_ID, m_CEidtGD20_ID);
|
|
DDX_Control(pDX, IDC_COMBO1, m_CComBoxLoopType);
|
|
DDX_Control(pDX, IDC_EDIT_LOOP_COUNT, m_CEditLoopCount);
|
|
DDX_Control(pDX, IDC_COMBO_LOOP_TIMER, m_CComBoxTimerType);
|
|
DDX_Control(pDX, IDC_DATETIMEPICKER_LOOP_START, m_CDTCtrlStartTime);
|
|
DDX_Control(pDX, IDC_DATETIMEPICKER_LOOP_END, m_CDTCtrlEndtime);
|
|
DDX_Control(pDX, IDC_DATETIMEPICKER_EVERY_TIME, m_CDTCtrlDayStart);
|
|
DDX_Control(pDX, IDC_DATETIMEPICKER_TASK_SPACK, m_CDTCtrlTaskSpace);
|
|
DDX_Control(pDX, IDC_STATIC_UPLOAD_LOOP_NUM, m_CStaticTaskNum);
|
|
DDX_Control(pDX, IDC_EDIT1, m_CEditTaskName);
|
|
DDX_Control(pDX, IDC_DATETIMEPICKER_START_T, m_CDTTimeStart);
|
|
DDX_Control(pDX, IDC_DATETIMEPICKER_LOOP_END_T, m_CDTTimeEnd);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(DialUploadLoopTask, CNetRequestDialog)
|
|
ON_BN_CLICKED(IDOK_UPLOAD_LOOP, &DialUploadLoopTask::OnBnClickedUploadLoop)
|
|
ON_BN_CLICKED(IDCANCEL_EXIT_UPLOAD, &DialUploadLoopTask::OnBnClickedExitUpload)
|
|
ON_CBN_SELCHANGE(IDC_COMBO1, &DialUploadLoopTask::OnCbnSelchangeTimerTypeCombo)
|
|
ON_MESSAGE(WM_MOVEITEM, DragMoveItem)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// DialUploadLoopTask 消息处理程序
|
|
|
|
|
|
BOOL DialUploadLoopTask::OnInitDialog()
|
|
{
|
|
CNetRequestDialog::OnInitDialog();
|
|
CString strColTitle;
|
|
int iColIndex = (int)VAL_ZERO;
|
|
|
|
m_CListCtrlTask.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES);
|
|
m_CStaticTaskNum.SetWindowTextA(_T("0"));
|
|
|
|
strColTitle.Empty();
|
|
strColTitle.LoadString(IDS_DB_TD_TDNAME + g_UIOffset);
|
|
CRect rectTask;
|
|
m_CListCtrlTask.GetClientRect(&rectTask);
|
|
int iListWidth = rectTask.right - rectTask.left;
|
|
m_CListCtrlTask.InsertColumn(iColIndex++, strColTitle, LVCFMT_LEFT, 180);
|
|
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
{
|
|
m_CListCtrlTask.InsertColumn(iColIndex++, _T("任务ID"), LVCFMT_LEFT, 300);
|
|
m_CListCtrlTask.InsertColumn(iColIndex++, _T("任务状态"), LVCFMT_LEFT, iListWidth-480);
|
|
|
|
m_CComBoxLoopType.AddString(_T("次数循环"));
|
|
m_CComBoxLoopType.AddString(_T("定时循环"));
|
|
m_CComBoxLoopType.SetCurSel(0);
|
|
|
|
SetWindowTextA(_T("新建定时任务"));
|
|
|
|
GetDlgItem(IDC_STATIC_UPLOAD_LOOP)->SetWindowTextA(_T("子任务数:"));
|
|
GetDlgItem(IDC_STATIC_LOOP_ID)->SetWindowTextA(_T("循环任务ID:"));
|
|
GetDlgItem(IDC_STATIC_LOOP_NAME_DIS)->SetWindowTextA(_T("循环任务名:"));
|
|
GetDlgItem(IDC_STATIC_LOOP_TIMER)->SetWindowTextA(_T("定时类型:"));
|
|
GetDlgItem(IDC_STATIC_LOOP_START_TIME)->SetWindowTextA(_T("开始时间:"));
|
|
GetDlgItem(IDC_STATIC_LOOP_END_TIME)->SetWindowTextA(_T("结束时间:"));
|
|
GetDlgItem(IDC_STATIC_LOOP_TYPE)->SetWindowTextA(_T("循环类型:"));
|
|
GetDlgItem(IDC_STATIC_STARTOFDAY)->SetWindowTextA(_T("每天开始时间:"));
|
|
GetDlgItem(IDC_STATIC_LOOP_COUNT)->SetWindowTextA(_T("循环次数:"));
|
|
GetDlgItem(IDC_STATIC_SUB_TASK_SPACE)->SetWindowTextA(_T("任务间隔:"));
|
|
GetDlgItem(IDOK_UPLOAD_LOOP)->SetWindowTextA(_T("确定"));
|
|
GetDlgItem(IDCANCEL_EXIT_UPLOAD)->SetWindowTextA(_T("退出"));
|
|
}
|
|
else
|
|
{
|
|
m_CComBoxLoopType.AddString(_T("Number of cycles"));
|
|
m_CComBoxLoopType.AddString(_T("Timing of cycles"));
|
|
m_CComBoxLoopType.SetCurSel(0);
|
|
|
|
m_CListCtrlTask.InsertColumn(iColIndex++, _T("Task ID"), LVCFMT_LEFT, 300);
|
|
m_CListCtrlTask.InsertColumn(iColIndex++, _T("Task status"), LVCFMT_LEFT, iListWidth - 480);
|
|
}
|
|
|
|
int iIndex = 0;
|
|
CString str;
|
|
if (0 < m_TaskList.GetCount() && 0 == m_TaskList.IsEmpty())
|
|
{
|
|
POSITION pos = m_TaskList.GetHeadPosition();
|
|
while (pos != NULL)
|
|
{
|
|
STTaskListItem taskTable = m_TaskList.GetNext(pos);
|
|
m_CListCtrlTask.InsertItem(iIndex, _T(""));
|
|
m_CListCtrlTask.SetItemText(iIndex, 0, taskTable.szTDName);
|
|
m_CListCtrlTask.SetItemText(iIndex, 1, taskTable.szTaskID);
|
|
m_CListCtrlTask.SetItemText(iIndex, 2, OnLineLocalTaskState(taskTable.eSynStatus));
|
|
iIndex++;
|
|
}
|
|
}
|
|
str.Format(_T("%u"), iIndex);
|
|
m_CStaticTaskNum.SetWindowTextA(str);
|
|
m_uiSubTaskNum = iIndex;
|
|
|
|
str.Format(_T("PLC%u"), m_dwPLCID);
|
|
m_CEditPlcID.SetWindowTextA(str);
|
|
str.Format(_T("SN%u"), m_dwDeviceSN);
|
|
m_CEidtGD20_ID.SetWindowTextA(str);
|
|
|
|
//loop任务ID
|
|
m_szLoopID.Format("LOOP%04d%02d%02d%02d%02d%02d_%s", g_sysCurTime.wYear, g_sysCurTime.wMonth, g_sysCurTime.wDay, \
|
|
g_sysCurTime.wHour, g_sysCurTime.wMinute, g_sysCurTime.wSecond, str);
|
|
m_CStaticLoopID.SetWindowTextA(m_szLoopID);
|
|
|
|
m_CDTCtrlStartTime.EnableWindow(FALSE);
|
|
m_CDTCtrlEndtime.EnableWindow(FALSE);
|
|
|
|
m_CComBoxTimerType.AddString(_T("Once"));
|
|
m_CComBoxTimerType.AddString(_T("Day"));
|
|
m_CComBoxTimerType.AddString(_T("Week"));
|
|
m_CComBoxTimerType.AddString(_T("Month"));
|
|
m_CComBoxTimerType.SetCurSel(1);
|
|
|
|
m_CComBoxTimerType.EnableWindow(false);
|
|
|
|
m_CDTTimeStart.EnableWindow(false);
|
|
m_CDTTimeEnd.EnableWindow(false);
|
|
m_CDTTimeStart.ShowWindow(FALSE);
|
|
m_CDTTimeEnd.ShowWindow(FALSE);
|
|
|
|
m_CDTCtrlDayStart.SetFormat(_T("HH:mm:ss"));
|
|
m_CDTCtrlTaskSpace.SetFormat(_T("HH:mm:ss"));
|
|
//任务时间间隔默认5分钟
|
|
CTime time;
|
|
CTime TDate;
|
|
time_t tTime;
|
|
CString strTime;
|
|
CString strDate;
|
|
m_CDTCtrlTaskSpace.GetTime(TDate);
|
|
strDate.Empty(); strDate = TDate.Format("%Y-%m-%d"); //获取到的为日期 如:2010-03-05
|
|
strTime.Empty(); strTime = time.Format(" 00:05:00");
|
|
strDate += strTime;
|
|
tTime = Str2GmtTm(strDate);
|
|
m_CDTCtrlTaskSpace.SetTime(tTime);
|
|
|
|
((CEdit*)GetDlgItem(IDC_EDIT1))->SetLimitText(20);
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// 异常: OCX 属性页应返回 FALSE
|
|
}
|
|
|
|
|
|
void DialUploadLoopTask::OnBnClickedUploadLoop()
|
|
{
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
UpdateData(true);
|
|
if (0 >= m_uiSubTaskNum)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("没有子任务"));
|
|
else
|
|
MessageBoxEx(NULL, _T("No subtasks"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
CString strLog;
|
|
STLoopTaskInfo stLoopTaskInfo;
|
|
char SendStr[2048] = { 0 };
|
|
memset(&stLoopTaskInfo, 0, sizeof(stLoopTaskInfo));
|
|
|
|
//填写参数
|
|
if (m_szLoopID.GetLength() <= sizeof(stLoopTaskInfo.ucTaskID))
|
|
{
|
|
memcpy(stLoopTaskInfo.ucTaskID, m_szLoopID, m_szLoopID.GetLength());
|
|
}
|
|
else
|
|
{
|
|
memcpy(stLoopTaskInfo.ucTaskID, m_szLoopID, sizeof(stLoopTaskInfo.ucTaskID));
|
|
}
|
|
strLog.Format(_T("[%s][%d]zm:ID=%s m_szLoopID=%s"), MODULE_NAME, __LINE__, stLoopTaskInfo.ucTaskID, m_szLoopID);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
|
|
CString szTaskName;
|
|
m_CEditTaskName.GetWindowTextA(szTaskName);
|
|
if (szTaskName.IsEmpty())
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("任务名称不能为空"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Task name cannot be empty"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
if (szTaskName.GetLength() <= sizeof(stLoopTaskInfo.ucTaskName))
|
|
{
|
|
memcpy(stLoopTaskInfo.ucTaskName, szTaskName, szTaskName.GetLength());
|
|
}
|
|
else
|
|
{
|
|
memcpy(stLoopTaskInfo.ucTaskName, szTaskName, sizeof(stLoopTaskInfo.ucTaskName));
|
|
}
|
|
strLog.Format(_T("[%s][%d]zm:loopname=%s szTaskName=%s"), MODULE_NAME, __LINE__, stLoopTaskInfo.ucTaskName, szTaskName);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
|
|
//stLoopTaskInfo.uiPlcId = g_dwPLCID;
|
|
//stLoopTaskInfo.uiGD10Id = g_dwDeviceSN;
|
|
m_CEditPlcID.GetWindowTextA(strLog);
|
|
strLog = strLog.Mid(strlen("PLC"));
|
|
stLoopTaskInfo.uiPlcId = atoll(strLog);
|
|
|
|
m_CEidtGD20_ID.GetWindowTextA(strLog);
|
|
strLog = strLog.Mid(strlen("SN"));
|
|
stLoopTaskInfo.uiGD10Id = atoll(strLog);
|
|
|
|
strLog.Format(_T("[%s][%d]zm:PLC=%u GD=%u"), MODULE_NAME, __LINE__, stLoopTaskInfo.uiPlcId, stLoopTaskInfo.uiGD10Id);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
|
|
int iContrlType = m_CComBoxLoopType.GetCurSel();
|
|
stLoopTaskInfo.ucContrlType = (UINT8)iContrlType;
|
|
strLog.Format(_T("[%s][%d]zm:stLoopTaskInfo.ucContrlType=%d"), MODULE_NAME, __LINE__, stLoopTaskInfo.ucContrlType);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
|
|
if (m_uiSubTaskNum > 1){ stLoopTaskInfo.ucTimerType = 1; }
|
|
else { stLoopTaskInfo.ucTimerType = 0; }
|
|
strLog.Format(_T("[%s][%d]zm:stLoopTaskInfo.ucTimerType=%d"), MODULE_NAME, __LINE__, stLoopTaskInfo.ucTimerType);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
|
|
CString szLoopNum;
|
|
m_CEditLoopCount.GetWindowTextA(szLoopNum);
|
|
if (szLoopNum.IsEmpty())
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("循环次数不能为空"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Number of cycles cannot be empty"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
stLoopTaskInfo.uiLoopNum = (UINT64)atoi(szLoopNum);
|
|
if (stLoopTaskInfo.uiLoopNum < 1 || stLoopTaskInfo.uiLoopNum > 60000)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("循环次数范围1-60000"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Number of cycles ranges from 1 to 60000"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
strLog.Format(_T("[%s][%d]zm:stLoopTaskInfo.uiLoopNum=%d"), MODULE_NAME, __LINE__, stLoopTaskInfo.uiLoopNum);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
|
|
int iLoopType = m_CComBoxTimerType.GetCurSel();
|
|
stLoopTaskInfo.ucLoopType = (UINT8)iLoopType;
|
|
strLog.Format(_T("[%s][%d]zm:stLoopTaskInfo.ucLoopType=%d"), MODULE_NAME, __LINE__, stLoopTaskInfo.ucLoopType);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
|
|
stLoopTaskInfo.ucTimerAgsNum = 1; //循环定时参数个数
|
|
stLoopTaskInfo.ucTimerTimeAgs = 0; //定时时间参数
|
|
strLog.Format(_T("[%s][%d]zm:ucTimerAgsNum=%d,stLoopTaskInfo.ucTimerTimeAgs=%d"), MODULE_NAME, __LINE__, stLoopTaskInfo.ucTimerAgsNum, stLoopTaskInfo.ucTimerTimeAgs);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
CTime time;
|
|
CTime TDate;
|
|
time_t tTime;
|
|
CString strTime;
|
|
CString strDate;
|
|
|
|
m_CDTCtrlStartTime.GetTime(TDate);
|
|
//m_CDTTimeStart.GetTime(time);
|
|
strDate.Empty(); strDate = TDate.Format("%Y-%m-%d"); //获取到的为日期 如:2010-03-05
|
|
strTime.Empty(); strTime = time.Format(" 00:00:00");
|
|
strDate += strTime;
|
|
tTime = Str2GmtTm(strDate);
|
|
stLoopTaskInfo.uiStartTime = tTime; //开始测试时间
|
|
strLog.Format(_T("[%s][%d]zm:strDate=%s,stLoopTaskInfo.uiStartTime=%u"), MODULE_NAME, __LINE__, strDate, stLoopTaskInfo.uiStartTime);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
|
|
m_CDTCtrlEndtime.GetTime(TDate);
|
|
//m_CDTTimeEnd.GetTime(time);
|
|
strDate.Empty(); strDate = TDate.Format("%Y-%m-%d"); //获取到的为日期 如:2010-03-05
|
|
strTime.Empty(); strTime = time.Format(" 23:59:59");
|
|
strDate += strTime;
|
|
tTime = Str2GmtTm(strDate);
|
|
stLoopTaskInfo.uiEndTime = tTime; //结束测试时间
|
|
strLog.Format(_T("[%s][%d]zm:strDate=%s,stLoopTaskInfo.uiStartTime=%u"), MODULE_NAME, __LINE__, strDate, stLoopTaskInfo.uiEndTime);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
|
|
if (stLoopTaskInfo.uiEndTime < stLoopTaskInfo.uiStartTime)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("结束时间不能小于开始时间"));
|
|
else
|
|
MessageBoxEx(NULL, _T("The end time cann't before the start time!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
|
|
m_CDTCtrlDayStart.GetTime(time);
|
|
int iStartMin = time.GetHour() * 60 + time.GetMinute(); //每天或者每周相对0点开始分钟数
|
|
iStartMin = iStartMin - 60*g_iTimeZone;
|
|
if (iStartMin < 0)
|
|
{
|
|
iStartMin += 24 * 60; //格林威治时间是前一天了
|
|
}
|
|
if (iStartMin > 24 * 60)
|
|
{
|
|
iStartMin -= 24 * 60; //格林威治时间是后一天了
|
|
}
|
|
stLoopTaskInfo.uiStartMin = iStartMin;
|
|
strLog.Format(_T("[%s][%d]zm:stLoopTaskInfo.uiStartMin=%u"), MODULE_NAME, __LINE__, stLoopTaskInfo.uiStartMin);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
|
|
m_CDTCtrlTaskSpace.GetTime(time);
|
|
stLoopTaskInfo.uiTaskSpace = time.GetHour() * 60*60 + time.GetMinute()*60+time.GetSecond(); //任务间间隔,已秒为单位
|
|
strLog.Format(_T("[%s][%d]zm:stLoopTaskInfo.uiTaskSpace=%u"), MODULE_NAME, __LINE__, stLoopTaskInfo.uiTaskSpace);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
stLoopTaskInfo.uiSubTaskNum = m_uiSubTaskNum;//子任务数
|
|
strLog.Format(_T("[%s][%d]zm:stLoopTaskInfo.uiSubTaskNum=%u"), MODULE_NAME, __LINE__, stLoopTaskInfo.uiSubTaskNum);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
/*if (0 == stLoopTaskInfo.ucContrlType)
|
|
{
|
|
//stLoopTaskInfo.uiEndTime = stLoopTaskInfo.uiStartTime + 1800;//手动任务结束时间输入无效
|
|
}*/
|
|
|
|
strcpy(stLoopTaskInfo.ucTaskName, G2U(stLoopTaskInfo.ucTaskName));
|
|
stLoopTaskInfo.uiLoopNum = htons(stLoopTaskInfo.uiLoopNum);
|
|
stLoopTaskInfo.uiGD10Id = htonl(stLoopTaskInfo.uiGD10Id);
|
|
stLoopTaskInfo.uiPlcId = htonl(stLoopTaskInfo.uiPlcId);
|
|
stLoopTaskInfo.uiStartTime = htonl(stLoopTaskInfo.uiStartTime);
|
|
stLoopTaskInfo.uiEndTime = htonl(stLoopTaskInfo.uiEndTime);
|
|
stLoopTaskInfo.uiStartMin = htonl(stLoopTaskInfo.uiStartMin);
|
|
stLoopTaskInfo.uiTaskSpace = htonl(stLoopTaskInfo.uiTaskSpace);
|
|
stLoopTaskInfo.uiSubTaskNum = htonl(stLoopTaskInfo.uiSubTaskNum);
|
|
strLog.Format(_T("zm:UploadLoopTask uiLoopNum=%d,uiGD10Id=%u,stLoopTaskInfo.uiPlcId=%u,\nstLoopTaskInfo.uiStartTime=%u,stLoopTaskInfo.uiEndTime=%u,stLoopTaskInfo.uiStartMin=%u,stLoopTaskInfo.uiTaskSpace=%u,stLoopTaskInfo.uiSubTaskNum=%u"), stLoopTaskInfo.uiLoopNum,stLoopTaskInfo.uiGD10Id,
|
|
stLoopTaskInfo.uiPlcId, stLoopTaskInfo.uiStartTime, stLoopTaskInfo.uiEndTime, stLoopTaskInfo.uiStartMin, stLoopTaskInfo.uiTaskSpace, stLoopTaskInfo.uiSubTaskNum);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
memcpy(SendStr, &stLoopTaskInfo, sizeof(STLoopTaskInfo));
|
|
|
|
char *TaskStr = &SendStr[sizeof(STLoopTaskInfo)];
|
|
//修改为按当前任务列表排序上传
|
|
int iTaskCount = m_CListCtrlTask.GetItemCount();
|
|
CString strTaskID;
|
|
char *SubTaskStr = NULL;
|
|
char szTaskID[MAX_NAME_LEN] = { 0 };
|
|
for (int i = 0; i < iTaskCount; i++)
|
|
{
|
|
strTaskID = m_CListCtrlTask.GetItemText(i, 1);
|
|
memset(szTaskID, 0, MAX_NAME_LEN);
|
|
strcpy(szTaskID, strTaskID);
|
|
SubTaskStr = &TaskStr[MAX_NAME_LEN*i];
|
|
memcpy(SubTaskStr, szTaskID, MAX_NAME_LEN);
|
|
}
|
|
|
|
theApp.m_NetWorkOper.SetSuspendForThread(true);
|
|
PostNetRequest(EN_REQ_LOOP_TASK_TRUST, this->m_hWnd, (char*)SendStr, sizeof(STLoopTaskInfo) + m_uiSubTaskNum*(MAX_NAME_LEN* sizeof(BYTE)));
|
|
theApp.m_NetWorkOper.SetSuspendForThread(false);
|
|
}
|
|
|
|
void DialUploadLoopTask::OnBnClickedExitUpload()
|
|
{
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
m_TaskList.RemoveAll();
|
|
SendMessage(WM_CLOSE, NULL, NULL);
|
|
}
|
|
|
|
void DialUploadLoopTask::PreNetResponse(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
LPRESPONSEPACKET pResponsePacket = (LPRESPONSEPACKET)lParam;
|
|
if (pResponsePacket == NULL)
|
|
{
|
|
return;
|
|
}
|
|
switch (pResponsePacket->clsPacketBase.ucCmd)
|
|
{
|
|
case EN_REQ_LOOP_TASK_TRUST:
|
|
{
|
|
switch (pResponsePacket->pData[0])
|
|
{
|
|
case FAILED_NO_ERROR:
|
|
{
|
|
if (g_iUILanguage == LANG_ZHCN)
|
|
AfxMessageBox(_T("循环任务创建完成"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Trust loop task finished"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
SendMessage(WM_CLOSE, NULL, NULL);
|
|
}
|
|
break;
|
|
case FAILED_CREATE_LOOP_DURING_THIS_PERIOD:
|
|
{
|
|
if (g_iUILanguage == LANG_ZHCN)
|
|
{
|
|
AfxMessageBox(_T("此时段已创建其他任务"));
|
|
}
|
|
else
|
|
{
|
|
MessageBoxEx(NULL, _T("Other tasks have been created during this period"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
{
|
|
if ((1 > pResponsePacket->wDataLen) || (FAILED_NO_ERROR != pResponsePacket->pData[0]))
|
|
{
|
|
theApp.m_NetWorkOper.SetSuspendForThread(false);
|
|
CString strMsg;
|
|
if (g_iUILanguage == LANG_ZHCN)
|
|
{
|
|
strMsg.Format(_T("未知错误,失败码%d."), pResponsePacket->pData[0]);
|
|
AfxMessageBox(strMsg);
|
|
}
|
|
else
|
|
{
|
|
strMsg.Format(_T("Unknown error, failure code%d."), pResponsePacket->pData[0]);
|
|
MessageBoxEx(NULL, strMsg, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void DialUploadLoopTask::OnCbnSelchangeTimerTypeCombo()
|
|
{
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
int iCurSel = m_CComBoxLoopType.GetCurSel();
|
|
if (iCurSel == 0)
|
|
{
|
|
time_t tTime;
|
|
time(&tTime);
|
|
CString strDate;
|
|
tm* pTm = localtime(&tTime);
|
|
strDate.Format(_T("%d-%d-%d 00:00:00"), pTm->tm_year+1900, pTm->tm_mon+1, pTm->tm_mday);
|
|
tTime = Str2GmtTm(strDate);
|
|
m_CDTCtrlEndtime.SetTime(tTime); //结束测试时间
|
|
|
|
m_CDTCtrlStartTime.EnableWindow(FALSE);
|
|
m_CDTCtrlEndtime.EnableWindow(FALSE);
|
|
}
|
|
else if (iCurSel == 1)
|
|
{
|
|
time_t tTime;
|
|
time(&tTime);
|
|
CString strDate;
|
|
tm* pTm = localtime(&tTime);
|
|
strDate.Format(_T("%d-%d-%d 00:00:00"), pTm->tm_year + 1900, pTm->tm_mon + 1, pTm->tm_mday+3);
|
|
tTime = Str2GmtTm(strDate);
|
|
m_CDTCtrlEndtime.SetTime(tTime); //结束测试时间
|
|
|
|
m_CDTCtrlStartTime.EnableWindow(TRUE);
|
|
m_CDTCtrlEndtime.EnableWindow(TRUE);
|
|
}
|
|
}
|
|
|
|
LRESULT DialUploadLoopTask::DragMoveItem(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
int iSelectItem = wParam;
|
|
int iChangeItem = lParam;
|
|
|
|
if (iSelectItem == -1 || iChangeItem == -1)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
CString strTaskName = m_CListCtrlTask.GetItemText(iSelectItem, 0);
|
|
CString strTaskID = m_CListCtrlTask.GetItemText(iSelectItem, 1);
|
|
CString strTaskSynStatus = m_CListCtrlTask.GetItemText(iSelectItem, 2);
|
|
if (iSelectItem < iChangeItem)
|
|
{
|
|
for (int i = iSelectItem; i <= iChangeItem; i++)
|
|
{
|
|
if (i == iChangeItem)
|
|
{
|
|
m_CListCtrlTask.SetItemText(iChangeItem, 0, strTaskName);
|
|
m_CListCtrlTask.SetItemText(iChangeItem, 1, strTaskID);
|
|
m_CListCtrlTask.SetItemText(iChangeItem, 2, strTaskSynStatus);
|
|
}
|
|
else
|
|
{
|
|
m_CListCtrlTask.SetItemText(i, 0, m_CListCtrlTask.GetItemText(i + 1, 0));
|
|
m_CListCtrlTask.SetItemText(i, 1, m_CListCtrlTask.GetItemText(i + 1, 1));
|
|
m_CListCtrlTask.SetItemText(i, 2, m_CListCtrlTask.GetItemText(i + 1, 2));
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int i = iSelectItem; i > iChangeItem; i--)
|
|
{
|
|
if (i-1 == iChangeItem)
|
|
{
|
|
m_CListCtrlTask.SetItemText(i, 0, strTaskName);
|
|
m_CListCtrlTask.SetItemText(i, 1, strTaskID);
|
|
m_CListCtrlTask.SetItemText(i, 2, strTaskSynStatus);
|
|
}
|
|
else
|
|
{
|
|
m_CListCtrlTask.SetItemText(i, 0, m_CListCtrlTask.GetItemText(i - 1, 0));
|
|
m_CListCtrlTask.SetItemText(i, 1, m_CListCtrlTask.GetItemText(i - 1, 1));
|
|
m_CListCtrlTask.SetItemText(i, 2, m_CListCtrlTask.GetItemText(i - 1, 2));
|
|
}
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
} |