This commit is contained in:
coco
2026-07-03 16:05:30 +08:00
commit df489d5640
1101 changed files with 779140 additions and 0 deletions
@@ -0,0 +1,300 @@
// 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();
}