664 lines
18 KiB
C++
664 lines
18 KiB
C++
// CombineDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "geomative.h"
|
|
#include "CombineDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
extern int g_iUILanguage;
|
|
extern void SplitterString(CStringArray &szArray,const CString& szSource, const CString& szSplitter);
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CCombineDlg dialog
|
|
|
|
|
|
// CCombineDlg::CCombineDlg(CWnd* pParent /*=NULL*/)
|
|
// : CDialog(CCombineDlg::IDD, pParent)
|
|
// {
|
|
// //{{AFX_DATA_INIT(CCombineDlg)
|
|
// // NOTE: the ClassWizard will add member initialization here
|
|
// //}}AFX_DATA_INIT
|
|
// }
|
|
|
|
CCombineDlg::CCombineDlg(CNavDataView *pNavData,CHandleProcessor HandleProcessor,_ConnectionPtr connectPtr, CWnd* pParent /*=NULL*/)
|
|
: CDialog(CCombineDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CCombineDlg)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
m_pNavData = pNavData;
|
|
m_handleProcessor = HandleProcessor;
|
|
m_connectPtr = connectPtr;
|
|
m_fCombiXDistance = 0;
|
|
m_fCombiYDistance = 0;
|
|
m_nCombiXGridSize = 0;
|
|
m_nCOmbiYGridSize = 0;
|
|
}
|
|
|
|
void CCombineDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CCombineDlg)
|
|
DDX_Control(pDX, IDC_TASK_LIST, m_TaskList);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CCombineDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CCombineDlg)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CCombineDlg message handlers
|
|
void CCombineDlg::OnOK()
|
|
{
|
|
// TODO: Add extra validation here
|
|
|
|
//检索有几个测试任务被选中
|
|
m_nSum = m_nID = 0; //m_nSum:记录选中多少个任务 m_nID:记录_Task对象中当前存了多少个对象
|
|
|
|
for (int n = 0; n < m_TaskList.GetItemCount(); n++)
|
|
{
|
|
if (m_TaskList.GetCheck(n) == TRUE)
|
|
m_nSum++;
|
|
}
|
|
|
|
if (m_nSum < 2)//小于两个选中项无法合并
|
|
return;
|
|
|
|
//申请空间
|
|
m_pTask = NULL;
|
|
m_pTask = new _task[m_nSum];
|
|
if (!m_pTask)
|
|
return;
|
|
|
|
//判断选中项是否有效
|
|
if (!CheckTaskValid())
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("任务不能合并"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Task can not combine"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
goto _exit;
|
|
}
|
|
|
|
//将测试任务信息插入到数据库中
|
|
InsertTdInfoToDB();
|
|
|
|
//将数据主体插入数据库中
|
|
InsertDataToDB();
|
|
|
|
_exit:
|
|
delete []m_pTask;
|
|
m_pTask = NULL;
|
|
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
BOOL CCombineDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// TODO: Add extra initialization here
|
|
m_TaskList.SetExtendedStyle(m_TaskList.GetExtendedStyle()|LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
|
|
|
|
int ColumnCount = m_TaskList.GetHeaderCtrl()->GetItemCount();
|
|
|
|
for (int n = 0; n < ColumnCount; n++)
|
|
{
|
|
m_TaskList.DeleteColumn(0);
|
|
}
|
|
|
|
m_TaskList.InsertColumn(0, "Name", 70,130);
|
|
|
|
m_TaskList.InsertColumn(1, "Test Type", 70,100);
|
|
|
|
m_TaskList.InsertColumn(2, "Rect(X0,Y0)", 70,100);
|
|
// m_TaskList.InsertColumn(3, "Rect(X1,Y1)", 70,100);
|
|
|
|
m_TaskList.InsertColumn(3, "Local(X0,Y0)", 70,100);
|
|
// m_TaskList.InsertColumn(5, "Local(X1,Y1)", 70,100);
|
|
|
|
m_TaskList.InsertColumn(4, "Distance(X,Y)", 70,130);
|
|
|
|
m_TaskList.InsertColumn(5, "Step(X,Y)", 70,100);
|
|
|
|
//从数据库里面取出数据初始化界面
|
|
InitListContent();
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CCombineDlg::InitListContent()
|
|
{
|
|
HTREEITEM hTzItem = NULL;
|
|
_RecordsetPtr pRecTzID = NULL;
|
|
|
|
DWORD dwHandle = (DWORD)VAL_ZERO;
|
|
DWORD dwID = (DWORD)VAL_ZERO;
|
|
|
|
DWORD dwTdID = (DWORD)VAL_ZERO;
|
|
|
|
CString szSql = _T("");
|
|
|
|
hTzItem = m_pNavData->m_dataTree.GetSelectedItem();
|
|
dwHandle = m_pNavData->m_dataTree.GetItemData(hTzItem);
|
|
m_TzID = m_handleProcessor.GetIDFromHandle(dwHandle);
|
|
|
|
pRecTzID.CreateInstance(_uuidof(Recordset));
|
|
|
|
try
|
|
{
|
|
//这里要判断3d任务才显示出来
|
|
szSql.Empty();
|
|
szSql.Format(_T("select ID,TDname,Ttype,rect,rect_loc,Edistance,Espace from td where TZID = %u"), m_TzID);
|
|
pRecTzID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_connectPtr, true), adOpenStatic, adLockOptimistic, adCmdText);
|
|
|
|
int id = 0;
|
|
//need_repair,ERROR,取值错误的问题
|
|
while ((short)VAL_ZERO == pRecTzID->adoEOF)
|
|
{
|
|
//取出测试任务
|
|
m_TaskList.InsertItem(id,(LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("TDname")));
|
|
|
|
//判断测试任务类型(1d,2d,3d)
|
|
switch (pRecTzID->GetCollect(_T("Ttype")).iVal)
|
|
{
|
|
case 0:
|
|
m_TaskList.SetItemText(id, 1, "1D");
|
|
break;
|
|
case 1:
|
|
m_TaskList.SetItemText(id, 1, "2D");
|
|
break;
|
|
case 2:
|
|
m_TaskList.SetItemText(id, 1, "3D");
|
|
break;
|
|
default:
|
|
m_TaskList.SetItemText(id, 1, "unKnow");
|
|
break;
|
|
}
|
|
|
|
//取出矩阵大小
|
|
m_TaskList.SetItemText(id, 2, (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("rect")));
|
|
|
|
//取出矩阵坐标
|
|
m_TaskList.SetItemText(id, 3, (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("rect_loc")));
|
|
|
|
//取出电极间距
|
|
m_TaskList.SetItemText(id, 4, (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("Edistance")));
|
|
|
|
//取出电极步长
|
|
m_TaskList.SetItemText(id, 5, (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("Espace")));
|
|
|
|
//将测试任务ID和列表绑定
|
|
m_TaskList.SetItemData(id, pRecTzID->GetCollect(_T("ID")).iVal);
|
|
|
|
pRecTzID->MoveNext();
|
|
|
|
id++;
|
|
}
|
|
pRecTzID->Close();
|
|
}
|
|
catch (_com_error e)
|
|
{
|
|
AfxMessageBox(e.Description());
|
|
}
|
|
}
|
|
|
|
BOOL CCombineDlg::CheckTaskValid()
|
|
{
|
|
CString szFirstDistance = _T("");//第一个被选中记录的电极间距
|
|
CString szFirstStep = _T("");//第一个被选中记录的电极间隔
|
|
BOOL bSig = TRUE;//一个标记位,当szFirstDistance和szStep被赋值时,FALSE
|
|
|
|
CString szTmpOne = _T("");//临时保存数据的变量
|
|
CString szTmpTwo = _T("");//同上
|
|
CString szTestType = _T("");
|
|
|
|
int id = 0;
|
|
|
|
//判断选择测试任务合并的有效性
|
|
for (int i = 0; i < m_TaskList.GetItemCount(); i++)
|
|
{
|
|
if (m_TaskList.GetCheck(i) == TRUE)
|
|
{
|
|
//将数据放入到_task结构体中
|
|
InsertTask(m_TaskList.GetItemData(i));
|
|
|
|
if (bSig)//将第一条记录的信息保存起来
|
|
{
|
|
szFirstDistance = m_TaskList.GetItemText(i, 4);
|
|
szFirstStep = m_TaskList.GetItemText(i, 4);
|
|
bSig = FALSE;
|
|
continue;//继续查找下面被选中的记录
|
|
}
|
|
|
|
//将第一条被选中的记录,与后面被选中的记录作比较,不相当,则为不符合合并的条件
|
|
szTmpOne = m_TaskList.GetItemText(i, 4);
|
|
szTmpTwo = m_TaskList.GetItemText(i, 5);
|
|
szTestType = m_TaskList.GetItemText(i, 1);
|
|
|
|
//步长间距不相等则不符合合并要求,目前仅支持3D测试任务合并
|
|
// if (szFirstDistance != szTmpOne || szFirstStep != szTmpTwo || szTestType != "3D")
|
|
// return FALSE;
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
BOOL CCombineDlg::InsertTdInfoToDB()
|
|
{
|
|
CString szCN = _T("");
|
|
CString szSql = _T("");
|
|
CString szCn = _T("");
|
|
int nTpAmount = 0;
|
|
|
|
_CommandPtr pCmdIns = NULL;
|
|
_RecordsetPtr pRecTdID = NULL;
|
|
|
|
pCmdIns.CreateInstance(_uuidof(Command));
|
|
pRecTdID.CreateInstance(_uuidof(Recordset));
|
|
|
|
pCmdIns->ActiveConnection = m_connectPtr;
|
|
|
|
szCN = this->m_guCodeCreator.GenerateGUIDCode();
|
|
|
|
m_szTaskName = GetTaskName();//取得任务名字
|
|
szCN = GetTdCN(m_pTask[0].m_szTdCN);//取得任务CN号
|
|
nTpAmount = GetTpAmount();//取得测点数
|
|
|
|
m_scriptType = m_pTask[0].m_iSType;
|
|
m_testType = m_pTask[0].m_iTType;
|
|
|
|
try
|
|
{
|
|
szSql.Empty();
|
|
szSql.Format(_T("insert into td(TDname,TDCN,Tlocation,DEID,DESN,TZID,SCID,SCCN,Sname,Stype,Ttype,Tmode,Eamount,TPamount,CHamount,N,TRwave,TRfrequency,Ifrequency,"
|
|
"SAfrequency,Clayout,Espace,Edistance,weather,WDIR,temperature,height,humidity,Cdate,Ctime,Tdate,Ttime,Rdirection,CRtime,PM,OP,QA,rect,rect_loc) "
|
|
"values('%s','%s','%s',%u,'%s',%u,%u,'%s','%s',%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,'%s','%s',%d,%d,%.2f,%.2f,%.2f,#%s#,#%s#,#%s#,#%s#,%d,%d,'%s','%s','%s','%s','%s')"),
|
|
m_szTaskName,//名字
|
|
szCN,
|
|
m_pTask[0].m_szTLocation, //矩形位置
|
|
m_pTask[0].m_deviceID,
|
|
m_pTask[0].m_SN,
|
|
m_TzID,
|
|
m_pTask[0].m_szSCID,
|
|
m_pTask[0].m_szSCCN,
|
|
m_pTask[0].m_szSName,
|
|
m_pTask[0].m_iSType,
|
|
m_pTask[0].m_iTType,
|
|
m_pTask[0].m_iTMode,
|
|
m_pTask[0].m_iEAmount,//可能需要修改
|
|
nTpAmount,//可能需要修改
|
|
m_pTask[0].m_ChNumber,
|
|
m_pTask[0].m_iN,
|
|
m_pTask[0].m_iTRWave,
|
|
m_pTask[0].m_iTRFrequency,
|
|
m_pTask[0].m_iIFrequency,
|
|
m_pTask[0].m_iSAFrequency,
|
|
m_pTask[0].m_iCLayout,
|
|
m_pTask[0].m_fESpace,
|
|
m_pTask[0].m_iEDistance,
|
|
m_pTask[0].m_iWeather,
|
|
m_pTask[0].m_iWDIR,
|
|
m_pTask[0].m_fTemperature,
|
|
m_pTask[0].m_fHeight,
|
|
m_pTask[0].m_fHumidity,
|
|
m_pTask[0].m_szCDate,
|
|
m_pTask[0].m_szCTime,
|
|
m_pTask[0].m_szTDate,
|
|
m_pTask[0].m_szTTime,
|
|
m_pTask[0].m_iRDirection,
|
|
m_pTask[0].m_CRtime,
|
|
" ",//PM
|
|
" ",//OP
|
|
" ",//QA
|
|
m_pTask[0].m_Rect,//可能需要修改
|
|
m_pTask[0].m_RectLocal);//可能需要修改
|
|
|
|
// AfxMessageBox(szSql);
|
|
|
|
// FILE *pFile = NULL;
|
|
// pFile = fopen("Log//lll.txt", "ab+");
|
|
// fwrite(szSql.GetBuffer(0), 1, szSql.GetLength(), pFile);
|
|
// fflush(pFile);
|
|
// fclose(pFile);
|
|
|
|
pCmdIns->CommandText = szSql.AllocSysString();
|
|
pCmdIns->Execute(NULL, NULL, adCmdText);
|
|
|
|
//获取刚才插入任务的ID
|
|
pRecTdID->Open(_T("select max(ID) as ID from td"), _variant_t((IDispatch*)m_connectPtr, true), adOpenStatic, adLockOptimistic, adCmdText);
|
|
m_TdID = pRecTdID->GetCollect(_T("ID")).ulVal;
|
|
pRecTdID->Close();
|
|
|
|
|
|
//将记录插入到Tdchannel中
|
|
szSql.Empty();
|
|
szSql.Format("insert into tdchannel(TDID,CHnumber,AR) values(%u,%d,%d)", m_TdID, m_pTask[0].m_ChNumber, m_pTask[0].m_AR);
|
|
|
|
pCmdIns->CommandText = szSql.AllocSysString();
|
|
pCmdIns->Execute(NULL, NULL, adCmdText);
|
|
|
|
//获取刚才插入任务的ID
|
|
pRecTdID->Open(_T("select max(ID) as ID from tdchannel"), _variant_t((IDispatch*)m_connectPtr, true), adOpenStatic, adLockOptimistic, adCmdText);
|
|
m_tchID = pRecTdID->GetCollect(_T("ID")).ulVal;
|
|
pRecTdID->Close();
|
|
|
|
}
|
|
catch(_com_error* e)
|
|
{
|
|
AfxMessageBox((LPCTSTR)e->Description());
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
void CCombineDlg::InsertTask(DWORD dwID)
|
|
{
|
|
//函数将数据库中取出的数据全部保存到_Task结构体中
|
|
|
|
if (m_nID >= m_nSum)
|
|
{
|
|
return;//超出了申请内存的最大值
|
|
}
|
|
|
|
try
|
|
{
|
|
_RecordsetPtr pRecTzID = NULL;
|
|
|
|
CString szSql = _T("");
|
|
|
|
pRecTzID.CreateInstance(_uuidof(Recordset));
|
|
|
|
szSql.Empty();
|
|
szSql.Format(_T("select * from td where ID = %u"), dwID);
|
|
pRecTzID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_connectPtr, true), adOpenStatic, adLockOptimistic, adCmdText);
|
|
|
|
m_pTask[m_nID].m_szTdName = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("TDname"));
|
|
m_pTask[m_nID].m_szTdCN = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("TDCN"));
|
|
m_pTask[m_nID].m_szTLocation = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("Tlocation"));
|
|
m_pTask[m_nID].m_deviceID = pRecTzID->GetCollect(_T("DEID")).iVal;
|
|
m_pTask[m_nID].m_SN = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("DESN"));
|
|
|
|
m_pTask[m_nID].m_TzId = pRecTzID->GetCollect(_T("TZID")).iVal;
|
|
m_pTask[m_nID].m_szSCID = pRecTzID->GetCollect(_T("SCID")).iVal;
|
|
m_pTask[m_nID].m_szSCCN = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("SCCN"));
|
|
m_pTask[m_nID].m_szSName = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("Sname"));
|
|
m_pTask[m_nID].m_iSType = pRecTzID->GetCollect(_T("Stype")).iVal;
|
|
m_pTask[m_nID].m_iTType = pRecTzID->GetCollect(_T("Ttype")).iVal;
|
|
m_pTask[m_nID].m_iTMode = pRecTzID->GetCollect(_T("Tmode")).iVal;
|
|
m_pTask[m_nID].m_iEAmount = pRecTzID->GetCollect(_T("Eamount")).iVal;
|
|
m_pTask[m_nID].m_iTPAmount = pRecTzID->GetCollect(_T("TPamount")).iVal;
|
|
m_pTask[m_nID].m_iCHAmount = pRecTzID->GetCollect(_T("CHamount")).iVal;
|
|
m_pTask[m_nID].m_iN = pRecTzID->GetCollect(_T("N")).iVal;
|
|
m_pTask[m_nID].m_iTRWave = pRecTzID->GetCollect(_T("TRwave")).iVal;
|
|
m_pTask[m_nID].m_iTRFrequency = pRecTzID->GetCollect(_T("TRfrequency")).iVal;
|
|
m_pTask[m_nID].m_iIFrequency = pRecTzID->GetCollect(_T("Ifrequency")).iVal;
|
|
m_pTask[m_nID].m_iSAFrequency = pRecTzID->GetCollect(_T("SAfrequency")).iVal;
|
|
m_pTask[m_nID].m_iCLayout = pRecTzID->GetCollect(_T("Clayout")).iVal;
|
|
|
|
m_pTask[m_nID].m_fESpace = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("Espace"));
|
|
m_pTask[m_nID].m_iEDistance = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("Edistance"));
|
|
|
|
m_pTask[m_nID].m_iWeather = pRecTzID->GetCollect(_T("weather")).iVal;
|
|
m_pTask[m_nID].m_iWDIR = pRecTzID->GetCollect(_T("WDIR")).iVal;
|
|
m_pTask[m_nID].m_fTemperature = pRecTzID->GetCollect(_T("temperature")).fltVal;
|
|
m_pTask[m_nID].m_fHeight = pRecTzID->GetCollect(_T("height")).fltVal;
|
|
m_pTask[m_nID].m_fHeight = pRecTzID->GetCollect(_T("humidity")).fltVal;
|
|
|
|
m_pTask[m_nID].m_szCDate = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("Cdate"));
|
|
m_pTask[m_nID].m_szCTime = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("Ctime"));
|
|
m_pTask[m_nID].m_szTDate = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("Tdate"));
|
|
m_pTask[m_nID].m_szTTime = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("Ttime"));
|
|
m_pTask[m_nID].m_iRDirection = pRecTzID->GetCollect(_T("Rdirection")).iVal;
|
|
m_pTask[m_nID].m_CRtime = pRecTzID->GetCollect(_T("CRtime")).iVal;
|
|
|
|
// m_pTask[m_nID].m_szPM = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("PM"));
|
|
// m_pTask[m_nID].m_szOP = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("OP"));
|
|
// m_pTask[m_nID].m_szQA = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("QA"));
|
|
m_pTask[m_nID].m_Rect = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("rect"));
|
|
m_pTask[m_nID].m_RectLocal = (LPCTSTR)(_bstr_t)pRecTzID->GetCollect(_T("rect_loc"));
|
|
|
|
pRecTzID->Close();
|
|
|
|
//取通道信息
|
|
szSql.Empty();
|
|
szSql.Format(_T("select * from tdchannel where TDID = %u"), dwID);
|
|
pRecTzID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_connectPtr, true), adOpenStatic, adLockOptimistic, adCmdText);
|
|
|
|
m_pTask[m_nID].m_TCHID = pRecTzID->GetCollect(_T("ID")).iVal;
|
|
m_pTask[m_nID].m_ChNumber = pRecTzID->GetCollect(_T("CHnumber")).iVal;
|
|
m_pTask[m_nID].m_AR = pRecTzID->GetCollect(_T("AR")).iVal;
|
|
|
|
pRecTzID->Close();
|
|
|
|
m_nID++;
|
|
|
|
}
|
|
catch(_com_error e)
|
|
{
|
|
AfxMessageBox((LPCTSTR)e.Description());
|
|
}
|
|
}
|
|
|
|
_task::_task()
|
|
{
|
|
m_szTdName = _T(""); //测试任务名字
|
|
m_szTdCN = _T(""); //测试任务唯一ID
|
|
m_szTLocation = _T(""); //任务位置
|
|
m_deviceID = 0; //设备ID
|
|
m_SN = _T(""); //设备序列号
|
|
m_iTType = 0; //测试类型 1d,2d,3d
|
|
m_iTMode = 0; //测试模式 RES,IP,SP
|
|
m_iEAmount = 0; //电极数量
|
|
m_iTPAmount = 0; //测点数量
|
|
m_iCHAmount = 0; //通道数量
|
|
m_iN = 0; //迭代次数
|
|
m_iTRWave = 0; //发射波形
|
|
m_iTRFrequency = 0; //发射频率
|
|
m_iIFrequency = 0; //工业披绿
|
|
m_iSAFrequency = 0; //采样频率
|
|
m_iCLayout = 0; //电缆布置方式
|
|
|
|
m_fESpace = _T(""); //电极间隔
|
|
m_iEDistance = _T("");//电极间距
|
|
|
|
m_iWeather = 0; //天气
|
|
m_iWDIR = 0; //风向
|
|
m_fTemperature = 0;//温度
|
|
m_fHeight = 0; //海拔
|
|
m_fHumidity = 0; //湿度
|
|
|
|
m_szCDate = _T(""); //建立日期
|
|
m_szCTime = _T(""); //建立时间
|
|
m_szTDate = _T(""); //测试日期
|
|
m_szTTime = _T(""); //测试时间
|
|
|
|
m_iRDirection = 0; //滚动方向
|
|
|
|
// m_szPM = _T(""); //项目经理
|
|
// m_szOP = _T(""); //操作员
|
|
// m_szQA = _T(""); //质检员
|
|
|
|
m_Rect = _T(""); //矩阵大小
|
|
m_RectLocal = _T("");//矩阵位置
|
|
}
|
|
|
|
_task::~_task()
|
|
{
|
|
|
|
}
|
|
|
|
|
|
BOOL CCombineDlg::InsertDataToDB()
|
|
{
|
|
CString szSql = _T("");
|
|
|
|
_CommandPtr pCmdIns;
|
|
|
|
pCmdIns.CreateInstance(_uuidof(Command));
|
|
pCmdIns->ActiveConnection = m_connectPtr;
|
|
|
|
for (int n = 0; n < m_nSum; n++)
|
|
{
|
|
try
|
|
{
|
|
szSql.Empty();
|
|
szSql.Format("insert into td3dcon(TCHID,TSN,C1,C2,P1,P2,N,K,I,V,R0,SP,bUse,Vrawdata,Irawdata) select %d,TSN,C1,C2,P1,P2,N,K,I,V,R0,SP,bUse,Vrawdata,Irawdata from td3dcon where TCHID = %d",m_tchID, m_pTask[n].m_TCHID);
|
|
|
|
pCmdIns->CommandText = szSql.AllocSysString();
|
|
pCmdIns->Execute(NULL, NULL, adCmdText);
|
|
}
|
|
catch(_com_error* e)
|
|
{
|
|
AfxMessageBox((LPCTSTR)e->Description());
|
|
}
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
CString CCombineDlg::GetTaskName()
|
|
{
|
|
CString szName = _T("");
|
|
|
|
for (int n = 0; n < m_nSum; n++)
|
|
{
|
|
szName = szName + m_pTask[n].m_szTdName + "-";
|
|
}
|
|
|
|
szName = szName.Left(szName.GetLength() - 1);
|
|
|
|
return szName;
|
|
}
|
|
|
|
CString CCombineDlg::GetTdCN(CString f_CN)
|
|
{
|
|
CString szHeader = _T("");
|
|
|
|
szHeader = f_CN.Left(4);//取出测试任务头部的测试类型
|
|
|
|
CTime time;
|
|
time = CTime::GetCurrentTime();
|
|
|
|
szHeader = szHeader + time.FormatGmt(_T("%Y%m%d"))+time.FormatGmt(_T("%H%M%S"));
|
|
|
|
return szHeader;
|
|
}
|
|
|
|
int CCombineDlg::GetTpAmount()
|
|
{
|
|
int nCount = 0;//计算测点总数
|
|
|
|
for (int n = 0; n < m_nSum; n++)
|
|
{
|
|
nCount += m_pTask[n].m_iTPAmount;
|
|
}
|
|
|
|
return nCount;
|
|
}
|
|
|
|
BOOL CCombineDlg::CalcCombineRectAndEDistance()
|
|
{
|
|
if (NULL == m_pTask)
|
|
{
|
|
return FALSE;
|
|
}
|
|
std::vector<int> nXInfo;
|
|
std::vector<int> nYInfo;
|
|
float fMinXVal = 0, fMaxXVal = 0;
|
|
float fMinYVal = 0, fMaxYVal = 0;
|
|
int nTotalXGridCnt = 0, nTotalYGridCnt = 0;
|
|
CStringArray strArray;
|
|
CString strErr;
|
|
for (int i = 0; i < m_nSum; i++)
|
|
{
|
|
strArray.RemoveAll();
|
|
SplitterString(strArray, m_pTask[i].m_RectLocal, ",");
|
|
if (2 > strArray.GetSize())
|
|
{
|
|
return FALSE;
|
|
}
|
|
//获取最小的X,Y位置,将各个任务的起始点的X,Y来作为对比
|
|
float fXLoc = atof(strArray.GetAt(0));
|
|
float fYLoc = atof(strArray.GetAt(1));
|
|
if (fMinXVal > fXLoc)
|
|
{
|
|
fMinXVal = fXLoc;
|
|
}
|
|
if (fMinYVal > fYLoc)
|
|
{
|
|
fMinYVal = fYLoc;
|
|
}
|
|
|
|
float fXEDis = 0, fYEDis = 0;
|
|
strArray.RemoveAll();
|
|
//在这里,如果存在着 ",1" 这种字符串,则会将1赋给XEDistance
|
|
SplitterString(strArray, m_pTask[i].m_iEDistance, ",");
|
|
if (0 == strArray.GetSize())
|
|
{
|
|
return FALSE;
|
|
}
|
|
//获取X,Y轴的电极间距
|
|
if (strArray.GetSize() > 1)
|
|
{
|
|
fYEDis = atof(strArray.GetAt(1));
|
|
}
|
|
fXEDis = atof(strArray.GetAt(0));
|
|
|
|
//获取网格的大小
|
|
strArray.RemoveAll();
|
|
SplitterString(strArray, m_pTask[i].m_Rect, ",");
|
|
if (4 != strArray.GetSize())
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
int nXGridSize = atoi(strArray[2]) - atoi(strArray[0]) + 1;
|
|
int nYGridSize = atoi(strArray[3]) - atoi(strArray[1]) + 1;
|
|
nTotalXGridCnt += nXGridSize;
|
|
nTotalYGridCnt += nYGridSize;
|
|
|
|
fXLoc += fXEDis*(nXGridSize - 1);
|
|
fYLoc += fYEDis*(nYGridSize - 1);
|
|
//获取最大的X,Y轴的位置
|
|
if (fXLoc > fMaxXVal)
|
|
{
|
|
fMaxXVal = fXLoc;
|
|
}
|
|
if (fYLoc > fMaxYVal)
|
|
{
|
|
fMaxYVal = fYLoc;
|
|
}
|
|
|
|
}
|
|
|
|
if (nTotalXGridCnt > 1)
|
|
{
|
|
m_fCombiXDistance = (fMaxXVal - fMinXVal)/(nTotalXGridCnt - 1);
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
|
|
if (nTotalYGridCnt > 1)
|
|
{
|
|
m_fCombiYDistance = (fMaxYVal - fMinYVal)/(nTotalYGridCnt - 1);
|
|
}
|
|
|
|
m_nCombiXGridSize = nTotalXGridCnt;
|
|
m_nCOmbiYGridSize = nTotalYGridCnt;
|
|
return TRUE;
|
|
} |