⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialsunview.cpp

📁 多文档界面设计配置文件读写串口操作串口封装类
💻 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 + -