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

📄 referview.cpp

📁 EVC写的串口通信程序,可运行程
💻 CPP
字号:
// referView.cpp : implementation of the CReferView class
//

#include "stdafx.h"
#include "refer.h"

#include "referDoc.h"
#include "referView.h"
OVERLAPPED read_os;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////////////////////
// CReferView

IMPLEMENT_DYNCREATE(CReferView, CEditView)

BEGIN_MESSAGE_MAP(CReferView, CEditView)
	//{{AFX_MSG_MAP(CReferView)
	ON_WM_CREATE()
	ON_WM_CHAR()
	ON_WM_TIMER()
	ON_WM_DESTROY()
	ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CReferView construction/destruction

CReferView::CReferView()
{
	// TODO: add construction code here

}

CReferView::~CReferView()
{
	// TODO: add construction code here

}

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

	BOOL bPreCreated = CEditView::PreCreateWindow(cs);
	cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL);	// Enable word-wrapping

	return bPreCreated;
}

/////////////////////////////////////////////////////////////////////////////
// CReferView drawing

void CReferView::OnDraw(CDC* pDC)
{
	CReferDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	RECT ClientRect;
	GetClientRect(&ClientRect);

//	pDC->ExtTextOut(0,0,ETO_OPAQUE,ClientRect,pDoc->GetShowString(),NULL);
//	pDC->TextOut(0,0,pDoc->GetShowString()); 
//	pDC->TextOut(pDoc->GetShowString(),-1,&ClientRect,
//		DT_CENTER|DT_VCENTER|DT_SINGLELINE);
}

/////////////////////////////////////////////////////////////////////////////
// CReferView diagnostics

#ifdef _DEBUG
void CReferView::AssertValid() const
{
	CEditView::AssertValid();
}

void CReferView::Dump(CDumpContext& dc) const
{
	CEditView::Dump(dc);
}

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

/////////////////////////////////////////////////////////////////////////////
// CReferView message handlers

int CReferView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CEditView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
 // OVERLAPPED read_os;
	//	MessageBox("hello");
	CEdit&m_editCtrl=GetEditCtrl();
//	m_editCtrl.SetReadOnly();
	DCB dcb;
	hCommDev=CreateFile(_T("COM1:"),GENERIC_READ|GENERIC_WRITE,
		0,NULL,OPEN_EXISTING,
	   FILE_ATTRIBUTE_NORMAL, NULL);//open port
   if(hCommDev==(HANDLE)-1)

//		if(hCommDev == INVALID_HANDLE_VALUE)
		{  	MessageBox(_T("PORT ERROR"));
	      return TRUE;
		}
	//*******************************************
	COMMTIMEOUTS CommTimeOuts;
	 GetCommState(hCommDev, &dcb ) ;
	   dcb.DCBlength = sizeof( DCB ) ;
       dcb.BaudRate =9600;
	   //  dcb.BaudRate =57600;
     
       dcb.fBinary = TRUE ;
       dcb.fParity =FALSE;//TRUE ; 
       dcb.ByteSize =8;
       dcb.Parity =0;//ODDPARITY;
       dcb.StopBits =0;//ONESTOPBIT ;
       dcb.fOutX=TRUE;
  //   dcb.fErrorChar=TRUE;
//     dcb.XonChar = ASCII_XON ;
//     dcb.XoffChar = ASCII_XOFF ;
       dcb.XonLim = 100 ;
       dcb.XoffLim = 100 ;
       dcb.fNull=1;
	   dcb.fRtsControl=0;
        SetCommState(hCommDev, &dcb ) ;
		 
 //      SetupComm(hCommDev, 65535, 65535) ;

    // purge any information in the buffer

       PurgeComm(hCommDev, PURGE_TXABORT | PURGE_RXABORT |
                          PURGE_TXCLEAR | PURGE_RXCLEAR   ) ;

    // set up for overlapped I/O
	  
       CommTimeOuts.ReadIntervalTimeout =0xFFFFFFFF ;
       CommTimeOuts.ReadTotalTimeoutMultiplier =0 ;
       CommTimeOuts.ReadTotalTimeoutConstant =0;//100;
       CommTimeOuts.WriteTotalTimeoutMultiplier = 0 ;
       CommTimeOuts.WriteTotalTimeoutConstant =10;//1000;
       SetCommTimeouts(hCommDev, &CommTimeOuts ) ;
	    
//*****************************************
/*	BuildCommDCB("COM2:1200,n,8,1",&dcb);
 //   GetCommState(hCommDev,&dcb);
   SetCommState(hCommDev,&dcb);
   COMMTIMEOUTS CommTimeOuts;
   CommTimeOuts.ReadIntervalTimeout =MAXDWORD ;
       CommTimeOuts.ReadTotalTimeoutMultiplier =0 ;
       CommTimeOuts.ReadTotalTimeoutConstant =0;
       CommTimeOuts.WriteTotalTimeoutMultiplier = 0 ;
       CommTimeOuts.WriteTotalTimeoutConstant =10;//1000;
       SetCommTimeouts(hCommDev, &CommTimeOuts ) ;
	   PurgeComm(hCommDev,PURGE_TXCLEAR);
	   PurgeComm(hCommDev,PURGE_RXCLEAR);*/
//*******************************************	

	char strOutMsg[20]="ATZ\r";
		DWORD dwBytesWritten;
      WriteFile(hCommDev,strOutMsg,strlen(strOutMsg),
    	&dwBytesWritten,NULL);
/*	 Sleep(2000);
	  char strOutMsg1[20]="ATDt169\r";
		DWORD dwBytesWritten1;
      WriteFile(hCommDev,strOutMsg1,strlen(strOutMsg1),
    	&dwBytesWritten1,NULL);
     Sleep(2000);*/
	//  SetTimer(1,2000,NULL);
    	SetTimer(1,50,NULL);
		return 0;
}

void CReferView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
   
	DWORD dwBytesWritten;
	WriteFile(hCommDev,&nChar,1,&dwBytesWritten,NULL);
 //  m_editCtrl=int(&nChar);
//	MessageBox("nChar");
	
	CEditView::OnChar(nChar, nRepCnt, nFlags);
}

void CReferView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	char strCommRecvMsg[911];
	DWORD i=0,j=0,m=0;
//	char a,b;
	DWORD dwBytesRead;
	BOOL bReturn=ReadFile(hCommDev,strCommRecvMsg,911,&dwBytesRead,
	//	&read_os);
	NULL);
//	BOOL bReturn=ReadFile(hCommDev,strCommRecvMsg,dwBytesRead,&dwBytesRead,
//		NULL);
    // if( strCommRecvMsg[0]==0x00)
//	 {
	//       for (i=0;i<=dwBytesRead;i++)
	//	   {	 strCommRecvMsg[i]=strCommRecvMsg[i+1];
	//	   }
//	 }
/*	m=dwBytesRead;

  for(i=0;i<m;i++)
  {	  a=strCommRecvMsg[i+j];
     if(a!=0x0F)
	 {    strCommRecvMsg[i]=a|0x80;//  china
	 }
       else                 //0x0F      English
	   { j++;
	//	strCommRecvMsg[i]=strCommRecvMsg[i+j];
    		b=strCommRecvMsg[i+j];
       	while(b!=0x0E)
		{   strCommRecvMsg[i]=strCommRecvMsg[i+j];
	   		b=strCommRecvMsg[i];
			i++;
			if(i>m)
			{i=i+2;
			break;}
		}
			i=i-2;
			j++;
		}

  }*/

	if(!bReturn)
		return;
	if( dwBytesRead<1)
       return;
	CEdit&m_editCtrl=GetEditCtrl();
	CString strTmp,strTmp1;
	m_editCtrl,GetWindowText(strTmp);
//	char str[100];
//	wsprintf(str,"%s",strTmp);
    strTmp1=strCommRecvMsg;
    strTmp+=strTmp1.Left(dwBytesRead);
	
	//	m_editCtrl.SetWindowText(strTmp);
  m_editCtrl.SetWindowText(strTmp);
      
	CEditView::OnTimer(nIDEvent);
	 
}



void CReferView::OnDestroy() 
{
	CEditView::OnDestroy();
	
	// TODO: Add your message handler code here
    KillTimer(1);
}

void CReferView::OnFileOpen() 
{
	// TODO: Add your command handler code here

//	char buffer[1024];
//	buffer[0]='2';
//	DWORD dwBytesWritten;

//   WriteFile(hCommDev,buffer,201,&dwBytesWritten,NULL);

}

⌨️ 快捷键说明

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