1806 lines
58 KiB
C++
1806 lines
58 KiB
C++
// devmngframe.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "geomative.h"
|
|
#include "devmngframe.h"
|
|
#include "Constant.h"
|
|
#include "blankview.h"
|
|
#include "MainFrm.h"
|
|
#include "DevOperator.h"
|
|
#include "appdevview.h"
|
|
#include "appdevolview.h"
|
|
|
|
#include "appdevoldetaillistview.h"
|
|
#include "FileOperTools.h"
|
|
#include "DetcGD10Dev.h"
|
|
#include "DialUpgDeviceInfo.h"
|
|
#include "DialExpDiagnosis.h"
|
|
#include "DialRollCallCable.h"
|
|
#include "CtrlProtocolDef.h"
|
|
#include "DialShowDevParam.h"
|
|
#include "DialTaskManager.h"
|
|
#include "DialOfflineDeviceTaskManager.h"
|
|
#include "DialTaskManagerOffline.h"
|
|
#include "DialTimerTask.h"
|
|
#include "DialTimerTaskMeasu.h"
|
|
#include "DialPlcStatusSetting.h"
|
|
#include "DialPlcStatusShow.h"
|
|
#include "DialDevStatusTimerShow.h"
|
|
#include "DialQueryPLCStatus.h"
|
|
#include "DialMeasuTaskPacket.h"
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
extern CGeoMativeApp theApp;
|
|
extern int g_UIOffset;
|
|
extern int g_iUILanguage;
|
|
extern DWORD g_dwDeviceSN;
|
|
extern DWORD g_dwPLCID;
|
|
extern int g_iOnLineVersion;
|
|
extern float tcp_htonf(float f);
|
|
extern float tcp_ntohf(float f);
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDevMngFrame
|
|
IMPLEMENT_DYNCREATE(CDevMngFrame, CMDIChildWnd)
|
|
|
|
CDevMngFrame::CDevMngFrame()
|
|
{
|
|
m_pAppDevView = NULL;
|
|
m_pNavDevView = NULL;
|
|
m_bAutoMenuEnable = FALSE;
|
|
m_pDevOperator = new CDevOperator(theApp.m_pConnection);
|
|
m_bIsUpdateDev = false;
|
|
m_bIsUpdateFuncBoard = false;
|
|
m_bIsActive = FALSE;
|
|
m_strDiagnosisPath = _T("");
|
|
memset(m_chRevBuf, 0, sizeof(m_chRevBuf));
|
|
m_iRcvLen = 0;
|
|
m_ucCmd = 255;
|
|
m_ucDevType = 255;
|
|
m_uiDevID = 0;
|
|
m_bIsPowerTfeqChg = false;
|
|
m_ucCableType = 0;
|
|
m_bDevState = FALSE;
|
|
//m_iPlcTimerInterval = 1200;
|
|
m_iPlcTimerInterval=GetPrivateProfileInt("PLC_SET","TimeInterval",1200,_T("./config.ini"));
|
|
ASSERT(NULL != m_pDevOperator);
|
|
m_IsOffFlag = TRUE;
|
|
}
|
|
|
|
CDevMngFrame::~CDevMngFrame()
|
|
{
|
|
if (m_pDevOperator != NULL)
|
|
{
|
|
delete m_pDevOperator;
|
|
m_pDevOperator= NULL;
|
|
}
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDevMngFrame, CMDIChildWnd)
|
|
//{{AFX_MSG_MAP(CDevMngFrame)
|
|
ON_WM_MDIACTIVATE()
|
|
ON_WM_CLOSE()
|
|
ON_MESSAGE(WM_SCHEDULE, OnSchedule)
|
|
ON_MESSAGE(WM_REFRESH_NAV_DEVICE, OnRefreshNavDevice)
|
|
ON_MESSAGE(WM_NET_RESPONSE, PreNetResponse)
|
|
ON_COMMAND(IDM_OP_DE_REG_O_UPG, OnDevieUpgrade)
|
|
ON_COMMAND(IDM_OP_DE_REG_O_MP, OnModifyDeviceParameter)
|
|
// ON_COMMAND(IDM_OP_DE_REG_O_UPG_FUNC_BOARD, OnUpgradeFunctionBoard)
|
|
//
|
|
ON_COMMAND(IDM_OP_DE_REG_O_TIME_WINDOW, OnModifyObservationTime)
|
|
//
|
|
ON_COMMAND(IDM_OP_DE_GET_ANALYSE_INFO, OnGetAnlyseInfo)
|
|
|
|
ON_COMMAND(IDM_OP_DE_NEW_O_REG, OnRegisterNewDevice)
|
|
|
|
ON_COMMAND(IDM_OP_DE_REG_O_REF_ALLPOLE, OnRefreshAllGRRec)
|
|
ON_COMMAND(IDM_OP_DE_REG_O_SHOW_CABLEHEAD, OnShowCableHeadDlg)
|
|
|
|
ON_MESSAGE(WM_DEVREFRESHGRREC, OnRefreshGRRec)
|
|
|
|
ON_COMMAND(IDM_REM_GD10_ROLLCALL, OnRemGD10RollCall)
|
|
ON_COMMAND(IDM_REM_GD10_SYN_PARAM, OnRemGD10SynParam)
|
|
ON_COMMAND(IDM_REM_GD10_TASK_MANAGER, OnRemGD10TaskManage)
|
|
ON_COMMAND(IDM_REM_GD10_TIMER_TASK_CFG, OnRemGD10TimerTdCfg)
|
|
ON_COMMAND(IDM_REM_GD10_TIMER_TASK_RUN, OnRemGD10TimerTdRun)
|
|
ON_COMMAND(IDM_TRUST_TASK_MANAGER, OnTrustTaskManager)
|
|
ON_COMMAND(IDM_OFFLINE_DEVICE_TASK_MANAGER, OnViewOfflineDeviceTaskManager)
|
|
ON_COMMAND(IDM_REM_PLC_POWER_ON, OnRemPlcPowOn)
|
|
ON_COMMAND(IDM_REM_PLC_POWER_OFF, OnRemPlcPowOff)
|
|
ON_COMMAND(IDM_REM_PLC_SETTING, OnRemPlcSetting)
|
|
ON_COMMAND(IDM_REM_PLC_QUERY_STATUS, OnRemQueryPlcStatus)
|
|
ON_COMMAND(IDM_REM_GD10_TASK_PACKET, OnRemMeasuTaskPacket)
|
|
|
|
|
|
ON_COMMAND(IDM_OP_DE_REG_O_UNREG, OnUnregisterDevice)
|
|
ON_MESSAGE(WM_CLOSE_FRAME_WINDOW, OnCloseFrameWindow)
|
|
ON_MESSAGE(WM_SHOW_DEV_PARAM, OnShowDevParam)
|
|
|
|
// ON_COMMAND(IDM_OP_DE_REG_O_RM_DIAGNOSIS, OnRemoteDiagnosis)
|
|
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDevMngFrame message handlers
|
|
|
|
BOOL CDevMngFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
|
|
{
|
|
// TODO: Add your specialized code here and/or call the base class
|
|
|
|
m_splitter.CreateStatic(this, SPL_WND_A_ROW, SPL_WND_A_COL);
|
|
|
|
m_splitter.CreateView(SPL_VIEW_ROW_0, SPL_VIEW_COL_0, RUNTIME_CLASS(CNavDevView),
|
|
CSize(SPL_VIEW_NAV_WIDTH, SPL_VIEW_NAV_HEIGHT), pContext);
|
|
m_pNavDevView = static_cast<CView*>(m_splitter.GetPane(SPL_VIEW_ROW_0, SPL_VIEW_COL_0));
|
|
ASSERT(m_pNavDevView != NULL);
|
|
|
|
m_splitter.CreateView(SPL_VIEW_ROW_0, SPL_VIEW_COL_1, RUNTIME_CLASS(CBlankView),
|
|
CSize(SPL_VIEW_NAV_WIDTH, SPL_VIEW_NAV_HEIGHT), pContext);
|
|
m_pAppDevView = static_cast<CView*>(m_splitter.GetPane(SPL_VIEW_ROW_0, SPL_VIEW_COL_1));
|
|
ASSERT(m_pAppDevView != NULL);
|
|
|
|
return CMDIChildWnd::OnCreateClient(lpcs, pContext);
|
|
}
|
|
|
|
void CDevMngFrame::OnMDIActivate(BOOL bActivate, CWnd* pActivateWnd, CWnd* pDeactivateWnd)
|
|
{
|
|
CMDIChildWnd::OnMDIActivate(bActivate, pActivateWnd, pDeactivateWnd);
|
|
|
|
// TODO: Add your message handler code here
|
|
m_bIsActive = bActivate;
|
|
if (TRUE == bActivate) //当MDI窗口处于激活状态,bActive的值为TRUE;
|
|
{
|
|
DWORD dwItemHandle = (DWORD)VAL_ZERO;
|
|
DWORD dwImageState = (DWORD)VAL_ZERO;
|
|
UINT uStyle = (UINT)VAL_ZERO;
|
|
UINT uState = (UINT)VAL_ZERO;
|
|
|
|
HTREEITEM hDevItem = NULL;
|
|
|
|
CString strTitle;
|
|
strTitle.LoadString(IDS_DEV_MANAGE+g_UIOffset);
|
|
if (GetTitle() != strTitle)
|
|
{
|
|
SetTitle((LPCTSTR)strTitle);
|
|
m_pDevOperator->InitialNavDevView((CNavDevView*)m_pNavDevView);
|
|
}
|
|
|
|
hDevItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetSelectedItem();
|
|
if (NULL != hDevItem)
|
|
{
|
|
dwItemHandle = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemData(hDevItem);
|
|
dwImageState = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemState(hDevItem, TVIS_STATEIMAGEMASK);
|
|
uStyle = m_pDevOperator->m_handleProcessor.GetStyleFromHandle(dwItemHandle);
|
|
uState = m_pDevOperator->m_stateProcessor.ChangeToItemState(dwImageState);
|
|
|
|
::SendMessage(((CMainFrame*)AfxGetMainWnd())->m_hWnd, WM_SCHEDULE, (WPARAM)uStyle, (LPARAM)uState);
|
|
}
|
|
else
|
|
{
|
|
::SendMessage(((CMainFrame*)AfxGetMainWnd())->m_hWnd, WM_SCHEDULE, (WPARAM)VAL_ZERO, (LPARAM)VAL_ZERO);
|
|
}
|
|
}
|
|
else //当MDI窗口处于非激活状态或即将关闭,bActive的值为FALSE;
|
|
{
|
|
if (NULL != ((CMainFrame*)GetParentFrame())->m_pDevMngFrm)
|
|
{
|
|
::SendMessage(((CMainFrame*)AfxGetMainWnd())->m_hWnd, WM_SCHEDULE, (WPARAM)VAL_ZERO, (LPARAM)VAL_ZERO);
|
|
}
|
|
}
|
|
}
|
|
|
|
LRESULT CDevMngFrame::OnCloseFrameWindow(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
OnClose();
|
|
return 0;
|
|
}
|
|
void CDevMngFrame::OnClose()
|
|
{
|
|
// TODO: Add your message handler code here and/or call default
|
|
::SendMessage(GetParentFrame()->m_hWnd, WM_SCHEDULE, (WPARAM)VAL_ZERO, (LPARAM)VAL_ZERO);
|
|
((CMainFrame*)GetParentFrame())->m_pDevMngFrm = NULL;
|
|
m_bIsActive = FALSE;
|
|
CMDIChildWnd::OnClose();
|
|
}
|
|
|
|
LRESULT CDevMngFrame::OnSchedule(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
DWORD dwItemHandle = (DWORD)VAL_ZERO;
|
|
DWORD dwImageState = (DWORD)VAL_ZERO;
|
|
UINT uStyle = (UINT)VAL_ZERO;
|
|
UINT uState = (UINT)VAL_ZERO;
|
|
|
|
dwItemHandle = (DWORD)wParam;
|
|
dwImageState = (DWORD)lParam;
|
|
uStyle = (DWORD)m_pDevOperator->m_handleProcessor.GetStyleFromHandle(dwItemHandle);
|
|
uState = (DWORD)m_pDevOperator->m_stateProcessor.ChangeToItemState(dwImageState);
|
|
|
|
ShowAppView(dwItemHandle, uState);
|
|
|
|
HTREEITEM hDevItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetSelectedItem();
|
|
CString strSN = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemText(hDevItem);
|
|
if ((PZ_STATE_OFFLINE ==uState) &&(-1 != strSN.FindOneOf("PLC")))
|
|
{
|
|
m_bDevState = TRUE;
|
|
uStyle = PZ_STYLE_REMOTE_PLC;
|
|
}
|
|
else
|
|
{
|
|
m_bDevState = FALSE;
|
|
}
|
|
::SendMessage(((CMainFrame*)AfxGetMainWnd())->m_hWnd, WM_SCHEDULE, (WPARAM)uStyle, (LPARAM)uState);
|
|
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CDevMngFrame::OnRefreshGRRec(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
int iItemIndex = (int)wParam;
|
|
CListCtrl &grList = ((CAppDevOLDetailListView*)((CAppDevOLView*)m_pAppDevView)->m_pDevOLGRListView)->GetListCtrl();
|
|
|
|
m_pDevOperator->RefreshGRRec((CNavDevView*)m_pNavDevView, grList, iItemIndex);
|
|
|
|
return 0;
|
|
}
|
|
|
|
void CDevMngFrame::OnRefreshAllGRRec()
|
|
{
|
|
CListCtrl &grList = ((CAppDevOLDetailListView*)((CAppDevOLView*)m_pAppDevView)->m_pDevOLGRListView)->GetListCtrl();
|
|
m_pDevOperator->RefreshAllGRRec((CNavDevView*)m_pNavDevView, grList);
|
|
}
|
|
|
|
bool CDevMngFrame::ShowAppView(DWORD dwHandle, UINT uState)
|
|
{
|
|
DWORD dwDevHandle = (DWORD)VAL_ZERO;
|
|
UINT uStyle = (UINT)VAL_ZERO;
|
|
|
|
uStyle = (DWORD)m_pDevOperator->m_handleProcessor.GetStyleFromHandle(dwHandle);
|
|
|
|
if ((UINT)VAL_ZERO != uState)
|
|
{
|
|
|
|
switch (uState)
|
|
{
|
|
case PZ_STATE_ONLINE:
|
|
if (NULL != m_pAppDevView)
|
|
{
|
|
if (!m_pAppDevView->IsKindOf(RUNTIME_CLASS(CAppDevOLView)))
|
|
{
|
|
m_splitter.DeleteView((int)SPL_VIEW_ROW_0, (int)SPL_VIEW_COL_1);
|
|
m_splitter.CreateView((int)SPL_VIEW_ROW_0, (int)SPL_VIEW_COL_1, RUNTIME_CLASS(CAppDevOLView),
|
|
CSize((int)SPL_VIEW_APP_HEIGHT, (int)SPL_VIEW_APP_WIDTH), NULL);
|
|
m_pAppDevView = static_cast<CView*>(m_splitter.GetPane((int)SPL_VIEW_ROW_0, (int)SPL_VIEW_COL_1));
|
|
}
|
|
m_pDevOperator->ShowOLDeviceInfo(dwHandle, m_pAppDevView);
|
|
}
|
|
break;
|
|
case PZ_STATE_OFFLINE:
|
|
if (NULL != m_pAppDevView)
|
|
{
|
|
if (!m_pAppDevView->IsKindOf(RUNTIME_CLASS(CAppDevView)))
|
|
{
|
|
m_splitter.DeleteView((int)SPL_VIEW_ROW_0, (int)SPL_VIEW_COL_1);
|
|
m_splitter.CreateView((int)SPL_VIEW_ROW_0, (int)SPL_VIEW_COL_1, RUNTIME_CLASS(CAppDevView),
|
|
CSize((int)SPL_VIEW_APP_HEIGHT, (int)SPL_VIEW_APP_WIDTH), NULL);
|
|
m_pAppDevView = static_cast<CView*>(m_splitter.GetPane((int)SPL_VIEW_ROW_0, (int)SPL_VIEW_COL_1));
|
|
}
|
|
m_pDevOperator->ShowFLDeviceInfo(dwHandle, m_pAppDevView);
|
|
}
|
|
break;
|
|
case PZ_STATE_NEW:
|
|
default:
|
|
if (NULL != m_pAppDevView)
|
|
{
|
|
if (!m_pAppDevView->IsKindOf(RUNTIME_CLASS(CBlankView)))
|
|
{
|
|
m_splitter.DeleteView((int)SPL_VIEW_ROW_0, (int)SPL_VIEW_COL_1);
|
|
m_splitter.CreateView((int)SPL_VIEW_ROW_0, (int)SPL_VIEW_COL_1, RUNTIME_CLASS(CBlankView),
|
|
CSize((int)SPL_VIEW_APP_HEIGHT, (int)SPL_VIEW_APP_WIDTH), NULL);
|
|
m_pAppDevView = static_cast<CView*>(m_splitter.GetPane((int)SPL_VIEW_ROW_0, (int)SPL_VIEW_COL_1));
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (NULL != m_pAppDevView)
|
|
{
|
|
if (!m_pAppDevView->IsKindOf(RUNTIME_CLASS(CBlankView)))
|
|
// if (_T("CBlankView") != m_pAppDevView->GetRuntimeClass()->m_lpszClassName)
|
|
{
|
|
m_splitter.DeleteView((int)SPL_VIEW_ROW_0, (int)SPL_VIEW_COL_1);
|
|
m_splitter.CreateView((int)SPL_VIEW_ROW_0, (int)SPL_VIEW_COL_1, RUNTIME_CLASS(CBlankView),
|
|
CSize((int)SPL_VIEW_APP_HEIGHT, (int)SPL_VIEW_APP_WIDTH), NULL);
|
|
m_pAppDevView = static_cast<CView*>(m_splitter.GetPane((int)SPL_VIEW_ROW_0, (int)SPL_VIEW_COL_1));
|
|
}
|
|
}
|
|
}
|
|
m_splitter.RecalcLayout();
|
|
|
|
return true;
|
|
}
|
|
|
|
void CDevMngFrame::OnDevieUpgrade()
|
|
{
|
|
int nRet = 0;
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
nRet = AfxMessageBox(_T("是否要进行升级?"), MB_YESNO);
|
|
else
|
|
nRet = MessageBoxEx(NULL, _T("Do you want to update?"), STRING_MESSAGEBOXEX_TITLE, MB_YESNO, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
if (IDYES != nRet)
|
|
return;
|
|
|
|
if (m_bIsUpdateDev)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("正在升级GD20设备,请稍候..."));
|
|
else
|
|
MessageBoxEx(NULL, _T("Is updating GD20 device,please wait..."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return ;
|
|
}
|
|
m_bIsUpdateDev = true;
|
|
m_pDevOperator->DevieUpgrade((CNavDevView*)m_pNavDevView);
|
|
m_bIsUpdateDev = false;
|
|
Sleep(200);
|
|
((CMainFrame*)AfxGetMainWnd())->SetStatusText("ready");
|
|
}
|
|
void CDevMngFrame::UploadDevinfoToSev(STSynDevParam DevPar)
|
|
{
|
|
extern float tcp_htonf(float f);
|
|
char chMsgSyn[10] = { 0 };
|
|
CString szLabel = _T("");
|
|
int iLen = 0;
|
|
|
|
theApp.m_NetWorkOper.SetSuspendForThread(true);
|
|
//DevPar.uiMachineID = htonl(DevPar.uiMachineID);
|
|
//DevPar.iGrThreshold = htonl(DevPar.iGrThreshold);
|
|
//DevPar.fBatteryVol = tcp_htonf(DevPar.fBatteryVol);
|
|
STRequestPacket requestPacket;
|
|
requestPacket.clsPacketBase.ucCmd = EN_UPLOAD_DEV_INF;
|
|
requestPacket.hWnd = this->m_hWnd;
|
|
requestPacket.wDataLen = sizeof(DevPar);
|
|
requestPacket.pData = new char[requestPacket.wDataLen];
|
|
memcpy(requestPacket.pData, (char*)(&DevPar), requestPacket.wDataLen);
|
|
/*CString strLog;
|
|
strLog.Format(_T("zm:setting GD args info CDevMngFrame::UploadDevinfoToSev fTemperature=%f,fBatteryVol=%f"), DevPar.fTemperature, DevPar.fBatteryVol);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);*/
|
|
float f = DevPar.fBatteryVol;
|
|
float fT = DevPar.fTemperature;
|
|
unsigned char *p,*pT, p0,pT0, p1,pT1;
|
|
p = (unsigned char *)&f;
|
|
p0 = p[0];
|
|
p1 = p[1];
|
|
p[0] = p[3];
|
|
p[3] = p0;
|
|
p[1] = p[2];
|
|
p[2] = p1;
|
|
|
|
pT = (unsigned char*)&fT;
|
|
pT0 = pT[0];
|
|
pT1 = pT[1];
|
|
pT[0] = pT[3];
|
|
pT[3] = pT0;
|
|
pT[1] = pT[2];
|
|
pT[2] = pT1;
|
|
//strLog.Format(_T("zm:DevPar.fTemperature=%0x %0x %0x %0x DevPar.fBatteryVol= %0x %0x %0x %0x"), pT[3], pT[2], pT[1], pT[0], p[3], p[2], p[1], p[0]);
|
|
//CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
theApp.m_NetWorkOper.PutRequestPacket(requestPacket);
|
|
if (requestPacket.pData)
|
|
{
|
|
delete[] requestPacket.pData;
|
|
requestPacket.pData = NULL;
|
|
}
|
|
|
|
/*if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_UPLOAD_DEV_INF, 0xFFFFFFFF, 1, (char*)(&DevPar), sizeof(DevPar)))
|
|
{
|
|
theApp.m_NetWorkOper.SetSuspendForThread(false);
|
|
AfxMessageBox(_T("upload device information send failed"));
|
|
return;
|
|
}
|
|
|
|
if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chMsgSyn, &iLen, 10, 5000))
|
|
{
|
|
BYTE ucReplayFlg = (BYTE)(chMsgSyn[0]);
|
|
if ((ucReplayFlg != 0) || (iLen < 1))
|
|
{
|
|
theApp.m_NetWorkOper.SetSuspendForThread(false);
|
|
//AfxMessageBox(_T("upload device information recv failed"));
|
|
return;
|
|
}
|
|
}*/
|
|
theApp.m_NetWorkOper.SetSuspendForThread(false);
|
|
return;
|
|
}
|
|
LRESULT CDevMngFrame::OnShowDevParam(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
Sleep(200);
|
|
STSynDevParam* pStSynDevParam = (STSynDevParam*)lParam;
|
|
CDialShowDevParam dialShowDebParam;
|
|
pStSynDevParam->uiMachineID = ntohl(pStSynDevParam->uiMachineID);
|
|
pStSynDevParam->fTemperature = tcp_ntohf(pStSynDevParam->fTemperature);
|
|
pStSynDevParam->fBatteryVol = tcp_ntohf(pStSynDevParam->fBatteryVol);
|
|
pStSynDevParam->iGrThreshold = ntohl(pStSynDevParam->iGrThreshold);
|
|
dialShowDebParam.SetDevParam(pStSynDevParam);
|
|
m_bIsPowerTfeqChg = false;
|
|
if (IDOK ==dialShowDebParam.DoModal())
|
|
{
|
|
//成员保存变量,GD设置成功后,发送给云端的数据
|
|
memcpy(&m_stSynDevParam, &dialShowDebParam.m_stDevParam, sizeof(STSynDevParam));
|
|
m_stSynDevParam.uiMachineID = htonl(dialShowDebParam.m_stDevParam.uiMachineID);
|
|
m_stSynDevParam.fTemperature = tcp_htonf(dialShowDebParam.m_stDevParam.fTemperature);
|
|
m_stSynDevParam.fBatteryVol = tcp_htonf(dialShowDebParam.m_stDevParam.fBatteryVol);
|
|
m_stSynDevParam.iGrThreshold = htonl(dialShowDebParam.m_stDevParam.iGrThreshold);
|
|
//CString strLog;
|
|
//strLog.Format(_T("zm:setting GD args info:ID=%u,iGrThreshold=%d,ucPowerFreq=%d,ucBatteryAlarm=%d,ucCableType=%d,ucStacking=%d,ucChannelNum=%d,ucDownLoadNum=%d,fTemperature=%f,fBatteryVol=%f"),\
|
|
m_stSynDevParam.uiMachineID, m_stSynDevParam.iGrThreshold, m_stSynDevParam.ucPowerFreq, m_stSynDevParam.ucBatteryAlarm, m_stSynDevParam.ucCableType, m_stSynDevParam.ucStacking, m_stSynDevParam.ucChannelNum, m_stSynDevParam.ucDownLoadNum, m_stSynDevParam.fTemperature, m_stSynDevParam.fBatteryVol);
|
|
//CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
float f = m_stSynDevParam.fBatteryVol;
|
|
float fT = m_stSynDevParam.fTemperature;
|
|
unsigned char *p, *pT, p0, pT0, p1, pT1;
|
|
p = (unsigned char *)&f;
|
|
p0 = p[0];
|
|
p1 = p[1];
|
|
p[0] = p[3];
|
|
p[3] = p0;
|
|
p[1] = p[2];
|
|
p[2] = p1;
|
|
|
|
pT = (unsigned char*)&fT;
|
|
pT0 = pT[0];
|
|
pT1 = pT[1];
|
|
pT[0] = pT[3];
|
|
pT[3] = pT0;
|
|
pT[1] = pT[2];
|
|
pT[2] = pT1;
|
|
//strLog.Format(_T("zm:DevPar.fTemperature=%0x %0x %0x %0x DevPar.fBatteryVol= %0x %0x %0x %0x"), pT[3], pT[2], pT[1], pT[0], p[3], p[2], p[1], p[0]);
|
|
//CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
|
|
//将数据发个GD设备,一期
|
|
STModifyDevParam stModifyParam;
|
|
stModifyParam.iGrThreshold = htonl(dialShowDebParam.m_stDevParam.iGrThreshold);
|
|
stModifyParam.ucBatteryAlarm = dialShowDebParam.m_stDevParam.ucBatteryAlarm;
|
|
stModifyParam.ucCableType = dialShowDebParam.m_stDevParam.ucCableType;
|
|
stModifyParam.ucPowerFreq = dialShowDebParam.m_stDevParam.ucPowerFreq;
|
|
stModifyParam.ucStacking = dialShowDebParam.m_stDevParam.ucStacking;
|
|
stModifyParam.ucDownLoadNum = dialShowDebParam.m_stDevParam.ucDownLoadNum;
|
|
m_bIsPowerTfeqChg = (pStSynDevParam->ucPowerFreq == stModifyParam.ucPowerFreq) ? false : true;
|
|
|
|
/*STSendDataInfo stSendData;
|
|
stSendData.pData = (char*)(&stModifyParam);
|
|
stSendData.wDataLen = sizeof(stModifyParam);
|
|
stSendData.uiDevID = m_uiDevID;
|
|
stSendData.ucDstType = EN_DEV_GD10;
|
|
memset(m_chRevBuf, 0, sizeof(m_chRevBuf));
|
|
|
|
STRespDataInfo stRspData;
|
|
stRspData.pData = m_chRevBuf;
|
|
stRspData.pRecvLen = &m_iRcvLen;
|
|
stRspData.iMaxRcvLen = MAX_RCV_CTRLBUF;
|
|
stRspData.iTimeout = 6000;
|
|
m_ucCmd = EN_CTRL_SET_DEV_PARAM;
|
|
m_ucDevType = EN_DEV_GD10;
|
|
m_ucCableType = dialShowDebParam.m_stDevParam.ucCableType;
|
|
|
|
if (false==theApp.m_NetWorkOper.TransferOper(m_ucCmd, &stSendData, true, &stRspData, CDevMngFrame::NotifyFunc,this))
|
|
{
|
|
AfxMessageBox(_T("Send synchronization set msg failed"));
|
|
return 1;
|
|
}*/
|
|
|
|
m_ucCmd = EN_CTRL_SET_DEV_PARAM;
|
|
m_ucDevType = EN_DEV_GD10;
|
|
m_ucCableType = dialShowDebParam.m_stDevParam.ucCableType;
|
|
|
|
STRequestPacket requestPacket;
|
|
requestPacket.clsPacketBase.ucCmd = EN_CTRL_SET_DEV_PARAM;
|
|
requestPacket.clsPacketBase.ucDevType = EN_DEV_GD10;
|
|
requestPacket.clsPacketBase.uiDevID = m_uiDevID;
|
|
requestPacket.iTimeout = 6000;
|
|
requestPacket.hWnd = this->m_hWnd;
|
|
requestPacket.wDataLen = sizeof(stModifyParam);
|
|
requestPacket.pData = new char[requestPacket.wDataLen];
|
|
if (requestPacket.pData == NULL)
|
|
{
|
|
return 1;
|
|
}
|
|
memcpy(requestPacket.pData, (char*)(&stModifyParam), requestPacket.wDataLen);
|
|
theApp.m_NetWorkOper.PutRequestPacket(requestPacket);
|
|
if (requestPacket.pData != NULL)
|
|
{
|
|
delete[] requestPacket.pData;
|
|
requestPacket.pData = NULL;
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
//避免用户没有上传设备到云端,因此初始化之前先上传一次
|
|
pStSynDevParam->uiMachineID = htonl(pStSynDevParam->uiMachineID);
|
|
pStSynDevParam->fTemperature = tcp_htonf(pStSynDevParam->fTemperature);
|
|
pStSynDevParam->fBatteryVol = tcp_htonf(pStSynDevParam->fBatteryVol);
|
|
pStSynDevParam->iGrThreshold = htonl(pStSynDevParam->iGrThreshold);
|
|
UploadDevinfoToSev(*pStSynDevParam);
|
|
}
|
|
return 0;
|
|
}
|
|
void CDevMngFrame::OnModifyDeviceParameter()
|
|
{
|
|
CListCtrl &detailList = ((CAppDevOLDetailListView*)((CAppDevOLView*)m_pAppDevView)->m_pDevOLDetailListView)->GetListCtrl();
|
|
m_pDevOperator->ModifyDeviceParameter((CNavDevView*)m_pNavDevView, detailList);
|
|
}
|
|
|
|
void CDevMngFrame::OnRegisterNewDevice()
|
|
{
|
|
m_pDevOperator->RegisterNewDevice((CNavDevView*)m_pNavDevView);
|
|
::SendMessage(((CMainFrame*)AfxGetMainWnd())->m_hWnd, WM_REFRESH, (WPARAM)OP_TD_SYN, (LPARAM)VAL_ZERO);
|
|
}
|
|
|
|
void CDevMngFrame::OnShowCableHeadDlg()
|
|
{
|
|
m_pDevOperator->ShowCableHeadDlg((CNavDevView*)m_pNavDevView);
|
|
}
|
|
|
|
void CDevMngFrame::OnUnregisterDevice()
|
|
{
|
|
int nRet = 0;
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
nRet = AfxMessageBox(_T("是否移除改设备?"), MB_YESNO);
|
|
else
|
|
nRet = MessageBoxEx(NULL, _T("Do you want to remove this device? "), STRING_MESSAGEBOXEX_TITLE, MB_YESNO, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
if (IDYES != nRet)
|
|
return;
|
|
|
|
m_pDevOperator->UnregisterDevice((CNavDevView*)m_pNavDevView);
|
|
}
|
|
|
|
void CDevMngFrame::OnModifyObservationTime()
|
|
{
|
|
if (APP_SUCCESS == m_pDevOperator->ModifyWindowTime((CNavDevView*)m_pNavDevView))
|
|
{
|
|
HTREEITEM hDevItem = NULL;
|
|
DWORD dwItemHandle = (DWORD)VAL_ZERO;
|
|
DWORD dwImageState = (DWORD)VAL_ZERO;
|
|
hDevItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetSelectedItem();
|
|
if (NULL != hDevItem)
|
|
{
|
|
dwItemHandle = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemData(hDevItem);
|
|
dwImageState = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemState(hDevItem, TVIS_STATEIMAGEMASK);
|
|
OnSchedule((WPARAM)dwItemHandle, (LPARAM)dwImageState);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void CDevMngFrame::OnRemoteDiagnosis()
|
|
{
|
|
|
|
}
|
|
|
|
LRESULT CDevMngFrame::OnRefreshNavDevice(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
// if (NULL == m_pNavDevView || NULL == m_pDevOperator)
|
|
// {
|
|
// AfxMessageBox(_T("Neither pNavDevView nor pDevOperator can be null!"));
|
|
// return;
|
|
// }
|
|
m_pDevOperator->InitialNavDevView((CNavDevView*)m_pNavDevView);
|
|
|
|
return 0;
|
|
}
|
|
|
|
void CDevMngFrame::OnGetAnlyseInfo()
|
|
{
|
|
if (m_strDiagnosisPath.IsEmpty())
|
|
{
|
|
CString szCurFilePath = _T("");
|
|
szCurFilePath.Empty();
|
|
szCurFilePath.GetBufferSetLength(256);
|
|
|
|
::GetCurrentDirectory(szCurFilePath.GetLength(), szCurFilePath.GetBuffer(szCurFilePath.GetLength()));
|
|
szCurFilePath.ReleaseBuffer();
|
|
m_strDiagnosisPath.Format(_T("%s\\Diagnosis"),szCurFilePath);
|
|
}
|
|
|
|
CDialExpDiagnosis dialExp;
|
|
dialExp.SetOrgFilePath(m_strDiagnosisPath);
|
|
if (IDOK != dialExp.DoModal())
|
|
{
|
|
return;
|
|
}
|
|
|
|
m_strDiagnosisPath = dialExp.GetFilePath();
|
|
if (m_strDiagnosisPath.IsEmpty())
|
|
{
|
|
return;
|
|
}
|
|
CString strSrc = _T("");
|
|
strSrc.Format(_T("%s/SD/logs"),CDetcGD10Dev::GetInstance()->GetGD10DevAddr());
|
|
CDialUpgDeviceInfo* pDial = new CDialUpgDeviceInfo;
|
|
pDial->Create(IDD_DIALOG_UPG_DEVICE, this);
|
|
pDial->ShowWindow(SW_SHOW);
|
|
pDial->SetShowTxt(_T("Getting diagnosis,please wait..."));
|
|
|
|
if (CFileOperTools::GetInstance()->CopyFolder(strSrc,m_strDiagnosisPath))
|
|
AfxMessageBox(_T("操作失败"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Operation failed"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
|
|
if (pDial != NULL)
|
|
{
|
|
delete pDial;
|
|
pDial = NULL;
|
|
}
|
|
}
|
|
|
|
void CDevMngFrame::OnRemGD10RollCall()
|
|
{
|
|
if (!theApp.m_NetWorkOper.GetLinkStatus())
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("连接中断"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Connect the interrupt"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
HTREEITEM hDevItem = NULL;
|
|
DWORD dwItemHandle = (DWORD)VAL_ZERO;
|
|
hDevItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetSelectedItem();
|
|
CString strSN = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemText(hDevItem);
|
|
if (!strSN.IsEmpty() && strSN.GetLength() < 12)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("远端SN序号错误"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Remote SN serial number error"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
DWORD dwDevID = atoi(strSN.Mid(2,9));
|
|
CDialRollCallCable dialRollCall;
|
|
dialRollCall.SetDstDevID(dwDevID);
|
|
dialRollCall.SetCableType(theApp.m_iCableType);
|
|
dialRollCall.DoModal();
|
|
}
|
|
void CDevMngFrame::OnRemGD10SynParam()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
HTREEITEM hDevItem = NULL;
|
|
DWORD dwItemHandle = (DWORD)VAL_ZERO;
|
|
// DWORD dwImageState = (DWORD)VAL_ZERO;
|
|
hDevItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetSelectedItem();
|
|
CString strSN = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemText(hDevItem);
|
|
if (!strSN.IsEmpty() && strSN.GetLength() < 12)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("远端SN序号错误"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Remote SN serial number error"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
|
|
return;
|
|
}
|
|
DWORD dwDevID = atoi(strSN.Mid(2,9));
|
|
// dwItemHandle = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemData(hDevItem);
|
|
// DWORD dwDevID = (DWORD)m_pDevOperator->m_handleProcessor.GetStyleFromHandle(dwItemHandle);
|
|
m_uiDevID = dwDevID;
|
|
/*STSendDataInfo stSendData;
|
|
stSendData.pData = NULL;
|
|
stSendData.wDataLen = 0;
|
|
stSendData.uiDevID = m_uiDevID;
|
|
stSendData.ucDstType = EN_DEV_GD10;
|
|
memset(m_chRevBuf, 0, sizeof(m_chRevBuf));
|
|
STRespDataInfo stRspData;
|
|
stRspData.pData = m_chRevBuf;
|
|
stRspData.pRecvLen = &m_iRcvLen;
|
|
stRspData.iMaxRcvLen = MAX_RCV_CTRLBUF;
|
|
stRspData.iTimeout = 30000;
|
|
m_ucCmd = EN_CTRL_SYN_DEV_PARAM;
|
|
m_ucDevType = EN_DEV_GD10;*/
|
|
/*if (false==theApp.m_NetWorkOper.TransferOper(m_ucCmd, &stSendData, true, &stRspData, CDevMngFrame::NotifyFunc,this))
|
|
{
|
|
AfxMessageBox(_T("Send synchronization msg failed"));
|
|
return;
|
|
}*/
|
|
|
|
|
|
m_ucCmd = EN_CTRL_SYN_DEV_PARAM;//暂时保存,修改接口后应该没什么用
|
|
m_ucDevType = EN_DEV_GD10;//暂时保存,修改接口后应该没什么用
|
|
|
|
STRequestPacket requestPacket;
|
|
requestPacket.clsPacketBase.ucCmd = EN_CTRL_SYN_DEV_PARAM;
|
|
requestPacket.clsPacketBase.ucDevType = EN_DEV_GD10;
|
|
requestPacket.clsPacketBase.uiDevID = m_uiDevID;
|
|
requestPacket.iTimeout = 30000;
|
|
requestPacket.hWnd = this->m_hWnd;
|
|
requestPacket.wDataLen = 0;
|
|
requestPacket.pData = NULL;
|
|
theApp.m_NetWorkOper.PutRequestPacket(requestPacket);
|
|
//CFileOperTools::GetInstance()->WriteComLog(_T("zm:CDevMngFrame::OnRemGD10SynParam() send device syn request************"));
|
|
// if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_CTRL_SYN_DEV_PARAM,dwDevID, EN_DEV_GD10, NULL, 0))
|
|
// {
|
|
// AfxMessageBox(_T("同步失败"));
|
|
// return;
|
|
// }
|
|
// Sleep(300);
|
|
// char chData[100] = {0};
|
|
// int iRecvLen = 0;
|
|
// if (EN_RECV_SUCCESS != theApp.m_NetWorkOper.RecvMsgDirect(chData, &iRecvLen, 100, 9000))
|
|
// {
|
|
// AfxMessageBox(_T("接收数据失败"));
|
|
// return;
|
|
// }
|
|
// if (iRecvLen != sizeof(STSynDevParam))
|
|
// {
|
|
// AfxMessageBox(_T("长度校验失败"));
|
|
// return;
|
|
// }
|
|
/*
|
|
STSynDevParam* pStSynDevParam = (STSynDevParam*)chData;
|
|
CDialShowDevParam dialShowDebParam;
|
|
dialShowDebParam.SetDevParam(pStSynDevParam);
|
|
if (IDOK ==dialShowDebParam.DoModal())
|
|
{
|
|
STModifyDevParam stModifyParam;
|
|
stModifyParam.iGrThreshold = htonl(dialShowDebParam.m_stDevParam.iGrThreshold);
|
|
stModifyParam.ucBatteryAlarm = dialShowDebParam.m_stDevParam.ucBatteryAlarm;
|
|
stModifyParam.ucCableType = dialShowDebParam.m_stDevParam.ucCableType;
|
|
stModifyParam.ucPowerFreq = dialShowDebParam.m_stDevParam.ucPowerFreq;
|
|
stModifyParam.ucStacking = dialShowDebParam.m_stDevParam.ucStacking;
|
|
|
|
bool bIsPowerTfeqChg = (pStSynDevParam->ucPowerFreq == stModifyParam.ucPowerFreq) ? false : true;
|
|
if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_CTRL_SET_DEV_PARAM, dwDevID,EN_DEV_GD10,(char*)(&stModifyParam), sizeof(stModifyParam)))
|
|
{
|
|
AfxMessageBox(_T("设置参数信息失败"));
|
|
return;
|
|
}
|
|
iRecvLen = 0;
|
|
memset(chData, 0, sizeof(chData));
|
|
if (EN_RECV_SUCCESS != theApp.m_NetWorkOper.RecvMsgDirect(chData, &iRecvLen, 100, 6000))
|
|
{
|
|
AfxMessageBox(_T("接收数据失败"));
|
|
return;
|
|
}
|
|
CString strErr = _T("");
|
|
if (2 != iRecvLen)
|
|
{
|
|
strErr.Format(_T("数据响应长度(%d)错误"),iRecvLen);
|
|
AfxMessageBox(strErr);
|
|
return;
|
|
}
|
|
WORD wRes = *((WORD*)chData);
|
|
wRes = ntohs(wRes);
|
|
if (0 == wRes)
|
|
{
|
|
strErr.Empty();
|
|
if (bIsPowerTfeqChg)
|
|
strErr = _T("\r\n但由于修改了工业频率, 请重启主机设备");
|
|
AfxMessageBox(_T("参数设置成功")+strErr);
|
|
theApp.m_iCableType = dialShowDebParam.m_stDevParam.ucCableType;
|
|
}
|
|
else
|
|
{
|
|
strErr.Empty();
|
|
strErr.Format(_T("参数设置错误,返回错误码= %d"),wRes);
|
|
AfxMessageBox(strErr);
|
|
return;
|
|
}
|
|
}
|
|
*/
|
|
|
|
}
|
|
|
|
//非在线任务管理
|
|
void CDevMngFrame::OnRemGD10TaskManage()
|
|
{
|
|
HTREEITEM hDevItem = NULL;
|
|
DWORD dwItemHandle = (DWORD)VAL_ZERO;
|
|
// DWORD dwImageState = (DWORD)VAL_ZERO;
|
|
hDevItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetSelectedItem();
|
|
CString strSN = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemText(hDevItem);
|
|
if (!strSN.IsEmpty() && strSN.GetLength() < 12)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("远端SN序号错误"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Remote SN serial number error"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
|
|
return;
|
|
}
|
|
DWORD dwDevID = atoi(strSN.Mid(2,9));
|
|
CDialTaskManagerOffline dialTaskManageOffline;
|
|
dialTaskManageOffline.SetDstDevID(dwDevID);
|
|
dialTaskManageOffline.DoModal();
|
|
AfxGetApp()->m_pMainWnd->SendMessage(WM_REFRESH, OP_TD_SYN, 0);
|
|
|
|
}
|
|
|
|
//查看离线设备的服务端信息
|
|
void CDevMngFrame::OnViewOfflineDeviceTaskManager()
|
|
{
|
|
//CFileOperTools::GetInstance()->WriteComLog(_T("zm:Offline task manager test---------- begin"));
|
|
HTREEITEM hDevItem = NULL;
|
|
DWORD dwItemHandle = (DWORD)VAL_ZERO;
|
|
// DWORD dwImageState = (DWORD)VAL_ZERO;
|
|
hDevItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetSelectedItem();
|
|
CString strDeviceSN;
|
|
strDeviceSN = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemText(hDevItem);
|
|
|
|
//查找PLC设备
|
|
DWORD dwStyle = 0;
|
|
CString strPLCID;
|
|
HTREEITEM hNextItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetNextSiblingItem(hDevItem);
|
|
while (hNextItem != NULL)
|
|
{
|
|
strPLCID = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemText(hNextItem);
|
|
if (strPLCID.Mid(0, 3).Compare(_T("PLC")) == 0)
|
|
{
|
|
strPLCID = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemText(hNextItem);
|
|
if (!strPLCID.IsEmpty())
|
|
{
|
|
g_dwPLCID = atoi(strPLCID.Mid(3, 10));
|
|
}
|
|
break;
|
|
}
|
|
hNextItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetNextSiblingItem(hNextItem);
|
|
}
|
|
|
|
if (!strDeviceSN.IsEmpty() && strDeviceSN.GetLength() < 11)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("远端SN序号错误"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Remote SN serial number error"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
|
|
return;
|
|
}
|
|
g_dwDeviceSN = atoi(strDeviceSN.Mid(2, 9));
|
|
CDialOfflineDeviceTaskManager dialTaskManage;
|
|
dialTaskManage.SetDeviceID(g_dwDeviceSN);
|
|
dialTaskManage.SetPLCID(g_dwPLCID);
|
|
CString strLog;
|
|
strLog.Format(_T("CDevMngFrame::OnViewOfflineDeviceTaskManager() DeviceSN=%u PLCID=%u"), g_dwDeviceSN, g_dwPLCID);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
dialTaskManage.DoModal();
|
|
//CFileOperTools::GetInstance()->WriteComLog(_T("zm:Online test---------- end"));
|
|
AfxGetApp()->m_pMainWnd->SendMessage(WM_REFRESH, OP_TD_SYN, 0);
|
|
}
|
|
|
|
//在线测试
|
|
void CDevMngFrame::OnTrustTaskManager()
|
|
{
|
|
//CFileOperTools::GetInstance()->WriteComLog(_T("zm:Online test---------- begin"));
|
|
HTREEITEM hDevItem = NULL;
|
|
DWORD dwItemHandle = (DWORD)VAL_ZERO;
|
|
// DWORD dwImageState = (DWORD)VAL_ZERO;
|
|
hDevItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetSelectedItem();
|
|
CString strDeviceSN;
|
|
strDeviceSN = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemText(hDevItem);
|
|
|
|
//查找PLC设备
|
|
DWORD dwStyle = 0;
|
|
CString strPLCID;
|
|
HTREEITEM hNextItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetNextSiblingItem(hDevItem);
|
|
while (hNextItem != NULL)
|
|
{
|
|
strPLCID = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemText(hNextItem);
|
|
if (strPLCID.Mid(0,3).Compare(_T("PLC")) == 0)
|
|
{
|
|
strPLCID = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemText(hNextItem);
|
|
if (!strPLCID.IsEmpty())
|
|
{
|
|
g_dwPLCID = atoi(strPLCID.Mid(3, 10));
|
|
}
|
|
break;
|
|
}
|
|
hNextItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetNextSiblingItem(hNextItem);
|
|
}
|
|
|
|
if (!strDeviceSN.IsEmpty() && strDeviceSN.GetLength() < 11)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("远端SN序号错误"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Remote SN serial number error"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
|
|
return;
|
|
}
|
|
g_dwDeviceSN = atoi(strDeviceSN.Mid(2, 9));
|
|
CDialTaskManager dialTaskManage;
|
|
dialTaskManage.SetDeviceID(g_dwDeviceSN);
|
|
dialTaskManage.SetPLCID(g_dwPLCID);
|
|
|
|
CString strLog;
|
|
strLog.Format(_T("CDevMngFrame::OnTrustTaskManager() DeviceSN=%u PLCID=%u"), g_dwDeviceSN, g_dwPLCID);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
|
|
dialTaskManage.DoModal();
|
|
AfxGetApp()->m_pMainWnd->SendMessage(WM_REFRESH, OP_TD_SYN, 0);
|
|
}
|
|
|
|
void CDevMngFrame::OnRemGD10TimerTdCfg()
|
|
{
|
|
CDialTimerTask dialTimerTd;
|
|
dialTimerTd.DoModal();
|
|
}
|
|
|
|
void CDevMngFrame::OnRemGD10TimerTdRun()
|
|
{
|
|
HTREEITEM hDevItem = NULL;
|
|
DWORD dwItemHandle = (DWORD)VAL_ZERO;
|
|
// DWORD dwImageState = (DWORD)VAL_ZERO;
|
|
hDevItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetSelectedItem();
|
|
CString strSN = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemText(hDevItem);
|
|
if (!strSN.IsEmpty() && strSN.GetLength() < 12)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("远端SN序号错误"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Remote SN serial number error"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
|
|
return;
|
|
}
|
|
DWORD dwDevID = atoi(strSN.Mid(2,9));
|
|
CDialTimerTaskMeasu dialTimerMeasu;
|
|
dialTimerMeasu.SetDevID(dwDevID);
|
|
dialTimerMeasu.DoModal();
|
|
AfxGetApp()->m_pMainWnd->SendMessage(WM_REFRESH, OP_TD_SYN, 0);
|
|
|
|
}
|
|
|
|
UINT32 CDevMngFrame::GetSelPlcID()
|
|
{
|
|
HTREEITEM hDevItem = NULL;
|
|
DWORD dwItemHandle = (DWORD)VAL_ZERO;
|
|
// DWORD dwImageState = (DWORD)VAL_ZERO;
|
|
hDevItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetSelectedItem();
|
|
if (NULL == hDevItem)
|
|
{
|
|
CString strLog;
|
|
strLog.Format(_T("zm:CDevMngFrame::GetSelPlcID() NULL == hDevItem"));
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
return 0;
|
|
}
|
|
|
|
CString strSN = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemText(hDevItem);
|
|
if (strSN.GetLength() < 5)
|
|
{
|
|
CString strLog;
|
|
strLog.Format(_T("zm:CDevMngFrame::GetSelPlcID() strSN(%s) length < 5"), strSN);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
//AfxMessageBox(_T("远端PLC序号错误"));
|
|
return 0;
|
|
}
|
|
|
|
int iIndex = strSN.Find(_T("("));
|
|
if (iIndex<4)
|
|
{
|
|
//AfxMessageBox(_T("远端PLC名称错误"));
|
|
//return 0;
|
|
return atoi(strSN.Mid(3));
|
|
}
|
|
return atoi(strSN.Mid(3, iIndex-3));
|
|
|
|
}
|
|
|
|
void CDevMngFrame::OnRemPlcPowOn()
|
|
{
|
|
if (TRUE == m_bDevState)
|
|
{
|
|
if(LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("离线设备只能查询状态"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Offline devices can only view status!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
m_uiDevID = g_dwDeviceSN;
|
|
CString strLog;
|
|
strLog.Format(_T("zm:开机 DevSN=%d \n"), m_uiDevID);
|
|
OutputDebugString(strLog);
|
|
|
|
UINT32 uiDevID = GetSelPlcID();
|
|
STRemPlcDataInfo stPlcDataInfo;
|
|
memset(&stPlcDataInfo, 0, sizeof(STRemPlcDataInfo));
|
|
stPlcDataInfo.ucPacketIndex = 1;
|
|
stPlcDataInfo.ucCtrlK3 = 1;
|
|
stPlcDataInfo.ucCtrlK4 = 1;
|
|
//1,2,5,6设置成2
|
|
stPlcDataInfo.ucCtrlK1 = 2;
|
|
stPlcDataInfo.ucCtrlK2 = 2;
|
|
stPlcDataInfo.ucCtrlK5 = 2;
|
|
stPlcDataInfo.ucCtrlK6 = 2;
|
|
|
|
/*STSendDataInfo stSendData;
|
|
stSendData.pData = (char*)(&stPlcDataInfo);
|
|
stSendData.wDataLen = sizeof(STRemPlcDataInfo);
|
|
stSendData.uiDevID = uiDevID;
|
|
stSendData.ucDstType = EN_DEV_PLC;
|
|
m_ucDevType = EN_DEV_PLC;
|
|
|
|
memset(m_chRevBuf, 0, sizeof(m_chRevBuf));
|
|
STRespDataInfo stRspData;
|
|
stRspData.pData = m_chRevBuf;
|
|
stRspData.pRecvLen = &m_iRcvLen;
|
|
stRspData.iMaxRcvLen = MAX_RCV_CTRLBUF;
|
|
stRspData.iTimeout = 20000;*/
|
|
//m_ucCmd = 1;
|
|
|
|
/*if (false==theApp.m_NetWorkOper.TransferOper(m_ucCmd, &stSendData, true, &stRspData, CDevMngFrame::NotifyFunc,this))
|
|
{
|
|
AfxMessageBox(_T("Send plc power on failed"));
|
|
return;
|
|
}*/
|
|
m_ucCmd = EN_CTRL_PLC_POWER_ON_OR_OFF;//暂时保存,修改接口后应该没什么用
|
|
m_ucDevType = EN_DEV_PLC;//暂时保存,修改接口后应该没什么用
|
|
|
|
STRequestPacket requestPacket;
|
|
requestPacket.clsPacketBase.ucCmd = EN_CTRL_PLC_POWER_ON_OR_OFF;
|
|
requestPacket.clsPacketBase.ucDevType = EN_DEV_PLC;
|
|
requestPacket.clsPacketBase.uiDevID = uiDevID;
|
|
requestPacket.iTimeout = 20000;
|
|
requestPacket.hWnd = this->m_hWnd;
|
|
requestPacket.wDataLen = sizeof(STRemPlcDataInfo);
|
|
requestPacket.pData = new char[requestPacket.wDataLen];
|
|
if (requestPacket.pData == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
m_IsOffFlag = FALSE;
|
|
memcpy(requestPacket.pData, (char*)(&stPlcDataInfo), requestPacket.wDataLen);
|
|
theApp.m_NetWorkOper.PutRequestPacket(requestPacket);
|
|
if (requestPacket.pData != NULL)
|
|
{
|
|
delete[] requestPacket.pData;
|
|
requestPacket.pData = NULL;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
void CDevMngFrame::OnRemPlcPowOff()
|
|
{
|
|
if (TRUE == m_bDevState)
|
|
{
|
|
if(LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("离线设备只能查询状态"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Offline devices can only view status!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
|
|
int nRet = 0;
|
|
CString strTips;
|
|
if (g_iUILanguage == LANG_ZHCN)
|
|
{
|
|
strTips.Format(_T("此操作会影响正在测试的任务,请确认服务端无正在测试的任务!\n是否继续?"));
|
|
nRet = AfxMessageBox(strTips, MB_YESNO);
|
|
}
|
|
else
|
|
{
|
|
strTips.Format(_T("This operation will affect the tasks being tested. Please make sure there are no tasks being tested on the server! \ncontinue ?"));
|
|
nRet = MessageBoxEx(NULL, strTips, STRING_MESSAGEBOXEX_TITLE, MB_YESNO, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
}
|
|
if (IDYES != nRet)
|
|
return;
|
|
|
|
m_uiDevID = g_dwDeviceSN;
|
|
CString strLog;
|
|
strLog.Format(_T("zm:关机 DevSN=%d \n"), m_uiDevID);
|
|
OutputDebugString(strLog);
|
|
|
|
UINT32 uiDevID = GetSelPlcID();
|
|
STRemPlcDataInfo stPlcDataInfo;
|
|
memset(&stPlcDataInfo, 0, sizeof(STRemPlcDataInfo));
|
|
stPlcDataInfo.ucPacketIndex = 1;
|
|
stPlcDataInfo.ucCtrlK3 = 0;
|
|
stPlcDataInfo.ucCtrlK4 = 0;
|
|
//1,2,5,6设置成2
|
|
stPlcDataInfo.ucCtrlK1 = 2;
|
|
stPlcDataInfo.ucCtrlK2 = 2;
|
|
stPlcDataInfo.ucCtrlK5 = 2;
|
|
stPlcDataInfo.ucCtrlK6 = 2;
|
|
|
|
/*STSendDataInfo stSendData;
|
|
stSendData.pData = (char*)(&stPlcDataInfo);
|
|
stSendData.wDataLen = sizeof(STRemPlcDataInfo);
|
|
stSendData.uiDevID = uiDevID;
|
|
stSendData.ucDstType = EN_DEV_PLC;
|
|
|
|
|
|
memset(m_chRevBuf, 0, sizeof(m_chRevBuf));
|
|
STRespDataInfo stRspData;
|
|
stRspData.pData = m_chRevBuf;
|
|
stRspData.pRecvLen = &m_iRcvLen;
|
|
stRspData.iMaxRcvLen = MAX_RCV_CTRLBUF;
|
|
stRspData.iTimeout = 20000;*/
|
|
//m_ucCmd = 1;
|
|
|
|
/*if (false==theApp.m_NetWorkOper.TransferOper(m_ucCmd, &stSendData, true, &stRspData, CDevMngFrame::NotifyFunc,this))
|
|
{
|
|
AfxMessageBox(_T("Send plc power off failed"));
|
|
return;
|
|
}*/
|
|
//ok
|
|
m_ucCmd = EN_CTRL_PLC_POWER_ON_OR_OFF;//暂时保存,修改接口后应该没什么用
|
|
m_ucDevType = EN_DEV_PLC;//暂时保存,修改接口后应该没什么用
|
|
|
|
STRequestPacket requestPacket;
|
|
requestPacket.clsPacketBase.ucCmd = EN_CTRL_PLC_POWER_ON_OR_OFF;
|
|
requestPacket.clsPacketBase.ucDevType = EN_DEV_PLC;
|
|
requestPacket.clsPacketBase.uiDevID = uiDevID;
|
|
requestPacket.iTimeout = 20000;
|
|
requestPacket.hWnd = this->m_hWnd;
|
|
requestPacket.wDataLen = sizeof(STRemPlcDataInfo);
|
|
requestPacket.pData = new char[requestPacket.wDataLen];
|
|
if (requestPacket.pData == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
m_IsOffFlag = TRUE;
|
|
memcpy(requestPacket.pData, (char*)(&stPlcDataInfo), requestPacket.wDataLen);
|
|
theApp.m_NetWorkOper.PutRequestPacket(requestPacket);
|
|
if (requestPacket.pData != NULL)
|
|
{
|
|
delete[] requestPacket.pData;
|
|
requestPacket.pData = NULL;
|
|
}
|
|
}
|
|
|
|
void CDevMngFrame::OnRemQueryPlcStatus()
|
|
{
|
|
if (EN_ON_LIEN_VERSION_1 == g_iOnLineVersion)
|
|
{
|
|
CDialDevStatusTimerShow dialPlcStatus;
|
|
dialPlcStatus.DoModal();
|
|
}
|
|
else
|
|
{
|
|
CDialQueryPLCStatus plcStatus;
|
|
plcStatus.SetPLCID(GetSelPlcID());
|
|
plcStatus.DoModal();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
void CDevMngFrame::OnRemMeasuTaskPacket()
|
|
{
|
|
HTREEITEM hDevItem = NULL;
|
|
DWORD dwItemHandle = (DWORD)VAL_ZERO;
|
|
// DWORD dwImageState = (DWORD)VAL_ZERO;
|
|
hDevItem = ((CNavDevView*)m_pNavDevView)->m_devTree.GetSelectedItem();
|
|
CString strSN = ((CNavDevView*)m_pNavDevView)->m_devTree.GetItemText(hDevItem);
|
|
if (!strSN.IsEmpty() && strSN.GetLength() < 12)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("远端SN序号错误"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Remote SN serial number error"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
|
|
return;
|
|
}
|
|
DWORD dwDevID = atoi(strSN.Mid(2,9));
|
|
CDialMeasuTaskPacket dialTaskPacket;
|
|
dialTaskPacket.SetDevID(dwDevID);
|
|
dialTaskPacket.DoModal();
|
|
AfxGetApp()->m_pMainWnd->SendMessage(WM_REFRESH, OP_TD_SYN, 0);
|
|
}
|
|
|
|
void CDevMngFrame::OnRemPlcSetting()
|
|
{
|
|
if (TRUE == m_bDevState)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("离线设备只能查看状态"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Offline devices can only view status!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
CDialPlcStatusSetting dialPlcSet;
|
|
dialPlcSet.SetTimerInterval(m_iPlcTimerInterval);
|
|
if (dialPlcSet.DoModal() != IDOK)
|
|
{
|
|
return;
|
|
}
|
|
m_iPlcTimerInterval = dialPlcSet.GetTimerInterval();
|
|
CString strTimerInterval = "";
|
|
strTimerInterval.Format(_T("%d"), m_iPlcTimerInterval);
|
|
WritePrivateProfileString("PLC_SET","TimeInterval",strTimerInterval, "./config.ini");
|
|
UINT32 uiDevID = GetSelPlcID();
|
|
STRemPlcDataInfo stPlcDataInfo;
|
|
memset(&stPlcDataInfo, 0, sizeof(STRemPlcDataInfo));
|
|
stPlcDataInfo.ucPacketIndex = 1;
|
|
stPlcDataInfo.uiAnaLogQua[0] = htonl(dialPlcSet.GetTimerInterval());
|
|
|
|
|
|
|
|
/*STSendDataInfo stSendData;
|
|
stSendData.pData = (char*)(&stPlcDataInfo);
|
|
stSendData.wDataLen = sizeof(STRemPlcDataInfo);
|
|
stSendData.uiDevID = uiDevID;
|
|
stSendData.ucDstType = EN_DEV_PLC;
|
|
m_ucDevType = EN_DEV_PLC;
|
|
|
|
memset(m_chRevBuf, 0, sizeof(m_chRevBuf));
|
|
STRespDataInfo stRspData;
|
|
stRspData.pData = m_chRevBuf;
|
|
stRspData.pRecvLen = &m_iRcvLen;
|
|
stRspData.iMaxRcvLen = MAX_RCV_CTRLBUF;
|
|
stRspData.iTimeout = 10000;
|
|
m_ucCmd = 2;
|
|
|
|
if (false==theApp.m_NetWorkOper.TransferOper(m_ucCmd, &stSendData, true, &stRspData, CDevMngFrame::NotifyFunc,this))
|
|
{
|
|
AfxMessageBox(_T("Send plc status setting cmd failed"));
|
|
return;
|
|
}*/
|
|
|
|
m_ucCmd = EN_CTRL_SYN_DEV_PARAM;//暂时保存,修改接口后应该没什么用
|
|
m_ucDevType = EN_DEV_PLC;//暂时保存,修改接口后应该没什么用
|
|
|
|
STRequestPacket requestPacket;
|
|
requestPacket.clsPacketBase.ucCmd = EN_CTRL_SYN_DEV_PARAM;
|
|
requestPacket.clsPacketBase.ucDevType = EN_DEV_PLC;
|
|
requestPacket.clsPacketBase.uiDevID = uiDevID;
|
|
requestPacket.iTimeout = 20000;
|
|
requestPacket.hWnd = this->m_hWnd;
|
|
requestPacket.wDataLen = sizeof(STRemPlcDataInfo);
|
|
requestPacket.pData = new char[requestPacket.wDataLen];
|
|
if (requestPacket.pData == NULL)
|
|
{
|
|
return;
|
|
}
|
|
memcpy(requestPacket.pData, (char*)(&stPlcDataInfo), requestPacket.wDataLen);
|
|
theApp.m_NetWorkOper.PutRequestPacket(requestPacket);
|
|
if (requestPacket.pData != NULL)
|
|
{
|
|
delete[] requestPacket.pData;
|
|
requestPacket.pData = NULL;
|
|
}
|
|
}
|
|
|
|
//DEL void CDevMngFrame::ShowDevParam(const STSynDevParam* pStSynDevParam)
|
|
//DEL {
|
|
//DEL CDialShowDevParam dialShowDebParam;
|
|
//DEL dialShowDebParam.SetDevParam(pStSynDevParam);
|
|
//DEL m_bIsPowerTfeqChg = false;
|
|
//DEL if (IDOK ==dialShowDebParam.DoModal())
|
|
//DEL {
|
|
//DEL STModifyDevParam stModifyParam;
|
|
//DEL stModifyParam.iGrThreshold = htonl(dialShowDebParam.m_stDevParam.iGrThreshold);
|
|
//DEL stModifyParam.ucBatteryAlarm = dialShowDebParam.m_stDevParam.ucBatteryAlarm;
|
|
//DEL stModifyParam.ucCableType = dialShowDebParam.m_stDevParam.ucCableType;
|
|
//DEL stModifyParam.ucPowerFreq = dialShowDebParam.m_stDevParam.ucPowerFreq;
|
|
//DEL stModifyParam.ucStacking = dialShowDebParam.m_stDevParam.ucStacking;
|
|
//DEL m_bIsPowerTfeqChg = (pStSynDevParam->ucPowerFreq == stModifyParam.ucPowerFreq) ? false : true;
|
|
//DEL
|
|
//DEL STSendDataInfo stSendData;
|
|
//DEL stSendData.pData = (char*)(&stModifyParam);
|
|
//DEL stSendData.wDataLen = sizeof(stModifyParam);
|
|
//DEL stSendData.uiDevID = m_uiDevID;
|
|
//DEL stSendData.ucDstType = EN_DEV_GD10;
|
|
//DEL memset(m_chRevBuf, 0, sizeof(m_chRevBuf));
|
|
//DEL
|
|
//DEL STRespDataInfo stRspData;
|
|
//DEL stRspData.pData = m_chRevBuf;
|
|
//DEL stRspData.pRecvLen = &m_iRcvLen;
|
|
//DEL stRspData.iMaxRcvLen = MAX_RCV_CTRLBUF;
|
|
//DEL stRspData.iTimeout = 6000;
|
|
//DEL m_ucCmd = EN_CTRL_SET_DEV_PARAM;
|
|
//DEL m_ucDevType = EN_DEV_GD10;
|
|
//DEL m_ucCableType = dialShowDebParam.m_stDevParam.ucCableType;
|
|
//DEL if (false==theApp.m_NetWorkOper.TransferOper(m_ucCmd, &stSendData, true, &stRspData, CDevMngFrame::NotifyFunc,this))
|
|
//DEL {
|
|
//DEL AfxMessageBox(_T("Send synchronization set msg failed"));
|
|
//DEL return;
|
|
//DEL }
|
|
//DEL
|
|
//DEL
|
|
//DEL }
|
|
//DEL
|
|
//DEL
|
|
//DEL /*
|
|
//DEL if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_CTRL_SET_DEV_PARAM, dwDevID,EN_DEV_GD10,(char*)(&stModifyParam), sizeof(stModifyParam)))
|
|
//DEL {
|
|
//DEL AfxMessageBox(_T("设置参数信息失败"));
|
|
//DEL return;
|
|
//DEL }
|
|
//DEL iRecvLen = 0;
|
|
//DEL memset(chData, 0, sizeof(chData));
|
|
//DEL if (EN_RECV_SUCCESS != theApp.m_NetWorkOper.RecvMsgDirect(chData, &iRecvLen, 100, 6000))
|
|
//DEL {
|
|
//DEL AfxMessageBox(_T("接收数据失败"));
|
|
//DEL return;
|
|
//DEL }
|
|
//DEL CString strErr = _T("");
|
|
//DEL if (2 != iRecvLen)
|
|
//DEL {
|
|
//DEL strErr.Format(_T("数据响应长度(%d)错误"),iRecvLen);
|
|
//DEL AfxMessageBox(strErr);
|
|
//DEL return;
|
|
//DEL }
|
|
//DEL WORD wRes = *((WORD*)chData);
|
|
//DEL wRes = ntohs(wRes);
|
|
//DEL if (0 == wRes)
|
|
//DEL {
|
|
//DEL strErr.Empty();
|
|
//DEL if (bIsPowerTfeqChg)
|
|
//DEL strErr = _T("\r\n但由于修改了工业频率, 请重启主机设备");
|
|
//DEL AfxMessageBox(_T("参数设置成功")+strErr);
|
|
//DEL theApp.m_iCableType =
|
|
//DEL }
|
|
//DEL else
|
|
//DEL {
|
|
//DEL strErr.Empty();
|
|
//DEL strErr.Format(_T("参数设置错误,返回错误码= %d"),wRes);
|
|
//DEL AfxMessageBox(strErr);
|
|
//DEL return;
|
|
//DEL }
|
|
//DEL }
|
|
//DEL */
|
|
//DEL }
|
|
|
|
// void CDevMngFrame::NotifyFunc(LPARAM lMsgType, LPARAM lResStatus,LPVOID lpParam)
|
|
// {
|
|
// CDevMngFrame* pDevManage = (CDevMngFrame*)lpParam;
|
|
// CString strInfo;
|
|
// if (pDevManage->m_ucDevType == EN_DEV_GD10)
|
|
// {
|
|
// if (pDevManage->m_ucCmd == EN_CTRL_SYN_DEV_PARAM)
|
|
// {
|
|
// if (lResStatus != EN_RECV_SUCCESS)
|
|
// {
|
|
// strInfo.Format(_T("recv response data failed.error(%d,%d,%d)"),lMsgType,lResStatus,pDevManage->m_ucCmd);
|
|
// AfxMessageBox(strInfo);
|
|
// return;
|
|
// }
|
|
//
|
|
// STSynDevParam* pStSynDevParam = (STSynDevParam*)(pDevManage->m_chRevBuf);
|
|
// theApp.m_pDevManager->UpdateDevInfo(*pStSynDevParam, EN_DEV_GD10);
|
|
// pDevManage->PostMessage(WM_SHOW_DEV_PARAM, 0, (LPARAM)pStSynDevParam);
|
|
// }
|
|
// else if (pDevManage->m_ucCmd == EN_CTRL_SET_DEV_PARAM)
|
|
// {
|
|
// if (lResStatus != EN_RECV_SUCCESS)
|
|
// {
|
|
// strInfo.Format(_T("recv response data failed.error(%d,%d,%d)"),lMsgType,lResStatus,pDevManage->m_ucCmd);
|
|
// AfxMessageBox(strInfo);
|
|
// return;
|
|
// }
|
|
// if (pDevManage->m_iRcvLen < 1)
|
|
// {
|
|
// strInfo.Empty();
|
|
// strInfo.Format(_T("The length of set synchronization error.actually_len=%d,should=2"),pDevManage->m_iRcvLen);
|
|
// AfxMessageBox(strInfo);
|
|
// return;
|
|
// }
|
|
// WORD wRes = *((WORD*)(pDevManage->m_chRevBuf));
|
|
// wRes = ntohs(wRes);
|
|
// if (0 == wRes)
|
|
// {
|
|
// strInfo.Empty();
|
|
// if (LANG_ZHCN == g_iUILanguage)
|
|
// {
|
|
// if (pDevManage->m_bIsPowerTfeqChg)
|
|
// strInfo = _T("\r\n但由于修改了工业频率, 请重启主机设备");
|
|
// AfxMessageBox(_T("参数设置成功")+strInfo);
|
|
// }
|
|
// else
|
|
// {
|
|
// if (pDevManage->m_bIsPowerTfeqChg)
|
|
// strInfo = _T("\r\npower frequency changed,please restart the mainframe");
|
|
// AfxMessageBox(_T("Parameter has been setted up successfully")+strInfo);
|
|
// }
|
|
//
|
|
// theApp.m_iCableType = pDevManage->m_ucCableType;
|
|
//
|
|
// //GD设置参数成功后,将参数传递给云端
|
|
// pDevManage->UploadDevinfoToSev(pDevManage->m_stSynDevParam);
|
|
// }
|
|
// else
|
|
// {
|
|
// strInfo.Empty();
|
|
// strInfo.Format(_T("set device paramter error,error_code=%d"),wRes);
|
|
// AfxMessageBox(strInfo);
|
|
// return;
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// strInfo.Empty();
|
|
// strInfo.Format(_T("Unknow cmd(%d) in GD10 device."),pDevManage->m_ucCmd);
|
|
// AfxMessageBox(strInfo);
|
|
// return;
|
|
// }
|
|
// }
|
|
// else if (EN_DEV_PLC == pDevManage->m_ucDevType)
|
|
// {
|
|
// if (lResStatus != EN_RECV_SUCCESS)
|
|
// {
|
|
// if (EN_RECV_TIMEOUT == lResStatus)
|
|
// {
|
|
// strInfo.Format(_T("The operation timed out, please try again later"));
|
|
// }
|
|
// else
|
|
// {
|
|
// strInfo.Format(_T("recv plc response data failed.error(%d,%d,%d)"), lMsgType, lResStatus, 0);
|
|
// }
|
|
// AfxMessageBox(strInfo);
|
|
// return;
|
|
// }
|
|
// if (pDevManage->m_iRcvLen != sizeof(STRemPlcDataInfo))
|
|
// {
|
|
// AfxMessageBox(_T("长度校验失败"));
|
|
// return;
|
|
// }
|
|
// STRemPlcDataInfo* pPlcInfo = (STRemPlcDataInfo*)(pDevManage->m_chRevBuf);
|
|
// if ( 1== pPlcInfo->ucResult )
|
|
// {
|
|
// if (2 == pDevManage->m_ucCmd)
|
|
// {
|
|
// CDialPlcStatusShow dialStatusShow;
|
|
// dialStatusShow.SetRemPlcData(pPlcInfo);
|
|
// dialStatusShow.DoModal();
|
|
// }
|
|
// else
|
|
// {
|
|
// if (LANG_ZHCN == g_iUILanguage)
|
|
// AfxMessageBox(_T("操作成功"));
|
|
// else
|
|
// AfxMessageBox("Operation success");
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// if (LANG_ZHCN == g_iUILanguage)
|
|
// AfxMessageBox(_T("操作失败"));
|
|
// else
|
|
// AfxMessageBox("Operation failed");
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// strInfo.Empty();
|
|
// strInfo.Format(_T("Unknow device type(%d)."),pDevManage->m_ucDevType);
|
|
// AfxMessageBox(strInfo);
|
|
// }
|
|
//
|
|
// }
|
|
|
|
|
|
//DEL void CDevMngFrame::NotifyFunc(LPVOID lParam, LPARAM rParam, LPVOID pWnd)
|
|
//DEL {
|
|
//DEL
|
|
//DEL CDevMngFrame* pDevManage = (CDevMngFrame*)pWnd;
|
|
//DEL LPSTCTRLCMDINFO pCtrlCmdInfo = NULL;
|
|
//DEL char* pData=((LPSTCTRLCMDINFO)lParam)->pData;
|
|
//DEL int iLen = ((LPSTCTRLCMDINFO)lParam)->iDataLen;
|
|
//DEL if (EN_FORCE_LOGIN == rParam)
|
|
//DEL {
|
|
//DEL if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_CTRL_USER_LOGIN, 0xFFFFFFFF, 1, (char*)(&theApp.m_uiUserID), sizeof(UINT32)))
|
|
//DEL {
|
|
//DEL AfxMessageBox(_T("user login information send failed"));
|
|
//DEL return ;
|
|
//DEL }
|
|
//DEL
|
|
//DEL char chMsg[200] = {0};
|
|
//DEL int ilen = 0;
|
|
//DEL if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chMsg, &ilen, 200, 4000))
|
|
//DEL {
|
|
//DEL short usDevNum = ntohs(*((short*)chMsg));
|
|
//DEL if (ilen != (2+usDevNum*sizeof(STSigRemoteDev)))
|
|
//DEL {
|
|
//DEL CString strErr = _T("");
|
|
//DEL strErr.Format(_T("recv device number error.total_len = %d, device_number = %d"), ilen, usDevNum);
|
|
//DEL AfxMessageBox(strErr);
|
|
//DEL return ;
|
|
//DEL }
|
|
//DEL STSigRemoteDev stRemDev;
|
|
//DEL for (int i = 0; i < usDevNum; i++)
|
|
//DEL {
|
|
//DEL memcpy(&stRemDev,chMsg+2+i*sizeof(STSigRemoteDev), sizeof(STSigRemoteDev));
|
|
//DEL stRemDev.uiDevID = ntohl(stRemDev.uiDevID);
|
|
//DEL theApp.m_pDevManager->AddRemoteDevice(stRemDev);
|
|
//DEL }
|
|
//DEL pDevManage->OnRefreshNavDevice(NULL, NULL);
|
|
//DEL }
|
|
//DEL }
|
|
//DEL else if (EN_DEV_ONLINE == rParam)
|
|
//DEL {
|
|
//DEL WORD wNum = ntohs(*(WORD*)pData);
|
|
//DEL if (iLen != (2 + wNum*sizeof(STSigRemoteDev)))
|
|
//DEL {
|
|
//DEL CString strErr;
|
|
//DEL strErr.Format(_T("新增设备长度信息错误,本该(%d),实际(%d)"),1 + wNum*sizeof(STSigRemoteDev),iLen);
|
|
//DEL AfxMessageBox(strErr);
|
|
//DEL return;
|
|
//DEL }
|
|
//DEL STSigRemoteDev* pRemDev = NULL;
|
|
//DEL for (int i=0; i < wNum; i++)
|
|
//DEL {
|
|
//DEL pRemDev = (STSigRemoteDev*)(pData+2+i*sizeof(STSigRemoteDev));
|
|
//DEL theApp.m_pDevManager->AddRemoteDevice(*pRemDev);
|
|
//DEL }
|
|
//DEL pDevManage->OnRefreshNavDevice(NULL, NULL);
|
|
//DEL }
|
|
//DEL else
|
|
//DEL {
|
|
//DEL CString strErr = _T("");
|
|
//DEL strErr.Format(_T("Unknow cmd(%d) in ctr_cmd"),rParam);
|
|
//DEL AfxMessageBox(strErr);
|
|
//DEL
|
|
//DEL }
|
|
//DEL
|
|
//DEL
|
|
//DEL }
|
|
|
|
LRESULT CDevMngFrame::PreNetResponse(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
LPRESPONSEPACKET pResponsePacket = (LPRESPONSEPACKET)lParam;
|
|
if (pResponsePacket == NULL)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
CString strLog;
|
|
if (wParam != EN_RECV_SUCCESS)//返回0,操作成功
|
|
{
|
|
if (EN_RECV_TIMEOUT == wParam)
|
|
{
|
|
if (g_iUILanguage == LANG_ZHCN)
|
|
AfxMessageBox(_T("操作超时,请稍后重试"));
|
|
else
|
|
MessageBoxEx(NULL, _T("The operation timed out, please try again later"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
}
|
|
else
|
|
{
|
|
if (g_iUILanguage == LANG_ZHCN)
|
|
{
|
|
strLog.Format(_T("接收响应报错,错误码(%d)"), wParam);
|
|
AfxMessageBox(strLog);
|
|
}
|
|
else
|
|
{
|
|
strLog.Format(_T("Received response error, error code(%d)"), wParam);
|
|
MessageBoxEx(NULL, strLog, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
switch (pResponsePacket->clsPacketBase.ucCmd)
|
|
{
|
|
case EN_UPLOAD_DEV_INF:
|
|
{
|
|
BYTE ucReplayFlg = (BYTE)(pResponsePacket->pData[0]);
|
|
if (pResponsePacket->wDataLen < 1)
|
|
{
|
|
theApp.m_NetWorkOper.SetSuspendForThread(false);
|
|
if (g_iUILanguage == LANG_ZHCN)
|
|
{
|
|
AfxMessageBox(_T("上传设备信息失败"));
|
|
}
|
|
else
|
|
{
|
|
MessageBoxEx(NULL, _T("Upload device information failed"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
if (ucReplayFlg == 3)
|
|
{
|
|
if (g_iUILanguage == LANG_ZHCN)
|
|
{
|
|
AfxMessageBox(_T("有任务正在运行,不能上传设备参数"));
|
|
}
|
|
else
|
|
{
|
|
MessageBoxEx(NULL, _T("A task is running and cannot upload device parameters"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case EN_CTRL_PLC_POWER_ON_OR_OFF:
|
|
{
|
|
if (pResponsePacket->wDataLen != sizeof(STRemPlcDataInfo))
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("长度校验失败"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Length check failed"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return 0;
|
|
}
|
|
STRemPlcDataInfo* pPlcInfo = (STRemPlcDataInfo*)(pResponsePacket->pData);
|
|
if (pPlcInfo == NULL)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if (1 == pPlcInfo->ucResult)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("操作成功"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Operation success"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
|
|
CString strLog;
|
|
strLog.Format(_T("zm:开关机m_uiDevID=%d\n"), m_uiDevID);
|
|
OutputDebugString(strLog);
|
|
if (m_uiDevID > 0)
|
|
{
|
|
CString strLog;
|
|
CString strDevSN;
|
|
strDevSN.Format(_T("SN%d"), m_uiDevID);
|
|
STSigRemoteDev stRemoteDev;
|
|
stRemoteDev.ucDevType = EN_DEV_GD10;
|
|
stRemoteDev.uiDevID = m_uiDevID;
|
|
if (m_IsOffFlag)//关机
|
|
{
|
|
strLog.Format(_T("zm:设备列表移除设备CDevMngFrame::PreNetResponse 关机 SN=%u"), stRemoteDev.uiDevID);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
theApp.m_pDevManager->DeleteRemoteDevice(stRemoteDev);
|
|
theApp.m_pDevManager->AddOfflineObjInMem(strDevSN);
|
|
}
|
|
else//开机
|
|
{
|
|
strLog.Format(_T("zm:设备列表添加设备CDevMngFrame::PreNetResponse 开机 SN=%u"), stRemoteDev.uiDevID);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
theApp.m_pDevManager->AddRemoteDevice(stRemoteDev);
|
|
theApp.m_pDevManager->DeleteObjInMem(strDevSN);
|
|
}
|
|
RefreshNavDevice(NULL, NULL);
|
|
}
|
|
}
|
|
else if (pPlcInfo->ucResult == FAILED_OPERATOR_GD_OFF)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("操作失败"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Operation failed"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
}
|
|
}
|
|
break;
|
|
case EN_CTRL_SYN_DEV_PARAM://PLC
|
|
{
|
|
switch (m_ucDevType)
|
|
{
|
|
case EN_DEV_PLC:
|
|
{
|
|
if (pResponsePacket->wDataLen != sizeof(STRemPlcDataInfo))
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("长度校验失败"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Length check failed"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return 0;
|
|
}
|
|
STRemPlcDataInfo* pPlcInfo = (STRemPlcDataInfo*)(pResponsePacket->pData);
|
|
if (pPlcInfo == NULL || 1 != pPlcInfo->ucResult)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
CDialPlcStatusShow dialStatusShow;
|
|
dialStatusShow.SetRemPlcData(pPlcInfo);
|
|
dialStatusShow.DoModal();
|
|
}
|
|
break;
|
|
case EN_DEV_GD10:
|
|
{
|
|
if (pResponsePacket->wDataLen != sizeof(STSynDevParam))
|
|
{
|
|
CFileOperTools::GetInstance()->WriteComLog(_T("zm:CDevMngFrame::OnRemGD10SynParam() recv device syn length error************"));
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("长度校验失败"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Length check failed"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return 0;
|
|
}
|
|
|
|
memcpy(&m_stSynDevParam, (STSynDevParam*)(pResponsePacket->pData), sizeof(STSynDevParam));
|
|
theApp.m_pDevManager->UpdateDevInfo(m_stSynDevParam, EN_DEV_GD10);
|
|
CString strLog;
|
|
strLog.Format(_T("zm:recv GD setting GD args info:ID=%u,iGrThreshold=%d,ucPowerFreq=%d,ucBatteryAlarm=%d,ucCableType=%d,ucStacking=%d,ucChannelNum=%d,ucDownLoadNum=%d,fTemperature=%f,fBatteryVol=%f"),
|
|
m_stSynDevParam.uiMachineID, m_stSynDevParam.iGrThreshold, m_stSynDevParam.ucPowerFreq, m_stSynDevParam.ucBatteryAlarm, m_stSynDevParam.ucCableType, m_stSynDevParam.ucStacking, m_stSynDevParam.ucChannelNum, m_stSynDevParam.ucDownLoadNum, m_stSynDevParam.fTemperature, m_stSynDevParam.fBatteryVol);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
float f = m_stSynDevParam.fBatteryVol;
|
|
float fT = m_stSynDevParam.fTemperature;
|
|
unsigned char *p, *pT, p0, pT0, p1, pT1;
|
|
p = (unsigned char *)&f;
|
|
p0 = p[0];
|
|
p1 = p[1];
|
|
p[0] = p[3];
|
|
p[3] = p0;
|
|
p[1] = p[2];
|
|
p[2] = p1;
|
|
|
|
pT = (unsigned char*)&fT;
|
|
pT0 = pT[0];
|
|
pT1 = pT[1];
|
|
pT[0] = pT[3];
|
|
pT[3] = pT0;
|
|
pT[1] = pT[2];
|
|
pT[2] = pT1;
|
|
strLog.Format(_T("zm:recv GD m_stSynDevParam.fTemperature=%0x %0x %0x %0x m_stSynDevParam.fBatteryVol= %0x %0x %0x %0x"), pT[3], pT[2], pT[1], pT[0], p[3], p[2], p[1], p[0]);
|
|
CFileOperTools::GetInstance()->WriteComLog(strLog);
|
|
PostMessage(WM_SHOW_DEV_PARAM, 0, (LPARAM)&m_stSynDevParam);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
case EN_CTRL_SET_DEV_PARAM:
|
|
{
|
|
if (pResponsePacket->wDataLen < 1)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
WORD wRes = *((WORD*)(pResponsePacket->pData));
|
|
wRes = ntohs(wRes);
|
|
if (0 == wRes)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
{
|
|
if (m_bIsPowerTfeqChg)
|
|
strLog = _T("\r\n但由于修改了工业频率, 请重启主机设备");
|
|
AfxMessageBox(_T("参数设置成功") + strLog);
|
|
}
|
|
else
|
|
{
|
|
if (m_bIsPowerTfeqChg)
|
|
strLog = _T("\r\npower frequency changed,please restart the mainframe");
|
|
MessageBoxEx(NULL, _T("Parameters setted successfully") + strLog, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
}
|
|
|
|
theApp.m_iCableType = m_ucCableType;
|
|
|
|
//GD设置参数成功后,将参数传递给云端
|
|
UploadDevinfoToSev(m_stSynDevParam);
|
|
}
|
|
else
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
{
|
|
strLog.Format(_T("设置设备参数错误,错误码%d"), wRes);
|
|
AfxMessageBox(strLog);
|
|
}
|
|
else
|
|
{
|
|
strLog.Format(_T("Set device paramter error,error_code=%d"), wRes);
|
|
MessageBoxEx(NULL, strLog, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
{
|
|
if (m_ucDevType == EN_DEV_GD10)
|
|
{
|
|
CString strInfo;
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
{
|
|
strInfo.Format(_T("GD10设备的未知命令%d"), m_ucCmd);
|
|
AfxMessageBox(strInfo);
|
|
}
|
|
else
|
|
{
|
|
strInfo.Format(_T("Unknow cmd(%d) in GD10 device."), m_ucCmd);
|
|
MessageBoxEx(NULL, strInfo, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
|
|
return TRUE;
|
|
} |