📄 referview.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 + -