244 lines
6.7 KiB
C++
244 lines
6.7 KiB
C++
// DialListMeasuGR.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "geomative.h"
|
|
#include "DialListRealTimeMeasuGR.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDialListRealTimeMeasuGR dialog
|
|
|
|
extern CGeoMativeApp theApp;
|
|
extern int g_iUILanguage;
|
|
extern CString GetGrCodeText(int iCode);
|
|
CDialListRealTimeMeasuGR::CDialListRealTimeMeasuGR(CWnd* pParent /*=NULL*/)
|
|
: CNetRequestDialog(CDialListRealTimeMeasuGR::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CDialListRealTimeMeasuGR)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
m_iSptType = -1;
|
|
}
|
|
|
|
|
|
void CDialListRealTimeMeasuGR::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CNetRequestDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CDialListRealTimeMeasuGR)
|
|
DDX_Control(pDX, IDC_LIST_GR, m_listData);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDialListRealTimeMeasuGR, CNetRequestDialog)
|
|
//{{AFX_MSG_MAP(CDialListRealTimeMeasuGR)
|
|
ON_WM_SHOWWINDOW()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDialListRealTimeMeasuGR message handlers
|
|
|
|
BOOL CDialListRealTimeMeasuGR::OnInitDialog()
|
|
{
|
|
CNetRequestDialog::OnInitDialog();
|
|
|
|
// TODO: Add extra initialization here
|
|
CString strColTitle;
|
|
|
|
int iColIndex = 0;
|
|
CRect rect;
|
|
GetClientRect(&rect);
|
|
int iWidth = rect.right - rect.left;
|
|
int iColCount = 5;
|
|
m_listData.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP
|
|
| LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES);
|
|
|
|
m_listData.InsertColumn(iColIndex++, _T("ID"), LVCFMT_LEFT, iWidth/iColCount);
|
|
|
|
// strColTitle.Empty();
|
|
// strColTitle.LoadString(IDS_MEASU_GR_P1+g_UIOffset);
|
|
|
|
m_listData.InsertColumn(iColIndex++, _T("P1(Ω)"), LVCFMT_CENTER, iWidth / iColCount+20);
|
|
|
|
// strColTitle.Empty();
|
|
// strColTitle.LoadString(IDS_MEASU_GR_STATUS+g_UIOffset);
|
|
m_listData.InsertColumn(iColIndex++, _T("Status"), LVCFMT_CENTER, iWidth / iColCount+40);
|
|
|
|
// strColTitle.Empty();
|
|
// strColTitle.LoadString(IDS_MEASU_GR_P2+g_UIOffset);
|
|
m_listData.InsertColumn(iColIndex++, _T("P2(Ω)"), LVCFMT_CENTER, iWidth / iColCount+20);
|
|
|
|
// strColTitle.Empty();
|
|
// strColTitle.LoadString(IDS_MEASU_GR_STATUS+g_UIOffset);
|
|
m_listData.InsertColumn(iColIndex++, _T("Status"), LVCFMT_CENTER, iWidth / iColCount+40);
|
|
InitiShowGR();
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CDialListRealTimeMeasuGR::InitiShowGR()
|
|
{
|
|
if (0 == m_iSptType)
|
|
{
|
|
m_listData.InsertItem(0, _T("AB"));
|
|
if (0 == theApp.m_ucIsMultiChannel )
|
|
m_listData.InsertItem(1, _T("MN"));
|
|
|
|
}
|
|
}
|
|
|
|
void CDialListRealTimeMeasuGR::OnShowWindow(BOOL bShow, UINT nStatus)
|
|
{
|
|
CNetRequestDialog::OnShowWindow(bShow, nStatus);
|
|
|
|
// TODO: Add your message handler code here
|
|
|
|
if (TRUE == bShow)
|
|
{
|
|
CRect rect;
|
|
GetClientRect(&rect);
|
|
|
|
//rect.left += 5;
|
|
//rect.top += 5;
|
|
//rect.right -= 5;
|
|
//rect.bottom -= 5;
|
|
m_listData.MoveWindow(&rect);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
void CDialListRealTimeMeasuGR::GetGRRequest(STRemTaskArg stTaskArg)
|
|
{
|
|
//清空列表
|
|
m_listData.DeleteAllItems();
|
|
|
|
m_stTaskArg = stTaskArg;
|
|
|
|
char chStr[210] = { 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);
|
|
|
|
PostNetRequest(EN_REQ_DOWNLOAD_RG_INFO, this->m_hWnd, chStr, iSendLen, MAX_RECV_ELOC_SIZE);
|
|
}
|
|
|
|
void CDialListRealTimeMeasuGR::PreNetResponse(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
LPRESPONSEPACKET pResponsePacket = (LPRESPONSEPACKET)lParam;
|
|
if (pResponsePacket == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
switch (pResponsePacket->clsPacketBase.ucCmd)
|
|
{
|
|
case EN_REQ_DOWNLOAD_RG_INFO:
|
|
{
|
|
if ((pResponsePacket->wDataLen < 0))
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
{
|
|
AfxMessageBox(_T("查看接地电阻数据失败"));
|
|
}
|
|
else
|
|
{
|
|
MessageBoxEx(NULL, _T("Failed to check ground resistance data"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
}
|
|
return;
|
|
}
|
|
|
|
INT32* pTotalElec = (INT32*)(&pResponsePacket->pData[MAX_NAME_LEN]);
|
|
INT32 iTotalElec = ntohl(*pTotalElec);
|
|
char chMsgSyn[MAX_RECV_ELOC_SIZE] = { 0 };
|
|
memcpy(chMsgSyn, pResponsePacket->pData, pResponsePacket->wDataLen);
|
|
INT32 iElecID = 0;
|
|
CString strEcode;
|
|
CString strOMVal;
|
|
CString strStatus;
|
|
CString strOMVal1;
|
|
CString strStatus1;
|
|
STMeasuSigGRResult* pGrInfo = NULL;
|
|
int iOMVal = -1, iOMVal1 = -1;
|
|
COLORREF color = RGB(0, 0, 0);
|
|
for (int iIndex = 0; iIndex < iTotalElec; iIndex++)
|
|
{
|
|
strOMVal.Empty();
|
|
strStatus.Empty();
|
|
strOMVal1.Empty();
|
|
strStatus1.Empty();
|
|
pGrInfo = (STMeasuSigGRResult*)(&pResponsePacket->pData[MAX_NAME_LEN + sizeof(INT32) + iIndex*sizeof(STMeasuSigGRResult)]);
|
|
//pGrInfo = (STMeasuSigGRResult*)(pResponsePacket->pData[1] + iIndex);
|
|
if (0 == m_stTaskArg.stMeasuArg.ucSptType)
|
|
iElecID = (INT32)pGrInfo->ucElecID;
|
|
else
|
|
iElecID = (INT32)pGrInfo->ucElecID;
|
|
strEcode.Format(_T("%d"), ntohl(iElecID));
|
|
iOMVal = (int)(ntohl(pGrInfo->iP1));
|
|
iOMVal1 = (int)(ntohl(pGrInfo->iP2));
|
|
if (-1 != iOMVal)
|
|
{
|
|
strOMVal.Format(_T("%d"), iOMVal);
|
|
strStatus = GetGrCodeText(pGrInfo->ucP1Status);
|
|
}
|
|
if (-1 != iOMVal1)
|
|
{
|
|
strOMVal1.Format(_T("%d"), iOMVal1);
|
|
strStatus1 = GetGrCodeText(pGrInfo->ucP2Status);
|
|
}
|
|
|
|
m_listData.InsertItem(iIndex, strEcode);
|
|
m_listData.SetItemText(iIndex, 0, strEcode);
|
|
m_listData.SetItemText(iIndex, 1, strOMVal);
|
|
if (!strOMVal.IsEmpty())
|
|
{
|
|
switch (pGrInfo->ucP1Status)
|
|
{
|
|
case 1://短路
|
|
case 2://开路
|
|
m_listData.SetItemTextColor(2, iIndex, RGB(255, 0, 0));
|
|
break;
|
|
case 3://过大
|
|
m_listData.SetItemTextColor(2, iIndex, RGB(0, 0, 255));
|
|
break;
|
|
default:
|
|
m_listData.UpdateItemTextColor(2, iIndex, color);
|
|
break;
|
|
}
|
|
}
|
|
m_listData.SetItemText(iIndex, 2, strStatus);
|
|
m_listData.SetItemText(iIndex, 3, strOMVal1);
|
|
if (!strOMVal1.IsEmpty())
|
|
{
|
|
switch (pGrInfo->ucP2Status)
|
|
{
|
|
case 1://短路
|
|
case 2://开路
|
|
m_listData.SetItemTextColor(4, iIndex, RGB(255, 0, 0));
|
|
break;
|
|
case 3://过大
|
|
m_listData.SetItemTextColor(4, iIndex, RGB(0, 0, 255));
|
|
break;
|
|
default:
|
|
m_listData.UpdateItemTextColor(4, iIndex, color);
|
|
break;
|
|
}
|
|
}
|
|
m_listData.SetItemText(iIndex, 4, strStatus1);
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
} |