301 lines
8.5 KiB
C++
301 lines
8.5 KiB
C++
// DialCfgTaskPacket.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "geomative.h"
|
|
#include "DialCfgTaskPacket.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDialCfgTaskPacket dialog
|
|
extern int g_iUILanguage;
|
|
|
|
CDialCfgTaskPacket::CDialCfgTaskPacket(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CDialCfgTaskPacket::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CDialCfgTaskPacket)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void CDialCfgTaskPacket::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CDialCfgTaskPacket)
|
|
DDX_Control(pDX, IDC_LIST_TASK_PACKET, m_listTaskPacket);
|
|
DDX_Control(pDX, IDC_COMBO_TASK_NAME, m_cmbTaskName);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDialCfgTaskPacket, CDialog)
|
|
//{{AFX_MSG_MAP(CDialCfgTaskPacket)
|
|
ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
|
|
ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDialCfgTaskPacket message handlers
|
|
|
|
void CDialCfgTaskPacket::OnButtonAdd()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
int iCurSel = m_cmbTaskName.GetCurSel();
|
|
if (iCurSel < 0)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("请先选择任务"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Please select task firstly"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
DWORD dwTaskID = m_cmbTaskName.GetItemData(iCurSel);
|
|
if (IsRepeatTask(dwTaskID))
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("任务已存在"));
|
|
else
|
|
MessageBoxEx(NULL, _T("This task has been exist."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
CString strTaskName;
|
|
m_cmbTaskName.GetLBText(iCurSel, strTaskName);
|
|
int iCnt = m_listTaskPacket.GetItemCount();
|
|
CString strTxt = "";
|
|
strTxt.Format(_T("%d"), iCnt+1);
|
|
m_listTaskPacket.InsertItem(iCnt, "");
|
|
m_listTaskPacket.SetItemText(iCnt, 0, strTxt);
|
|
m_listTaskPacket.SetItemText(iCnt, 1, strTaskName);
|
|
strTxt.Empty();
|
|
strTxt.Format(_T("%d"), dwTaskID);
|
|
m_listTaskPacket.SetItemText(iCnt, 2, strTxt);
|
|
}
|
|
|
|
void CDialCfgTaskPacket::OnButtonDel()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
int iCurSel = m_listTaskPacket.GetSelectionMark();
|
|
if (iCurSel < 0)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("请先选择任务"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Please select task firstly."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
bool bIsNeedMoidfyIndx = (iCurSel == (m_listTaskPacket.GetItemCount()-1)) ? false : true;
|
|
m_listTaskPacket.DeleteItem(iCurSel);
|
|
if (bIsNeedMoidfyIndx)
|
|
{
|
|
//修改删除后的后续行的序号
|
|
CString strTxt;
|
|
for (int i = iCurSel; i < m_listTaskPacket.GetItemCount(); i++)
|
|
{
|
|
strTxt.Empty();
|
|
strTxt.Format(_T("%d"),i+1);
|
|
m_listTaskPacket.SetItemText(i, 0, strTxt);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
bool CDialCfgTaskPacket::IsRepeatTask(int iTaskID)
|
|
{
|
|
int iCnt = m_listTaskPacket.GetItemCount();
|
|
for (int i = 0; i < iCnt; i++)
|
|
{
|
|
if (iTaskID == atoi(m_listTaskPacket.GetItemText(i, 2)))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
BOOL CDialCfgTaskPacket::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// TODO: Add extra initialization here
|
|
std::vector<STTdBrowseInfo> vtTdBrowse;
|
|
vtTdBrowse.clear();
|
|
CTaskDataOper dataOper;
|
|
dataOper.QueryTdBrowseInfo(vtTdBrowse, 1, 0);
|
|
int iIndex=0;
|
|
|
|
for (int i = 0; i < vtTdBrowse.size(); i++)
|
|
{
|
|
iIndex = m_cmbTaskName.AddString(vtTdBrowse[i].strTaskName);
|
|
if (iIndex < 0)
|
|
{
|
|
return FALSE;
|
|
}
|
|
m_cmbTaskName.SetItemData(iIndex, vtTdBrowse[i].iTaskID);
|
|
}
|
|
// GetDlgItem(IDC_COMBO_TASK_NAME)->EnableWindow(FALSE);
|
|
//
|
|
int iLoopTime = 0, iInterval=0;
|
|
CString strTxt = "";
|
|
if (dataOper.QueryTaskPacketAttr(iLoopTime, iInterval, strTxt))
|
|
{
|
|
GetDlgItem(IDC_EDIT_PLCID)->SetWindowText(strTxt);
|
|
strTxt.Empty();
|
|
strTxt.Format(_T("%d"),iLoopTime);
|
|
GetDlgItem(IDC_EDIT_LOOP_TIMES)->SetWindowText(strTxt);
|
|
|
|
strTxt.Empty();
|
|
strTxt.Format(_T("%d"),iInterval);
|
|
GetDlgItem(IDC_EDIT_INTERVAL_TIME)->SetWindowText(strTxt);
|
|
}
|
|
((CEdit*)GetDlgItem(IDC_EDIT_PLCID))->SetLimitText(10);
|
|
InitialTaskList();
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CDialCfgTaskPacket::InitialTaskList()
|
|
{
|
|
// TODO: Add extra initialization here
|
|
CString strColTitle;
|
|
|
|
int iColIndex = 0;
|
|
|
|
m_listTaskPacket.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP
|
|
| LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES);
|
|
|
|
m_listTaskPacket.InsertColumn(iColIndex++, _T("Index"),LVCFMT_LEFT,150);
|
|
m_listTaskPacket.InsertColumn(iColIndex++, _T("TaskName"), LVCFMT_CENTER, 250);
|
|
|
|
m_listTaskPacket.InsertColumn(iColIndex++, _T("TaskID"), LVCFMT_CENTER, 200);
|
|
|
|
|
|
|
|
std::vector<STTdBrowseInfo> vtTdBrowse;
|
|
vtTdBrowse.clear();
|
|
CTaskDataOper dataOper;
|
|
dataOper.QueryTaskPacketInfo(vtTdBrowse);
|
|
int iRowIndex = 0;
|
|
CString strTxt;
|
|
for (int i = 0; i <vtTdBrowse.size(); i++)
|
|
{
|
|
iRowIndex = m_listTaskPacket.GetItemCount();
|
|
m_listTaskPacket.InsertItem(iRowIndex, "");
|
|
strTxt.Empty();
|
|
strTxt.Format(_T("%d"), i+1);
|
|
m_listTaskPacket.SetItemText(iRowIndex, 0, strTxt);
|
|
m_listTaskPacket.SetItemText(iRowIndex, 1, vtTdBrowse[i].strTaskName);
|
|
strTxt.Empty();
|
|
strTxt.Format(_T("%d"),vtTdBrowse[i].iTaskID);
|
|
m_listTaskPacket.SetItemText(iRowIndex, 2, strTxt);
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void CDialCfgTaskPacket::OnOK()
|
|
{
|
|
// TODO: Add extra validation here
|
|
// if (m_listTaskPacket.GetItemCount() < 1)
|
|
// {
|
|
// AfxMessageBox(_T("please add task firstly"));
|
|
// return;
|
|
// }
|
|
CString strTxt = "";
|
|
GetDlgItem(IDC_EDIT_LOOP_TIMES)->GetWindowText(strTxt);
|
|
int iLoopTime, iInterval;
|
|
if (!strTxt.IsEmpty())
|
|
{
|
|
iLoopTime = atoi(strTxt);
|
|
if (iLoopTime < 1 || iLoopTime > 60000)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("循环次数的值必须在1-60000之间"));
|
|
else
|
|
MessageBoxEx(NULL, _T("The value of LoopTimes should between 1 to 60000"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("循环次数的值必须在1-60000之间"));
|
|
else
|
|
MessageBoxEx(NULL, _T("The value of LoopTimes should between 1 to 60000"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
strTxt.Empty();
|
|
GetDlgItem(IDC_EDIT_INTERVAL_TIME)->GetWindowText(strTxt);
|
|
if (!strTxt.IsEmpty())
|
|
{
|
|
iInterval = atoi(strTxt);
|
|
if (iInterval < 1 || iInterval > 60000)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("时间间隔的值必须在1-60000之间"));
|
|
else
|
|
MessageBoxEx(NULL, _T("The value of Interval Time should between 1 to 60000"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("时间间隔的值必须在1-60000之间"));
|
|
else
|
|
MessageBoxEx(NULL, _T("The value of Interval Time should between 1 to 60000"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
|
|
strTxt.Empty();
|
|
GetDlgItem(IDC_EDIT_PLCID)->GetWindowText(strTxt);
|
|
if (strTxt.IsEmpty())
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("请输入PLC ID"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Please input plcid"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
|
|
//开始保存
|
|
std::vector<STTdBrowseInfo> vtTdBrowse;
|
|
vtTdBrowse.clear();
|
|
for (int i = 0; i < m_listTaskPacket.GetItemCount(); i++)
|
|
{
|
|
STTdBrowseInfo stTdInfo;
|
|
stTdInfo.strTaskName = m_listTaskPacket.GetItemText(i, 1);
|
|
stTdInfo.iTaskID = atoi(m_listTaskPacket.GetItemText(i,2));
|
|
vtTdBrowse.push_back(stTdInfo);
|
|
}
|
|
STTaskPacketAttr stPacketAttr;
|
|
stPacketAttr.iLoopTimes = iLoopTime;
|
|
stPacketAttr.iInterval = iInterval;
|
|
stPacketAttr.strPlcID = strTxt;
|
|
CTaskDataOper dataOper;
|
|
if (!dataOper.InsertTaskPacketInfo(vtTdBrowse, stPacketAttr))
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("保存失败"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Save failed."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("保存成功"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Save success."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
|
|
CDialog::OnOK();
|
|
}
|