一个简单的C++串口Demo

一个简单的C++串口Demo


前言

本人最近再做一个C++的相关通信编程,里面需要串口通信的接口。原先在vs2010版本之前时候MSCOMM控件的,可以直接调用。vs2010版本之后也可以通过自行添加活动控件的方法,调用MSCOMM控件,这里我就不介绍了,自行百度就行。但vs2019版本是没法用添加活动控件的方法解决的,添加进来生成的mscomm.h和mscomm.cpp文件都会报错,无法运行,所以没办法用编写的.h和.cpp文件实现串口功能。

一、配置下载的SerialPort.h和SerialPort.cpp文件

将下载的编写好的串口类.h和.cpp文件复制到工程目录下,在建好的MFC项目中,点击头文件—添加已有项—选中工程目录下的SerialPort.h文件,SerialPort.cpp文件同理配置。
在这里插入图片描述

二、串口功能实现

1.MFC界面

Alt

界面内实现简单的串口数据收发,通过串口类中的回调函数,将串口数据传递到窗体类中,进行数据显示。关于C++回调函数的使用这里不做赘述。

2.配置串口参数

配置串口参数使用的是串口类中的函数

bool CSerialPort::InitPort(UINT portNo /*= 1*/, UINT baud /*= CBR_9600*/, char parity /*= 'N'*/,
	UINT databits /*= 8*/, UINT stopsbits /*= 1*/, DWORD dwCommEvents /*= EV_RXCHAR*/)

这里的实例只支持改变串口号和波特率,默认无校验,数据位8,停止位1

m_com.InitPort(port, Baud, 'N', 8, 1, EV_RXCHAR);
m_com.OpenListenThread();

3.配置回调函数

回调函数配置介绍
SerialPort.cpp文件中的回调函数

void CSerialPort::CallBack(function<void(byte*, UINT)> param)
{
	m_funcs = param;
}

在需要的地方为我们的串口实例成员绑定回调触发的函数,本实例中是在SerialPortDemoDlg.cpp中CSerialPortDemoDlg::OnInitDialog()内

//绑定串口数据的回调事件
	std::function<void(byte*, UINT)> _fun = std::bind(&CSerialPortDemoDlg::m_CallBack, this, std::placeholders::_1, std::placeholders::_2);
	m_com.CallBack(_fun);

这里使用的std::bind()是一个十分强大的绑定函数,感兴趣的小伙伴可以自行查找资料学习


总结

具体的代码实现大家可以下面的链接下载

下载地址:https://download.csdn.net/download/QbilieveQ/12880755
或者 https://github.com/TJLWJ/SerialPort_C.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值