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

📄 picker.cpp

📁 本人工作中的一个软件开发实例。里面包含了数据库
💻 CPP
字号:
// Picker.cpp : implementation file
//

#include "stdafx.h"
#include "oil.h"
#include "Picker.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPicker

IMPLEMENT_DYNCREATE(CPicker, CFrameWnd)

BEGIN_MESSAGE_MAP(CPicker, CFrameWnd)
	//{{AFX_MSG_MAP(CPicker)
	ON_MESSAGE(WM_COMM_RXCHAR, OnRcvChar)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

//缺省构造函数
CPicker::CPicker()
{
	;
}

//构造函数
CPicker::CPicker(CWnd * Parent,int nPort=1)
{
	//保存父窗口指针
	m_pParent=Parent;

	//创建一个不可见的窗口
	Create(NULL,"Hello World!",WS_OVERLAPPEDWINDOW,CRect(0,0,200,200)); 

	//打开串口
	m_pSerialPorts=new CSerialPort;
    m_pSerialPorts->InitPort(this,1,9600);
    m_pSerialPorts->StartMonitoring();
}

//析构函数
CPicker::~CPicker()
{   
	//删除串口对象
    m_pSerialPorts->StopMonitoring();
	delete m_pSerialPorts;
		   m_pSerialPorts=NULL;
}


/////////////////////////////////////////////////////////////////////////////
// CPicker diagnostics

#ifdef _DEBUG
void CPicker::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CPicker::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CPicker message handlers
//收到字符后的响应函数
LONG CPicker::OnRcvChar(WPARAM ch, LPARAM port)
{
	//收到字符
    m_strRcv+=ch;
	//收到OD,0A换行,接收完整的数据包	
	if(ch=='*')
	{
		//发送接收正确到窗口
		TRACE(m_strRcv);
		KillTimer(1);
        ::PostMessage(m_pParent->GetSafeHwnd(),WM_COMMAND_CORRECT,(WPARAM)0,(LPARAM)port);
		//(m_strRcv.GetBuffer(m_strRcv.GetLength()))
		//m_strRcv.ReleaseBuffer();
		//发送下一个数据
	}
	return 0;
}

//超时处
void CPicker::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	//发送超时消息到主窗口
	::PostMessage(m_pParent->GetSafeHwnd(),WM_COMMAND_TIMEOUT,(WPARAM)0,(LPARAM)0);
	//发送下一个数据
	CFrameWnd::OnTimer(nIDEvent);
}

//发送数据
void     CPicker::SendData(char *    lpcSend)  
{
	//调试
	TRACE("%s\n",lpcSend);
	//保存参数
	strncpy(m_lpcSnd,lpcSend,strlen(lpcSend));
	//启动超时计时器
    SetTimer(1,1000,NULL);
	//发送数据
	m_pSerialPorts->WriteToPort(m_lpcSnd);

	return ;
}

//发送数据函数
void     CPicker::SendData(CString   strSend)  
{
	//调试
	TRACE("%s\n",strSend);
	//启动超时计时器
	SetTimer(1,5000,NULL);
	//准备数据
	memset(m_lpcSnd,0,SENDLEN);
	strncpy(m_lpcSnd,strSend,strSend.GetLength());
	//发送数据
	m_pSerialPorts->WriteToPort(m_lpcSnd);
    return;
}

⌨️ 快捷键说明

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