MFC实现串口通信 //异步通信消息映射机制

本文介绍了串口通信的过程,包括使用CserialPort类进行串口初始化和打开,设置端口号、波特率等参数,以及如何发送和接收数据。在接收数据部分,通过处理WM_COMM_RXSTR消息来实现数据的转换和显示。
摘要由CSDN通过智能技术生成

串口通信流程图

首先拷贝串口类的文件,注意是要包含消息映射WM_COMM_RXSTR和WM_COMM_RXCHAR的版本。

初始化并打开串口

 使用CserialPort类中InitPort函数设置串口参数(端口号、波特率、数据位、停止位等),使用StartMonitoring函数打开串口;若顺利打开,弹出“打开”消息框,串口状态变为“打开”。

UpdateData(TRUE);
	m_com.InitPort(m_hWnd,com,this->baud,'N',databit,stopbit);
	m_com.StartMonitoring();
	UpdateData(TRUE);
	if (m_com.IsOpened())
		destate.SetWindowTextW(_T("打开"));
	UpdateData(FALSE);

发送数据

首先获取数据编辑框中的内容,再使用CserialPort中WriteToPort函数发送数据;

​
CString str,ntr;
	m_send.GetWindowTextW(str);
	int len = 0;
	char* m_str = NULL;
	CStringA strA(str);
	len = strA.GetLength();
	m_str = strA.GetBuffer();
	m_send.SetWindowTextW('\0');
	m_com.WriteToPort(m_str, len);

​

接收数据

在资源视图页面右键选择类向导,搜索“消息”WM_COMM_RXSTR,“添加处理程序”,cserial.cpp中建立消息映射;

 Dlg.h文件中消息接收函数声明:

Dlg.cpp文件中消息接收函数:

afx_msg LRESULT CcserialDlg::OnCommRxstr(WPARAM ch, LPARAM port)
{
	CString receiver;
	char* tempre = (char*)ch;
	int num = MultiByteToWideChar(0, 0, tempre, -1, NULL, 0);
	wchar_t* wide = new wchar_t[num];
	MultiByteToWideChar(0, 0, tempre, -1, wide, num);}

wide即可显示;

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值