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

📄 referview.cpp

📁 用VC++6.0实现M511序列.用与扩频通信
💻 CPP
字号:
// referView.cpp : implementation of the CReferView class
//

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

#include "referDoc.h"
#include "referView.h"
#include "math.h"
//char strCommRecvMsg[91111];
//	DWORD dwBytesRead;
OVERLAPPED read_os;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
char m[512];
void pn(void);
int k=0;

/////////////////////////////////////////////////////////////////////////////
// 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)
	ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)
	//}}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->DrawText(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("COM2",GENERIC_READ|GENERIC_WRITE,
		0,NULL,OPEN_EXISTING,
	   //FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, // overlapped I/O
    	  	0,
		NULL);//open port
    if(hCommDev==(HANDLE)-1)
	{
	   	MessageBox("PORT ERROR");
	
	return TRUE;
	}
	//*******************************************
	COMMTIMEOUTS CommTimeOuts;
	 GetCommState(hCommDev, &dcb ) ;
	   dcb.DCBlength = sizeof(DCB ) ;
	  // dcb.BaudRate =2400;
      // 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 = 10 ;
       dcb.XoffLim = 10 ;
       dcb.fNull=1;
        SetCommState(hCommDev, &dcb ) ;
		 
     //  SetupComm(hCommDev, 4096, 4096) ;

    // 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 = 100 ;//0
       CommTimeOuts.WriteTotalTimeoutConstant =10;//10;
       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[100]="ATZ\r1111111111111111111111111";
		DWORD dwBytesWritten;
		char strOutMsg1[2048]={0xfe, 0x01, 0x00, 0x01c, "1"};
		WriteFile(hCommDev,strOutMsg1,20,
                                  &dwBytesWritten,NULL);

     // 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(10,50,NULL);
pn();
    	SetTimer(1,3000,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;
		char strOutMsg1[21]={0xfe, 0x01, 0x00, 0x01};
		
	// WriteFile(hCommDev,strOutMsg1,4, &dwBytesWritten,NULL);
	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[91111];
	int i,j,t;
	DWORD dwBytesWritten;
	char strOutMsg1[2048];
  
for ( i=0;i<511;i++)
{
    
     for ( t=0;t<4;t++)   //   每个pn 码片抽样4次,与输入信号的4个抽样对应.
	 {   
		 if (m[i]>0)
		 {
        
        strOutMsg1[i*4+t] =127*sin(2*3.1415926*(i*4+t)*3/4)+128; //sin input
		 }
		else
		{  
		strOutMsg1[i*4+t] =256-127*sin(2*3.1415926*(i*4+t)*3/4); //sin i

		}
      
	}
}


 WriteFile(hCommDev,strOutMsg1,2044, &dwBytesWritten,NULL);
//  m_editCtrl,SetWindowText(strTmp);
// Sleep(200);      
	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);

}

void CReferView::OnChangeEdit1() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CEditView::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here

      
//	CEditView::OnTimer(nIDEvent);
	
}
void  pn(void) //local m  FFT
{ int i;
int m0=1,m1=0,m2=0,m3=0,m4=0,m5=0,m6=0,m7=0,m8=0,m9=0;


  for ( i=0;i<512;i++)   // m  (1021)
  {
//m0=(m0 ^ m1 ^ m4 ^ m5) || ( ! (m0 || m1 || m2 || m3 || m4 || m5 )) ;
m[i]=m9;                 //keep from m0=m1=m2=m3=m4=m5=0;
m9=m8;
m8=m7;
m7=m6;
m6=m5;
m5=m4;
m4=m3;
m3=m2;
m2=m1;
m1=m0;
m0=m4^m9;//(1021)

  }
}

⌨️ 快捷键说明

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