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