📄 serialsunview.cpp
字号:
// SerialSunView.cpp : implementation of the CSerialSunView class
//
#include "stdafx.h"
#include "SerialSun.h"
#include "SerialSunDoc.h"
#include "SerialSunView.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSerialSunView
IMPLEMENT_DYNCREATE(CSerialSunView, CFormView)
BEGIN_MESSAGE_MAP(CSerialSunView, CFormView)
//{{AFX_MSG_MAP(CSerialSunView)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_SETCOM, OnSetcom)
ON_BN_CLICKED(IDC_READCOM, OnReadcom)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
ON_MESSAGE(WM_GETSTR_FROMFRM, OnGetStr)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSerialSunView construction/destruction
CStringArray IDArray; //存储ID号
CSerialSunView::CSerialSunView()
: CFormView(CSerialSunView::IDD)
{
//{{AFX_DATA_INIT(CSerialSunView)
//}}AFX_DATA_INIT
// TODO: add construction code here
}
CSerialSunView::~CSerialSunView()
{
}
void CSerialSunView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSerialSunView)
DDX_Control(pDX, IDC_COMBO2, s_RtuId);
//}}AFX_DATA_MAP
}
BOOL CSerialSunView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
void CSerialSunView::OnInitialUpdate()
{
GetDlgItem(IDC_SRZMKD)->SetWindowText("0");
GetDlgItem(IDC_TIMERSTAR)->EnableWindow(TRUE);
GetDlgItem(IDC_TIMERSTOP)->EnableWindow(FALSE);
GetDlgItem(IDC_STAR)->EnableWindow(TRUE);
GetDlgItem(IDC_SUSPEND)->EnableWindow(FALSE);
GetDlgItem(IDC_RESUME)->EnableWindow(FALSE);
IsStar=FALSE;
CFormView::OnInitialUpdate();
ResizeParentToFit();
}
/////////////////////////////////////////////////////////////////////////////
// CSerialSunView printing
BOOL CSerialSunView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CSerialSunView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CSerialSunView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
void CSerialSunView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
// TODO: add customized printing code here
}
/////////////////////////////////////////////////////////////////////////////
// CSerialSunView diagnostics
#ifdef _DEBUG
void CSerialSunView::AssertValid() const
{
CFormView::AssertValid();
}
void CSerialSunView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CSerialSunDoc* CSerialSunView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSerialSunDoc)));
return (CSerialSunDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CSerialSunView message handlers
void CSerialSunView::OnDestroy()
{
CFormView::OnDestroy();
// TODO: Add your message handler code here
((CMainFrame*)AfxGetMainWnd())->m_dataview = NULL;
}
//设置串口
void CSerialSunView::OnSetcom()
{
// TODO: Add your control notification handler code here
InitCOM(0);
}
//手动读数
void CSerialSunView::OnReadcom()
{
// TODO: Add your control notification handler code here
}
void CSerialSunView::InitCOM(int i)
{
if(FALSE==IsStar)
{
config.readconfig();
if(nControl[i].InitPort(AfxGetMainWnd(),config.n_PORT,config.n_BAUDRATE,config.n_PARITY,config.n_BITSIZE,config.n_STOPBIT,EV_RXCHAR|EV_RXFLAG,1024))
{
this->nControl[i].StartMonitoring();
}
GetAllId();
IsStar = TRUE;
}
}
//得到配置文件中的ID号
void CSerialSunView::GetAllId()
{
CString strRTUID = config.n_RTUID;
CStringChang StringChang;
StringChang.SplitString(IDArray,strRTUID,",");
if(FALSE==IsStar)
{
int idcount = IDArray.GetSize();
for(int i = 0;i<idcount;i++)
{
s_RtuId.AddString(IDArray.GetAt(i));
}
}
}
//接收字符串
LRESULT CSerialSunView::OnGetStr(WPARAM wParam, LPARAM lParam)
{
CString nGetframStr = *(CString*)wParam;
int n = nGetframStr.GetLength();
unsigned char outbuff[16];
if(n == 32)
{
CStringChang::String2Bytes(nGetframStr,32,outbuff);
CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
DOORDATA door;
pFrame->GetDoorData(outbuff,door);
if(atoi(ControlRTU)==door.RTUID) //显示和界面选择的RTU ID好一致
{
CString sSYSW, sXYSW, sZMGD, sDCDL, sKGL;
ltoa(door.UPLEVEL,(LPSTR)(LPCTSTR)sSYSW,10);
GetDlgItem(IDC_SYSS)->SetWindowText(sSYSW); //上游水位
ltoa(door.DOWNLEVEL,(LPSTR)(LPCTSTR)sXYSW,10);
GetDlgItem(IDC_XYSS)->SetWindowText(sXYSW); //下游水位
ltoa(door.DOORLEVEL,(LPSTR)(LPCTSTR)sZMGD,10);
GetDlgItem(IDC_ZMKD)->SetWindowText(sZMGD); //闸门开度
ltoa(door.POWERLEVEL,(LPSTR)(LPCTSTR)sDCDL,10);
GetDlgItem(IDC_DCDL)->SetWindowText(sDCDL); //电池电量
}
}
/*
if(door.AUTOHAND==1)
{
GetDlgItem(IDC_FANGSHI)->SetWindowText("现场控制");
}
else
GetDlgItem(IDC_FANGSHI)->SetWindowText("遥控控制");
if(door.UP == 1)
{
GetDlgItem(IDC_SHENG)->SetWindowText("闸门升"); //升
}
else
GetDlgItem(IDC_SHENG)->SetWindowText("闸门");
if(door.DOWN == 1)
{
GetDlgItem(IDC_JIANG)->SetWindowText("闸门降"); //降
}
else
GetDlgItem(IDC_JIANG)->SetWindowText("闸门");
if(door.UP != 1 && door.DOWN != 1)
{
GetDlgItem(IDC_TING)->SetWindowText("闸门停"); //停
}
else
GetDlgItem(IDC_TING)->SetWindowText("闸门");
}
}
if(n == 20)
{
CStringChang::String2Bytes(nGetframStr,20,outbuff);
}*/
return 0L;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -