📄 dyrasview.cpp
字号:
// 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 + -