VS2010基于对话框的MFC串口通信实例
测试提前安装虚拟串口
工程文件源代码与虚拟串口软件在Q-Q群文件里面,见底部。
部分代码供参考
void CmscommExampleDlg::OnCbnSelchangeCombo1()
{
// TODO: 在此添加控件通知处理程序代码
int nSel;
nSel=m_comboCom.GetCurSel();//获取组合框控件的列表框中选中项的索引
m_ctrlComm.put_CommPort(nSel+1);///选择串口号(这里因为列表框的索引号是从0开始
m_ctrlComm.put_PortOpen(TRUE);//打开串口
/*MessageBox("端口已经打开");
else
MessageBox("打开失败");*/
m_ctrlComm.put_RThreshold(2);//收到两个字节引发OnComm事件
m_ctrlComm.put_InputMode(1);//输入模式选为二进制
m_ctrlComm.put_Settings("9600,n,8,1");//设置串口参数,波特率,无奇偶校验,位停止位,位数
m_ctrlComm.put_InputMode(1);// 以二进制方式检取数据
m_ctrlComm.put_RThreshold(1);//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm
m_ctrlComm.put_InputLen(0);//设置当前接收区数据长度为0
m_ctrlComm.get_Input();//先预读缓冲区以清除残留数据
m_setOk=true;//标记串口设置OK
//m_ctrlComm.SetWindowTextA("22");
m_comboCom.EnableWindow(FALSE);
m_Log="串口连接成功";
UpdateData(FALSE);
}
BEGIN_EVENTSINK_MAP(CmscommExampleDlg, CDialogEx)
ON_EVENT(CmscommExampleDlg, IDC_MSCOMM1, 1, CmscommExampleDlg::OnCommMscomm1, VTS_NONE)
END_EVENTSINK_MAP()
void CmscommExampleDlg::OnCommMscomm1()
{
// TODO: 在此处添加消息处理程序代码
VARIANT variant_inp;//Variant 是一种特殊的数据类型,除了定长String数据及用户定义类型外,可以包含任何种类的数据
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];//设置BYTE数组 An 8-bit integer that is not signed.
CString strtemp,strtemp1;
strtemp1="";
if(m_ctrlComm.get_CommEvent()==2)//事件值为2表示接收缓冲区内有字符
{
variant_inp=m_ctrlComm.get_Input();//读缓冲区
safearray_inp=variant_inp;//VARIANT型变量转换为
len=safearray_inp.GetOneDimSize();//得到有效数据长度
for(k=0;k
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?