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

📄 dyrasview.cpp

📁 远程串口通信程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// DyRasView.cpp : implementation of the CDyRasView class
//

#include "stdafx.h"
#include "DyRas.h"
#include "CommSocket.h"
#include "DyRasDoc.h"
#include "DyRasView.h"
#include "DyRasData.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDyRasView

IMPLEMENT_DYNCREATE(CDyRasView, CFormView)

BEGIN_MESSAGE_MAP(CDyRasView, CFormView)
	//{{AFX_MSG_MAP(CDyRasView)
	ON_WM_CREATE()
	ON_WM_DESTROY()
	ON_WM_TIMER()
	ON_WM_CLOSE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDyRasView construction/destruction

CDyRasView::CDyRasView()
	: CFormView(CDyRasView::IDD)
{
	//{{AFX_DATA_INIT(CDyRasView)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// TODO: add construction code here
	m_bJiaBeiAct=FALSE;
	m_bJiaDongAct=FALSE;
	m_bZhaGangAct=FALSE;	
	for(int i=0;i<4;i++) m_bMark[i]=FALSE;
	m_bModemConnect=0;
	m_iCount30=0;
	m_bStrAdd=FALSE;
	m_bStrAddJd=FALSE;
	m_iTempCount=0;
	m_iTempCountJd=0;
	m_iTempCountJb=0;
	m_bZgBegin=FALSE;
	m_bJbBegin=FALSE;
	m_bJdBegin=FALSE;
	m_bLockSocket=FALSE;
	m_iTime=0;
//	JbpBuf=new BYTE[1024];
//	JdpBuf=new BYTE[1024];
//	ZgpBuf=new BYTE[1024];
}

CDyRasView::~CDyRasView()
{
//	delete []JbpBuf;
//	delete []JdpBuf;
//	delete []ZgpBuf;
}

void CDyRasView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDyRasView)
	DDX_Control(pDX, IDC_LSEND, m_ctlSend);
	DDX_Control(pDX, IDC_LRECEIVE, m_ctlReceive);
	DDX_Control(pDX, IDC_LRASRUN, m_ctlRasRun);
	//}}AFX_DATA_MAP
	m_bConnectMark=ConnectServer();
	InitComm1();
	InitComm2();
	InitComm3();
}

BOOL CDyRasView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}

void CDyRasView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();

}

/////////////////////////////////////////////////////////////////////////////
// CDyRasView diagnostics

#ifdef _DEBUG
void CDyRasView::AssertValid() const
{
	CFormView::AssertValid();
}

void CDyRasView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CDyRasDoc* CDyRasView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDyRasDoc)));
	return (CDyRasDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CDyRasView message handlers

BOOL CDyRasView::ConnectServer()
{
	m_pCommSocket=new CCommSocket(this);
	if(!m_pCommSocket->Create(PORTNUM)) {
		m_ctlRasRun.InsertString(0,"创建套接字失败!");
		delete m_pCommSocket;
		m_pCommSocket=NULL;
		return FALSE;
	}
	if(!m_pCommSocket->Connect(IPADDRESS,PORTNUM)) {
		m_ctlRasRun.InsertString(0,"连接服务器失败!");
		delete m_pCommSocket;
		m_pCommSocket=NULL;
		return FALSE;
	}
	m_ctlRasRun.InsertString(0,"与服务器连接成功!");
	return TRUE;
}

void CDyRasView::ReceiveMsg(CCommSocket *pCommSocket)
{
	BYTE Buf[1024]; 
	TRY {
		pCommSocket->Receive(Buf,1024);
		if(Buf[0]==SERTEST) {
			AutoSendBack();	
			m_bMark[0]=TRUE;//1-zg,2-jd,3-jb
		    return;
		}
	}
	CATCH(CFileException,e) {
		m_ctlReceive.InsertString(0,"Receive Data Exception");
	}
	END_CATCH
}

void CDyRasView::AutoSendBack()
{
	SendTestMsg(m_pCommSocket,RASTEST);	
}

void CDyRasView::SendMsg(CCommSocket *pCommSocket,BYTE* pb)
{
	TRY pCommSocket->Send(pb,1024);
	CATCH(CFileException,e) {
		m_ctlReceive.InsertString(0,"Receive Data Exception");
	}
	END_CATCH
}

void CDyRasView::SendTestMsg(CCommSocket *pCommSocket,BYTE i)
{
	pCommSocket->Send(&i,1024);
}

void CDyRasView::DrawSerRect(int num)
{
	CClientDC dc(this);
	CPen penGray,penGree;
	penGray.CreatePen(PS_SOLID,1,RGB(200,200,200));
	penGree.CreatePen(PS_SOLID,1,RGB(0,255,0));
	CPen* pOldpen;
	CRect rc;
	GetClientRect(&rc);
	CBrush br;
	CBrush* pOldbr;
	if(num==1) {// turn on the mark
		br.CreateSolidBrush(RGB(0,255,0));
		pOldbr=dc.SelectObject(&br);
  		GetDlgItem(IDC_STATICSERNAME)->EnableWindow(TRUE);
		pOldpen=dc.SelectObject(&penGree);
	}
	else if(num==0) {// turn off the mark
		br.CreateSolidBrush(RGB(185,185,185));
		pOldbr=dc.SelectObject(&br);
		GetDlgItem(IDC_STATICSERNAME)->EnableWindow(FALSE);
		pOldpen=dc.SelectObject(&penGray);
	}
	dc.Rectangle(50,50,80,70);
	dc.Rectangle(45,70,85,75);
	dc.SelectObject(pOldpen);
	dc.SelectObject(pOldbr);
}

int CDyRasView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFormView::OnCreate(lpCreateStruct) == -1)
		return -1;
	// TODO: Add your specialized creation code here
//	m_hReadMod1=m_hWnd;
//	m_hReadMod2=m_hWnd;
//	m_hReadMod3=m_hWnd;
	SetTimer(TIMER1,500,NULL);	
	return 0;
}

void CDyRasView::OnDestroy() 
{
	CFormView::OnDestroy();
	// TODO: Add your message handler code here
	KillTimer(TIMER1);
}

void CDyRasView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	int i,k=0x00;
	char strYMD[50],strHMS[50],x='s',y='r',z='u';
	DWORD dwBytesWritten;
	CString str="";
	m_iTime++;
	if(m_iTime==1) {
		WriteFile(hCommDev1,&k,1,&dwBytesWritten,NULL);
		WriteFile(hCommDev2,&k,1,&dwBytesWritten,NULL);
		WriteFile(hCommDev3,&k,1,&dwBytesWritten,NULL);
		ShowFolloTime(str,z);
	}
	else if(m_iTime==2) {
		CStatusBar* pStatus=(CStatusBar*)AfxGetApp()->m_pMainWnd->GetDescendantWindow(AFX_IDW_STATUS_BAR);
		CTime time=CTime::GetCurrentTime();
		sprintf(strYMD,"%4d-%2d-%2d",time.GetYear(),time.GetMonth(),time.GetDay());
		pStatus->SetPaneText(1,strYMD);
		sprintf(strHMS,"%2d:%2d",time.GetHour(),time.GetMinute(),time);
		pStatus->SetPaneText(2,strHMS);
		
		if(	m_bMark[0]==TRUE) DrawSerRect(1);
		else if(m_bMark[0]==FALSE) DrawSerRect(0);

		if(m_bMark[1]==TRUE) DrawZgRect(1); 
		else if(m_bMark[1]==FALSE) 	DrawZgRect(0); 
					
		if(m_bMark[2]==TRUE) DrawJdRect(1); 
		else if(m_bMark[2]==FALSE) DrawJdRect(0); 
				
		if(m_bMark[3]==TRUE) DrawJbRect(1); 
		else if(m_bMark[3]==FALSE) 	DrawJbRect(0);

		for(i=0;i<4;i++) m_bMark[i]=FALSE;
		ReadComm1();
	}
	else if(m_iTime==3) ReadComm2();
	else if(m_iTime==4) {
		ReadComm3();
		m_iTime=0 ;
	}
	CFormView::OnTimer(nIDEvent);
}

void CDyRasView::DrawZgRect(int num)
{
	CClientDC dc(this);
	CPen penGray,penGree;
	penGray.CreatePen(PS_SOLID,1,RGB(200,200,200));
	penGree.CreatePen(PS_SOLID,1,RGB(0,255,0));
	CPen* pOldpen;
	CRect rc;
	GetClientRect(&rc);
	CBrush br;
	CBrush* pOldbr;
	if(num==1) {// turn on the mark
		br.CreateSolidBrush(RGB(0,255,0));
		pOldbr=dc.SelectObject(&br);
  		GetDlgItem(IDC_STATICZGNAME)->EnableWindow(TRUE);
		pOldpen=dc.SelectObject(&penGree);
	}
	else if(num==0) {// turn off the mark
		br.CreateSolidBrush(RGB(185,185,185));
		pOldbr=dc.SelectObject(&br);
		GetDlgItem(IDC_STATICZGNAME)->EnableWindow(FALSE);
		pOldpen=dc.SelectObject(&penGray);
	}
	dc.Rectangle(140,50,170,70);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -