2015年(29)
分类: C/C++
2015-05-03 19:39:14
A、 初始化串口 InitPort
B、 开启串口线程
void CSimpleDemoDlg::OpenComm()
{
//m_comm为CSerialPort,定义在CSimpleDemoDlg
//m_com_num:串口号,如COM2,则m_com_num为2
//BOOL CSerialPort::InitPort(CWnd* pPortOwner, // 端口所有者
// UINT portnr, // 端口号
// UINT baud, // 波特率
// char parity, // 校验位
// UINT databits, // 数据位数
// UINT stopbits, // 停止位
// DWORD dwCommEvents, // EV_RXCHAR需要处理的事件
// UINT writebuffersize) //缓冲区
if(m_comm.InitPort(this,m_com_num,9600,'n',8,1,EV_RXCHAR,1024))
{
//初始化成功,开启串口线程
m_comm.StartMonitoring();
}
}
void CSimpleDemoDlg::CloseComm()
{
m_comm.ClosePort();
}
发送数据主要通过WriteToPort函数
void WriteToPort(char* string);
void WriteToPort(char* string,int n);//add by mrlong 2007-12-25
void WriteToPort(LPCTSTR string);//add by mrlong 2007-12-25
void WriteToPort(LPCTSTR string,int n);//add by mrlong 2007-12-2
void WriteToPort(BYTE* Buffer, int n);// add by mrlong
上述为发送数据WriteToPort的函数声明。
接收数据应该算是4个操作中较为复杂的。
1、 在使用者类中声明数据接收处理函数,相当于Qt中的槽处理函数。
LONG OnComm(WPARAM ch,LPARAM port);
2、在使用者类的源文件中进行消息映射
BEGIN_MESSAGE_MAP(CSimpleDemoDlg, CDialogEx)
…mfc自动生成的部分代码
ON_MESSAGE(WM_COMM_RXCHAR,OnComm)
END_MESSAGE_MAP()
3、对OnComm进行定义
LONG CSimpleDemoDlg::OnComm(WPARAM ch,LPARAM port)
{
//对ch进行操作,ch转换成char类型,为得到的数据
return 0;
}