我们已经准备好了,你呢?

2024我们与您携手共赢,助您领跑移动端创新增长!

  VS2013,串口程序编写和调试;参照网文,整理。

  开发环境:VS2013

  串口控件

  电脑:win7,32版本

  准备:

  · 1、下载串口控件:

  链接: 密码:yfxo

  压缩包包含四个文件:MSCOMM.SRG、MSCOMM32.DEP、MSCOMM32.oca、mscomm32.ocx;

  解压后拷贝到:

  C:\Windows\System32(WIN7、Win8、Win10系统);

  C:\WINDOWS\system32(XP系统)。

  注意:64位win7、8、10系统还需要将mscomm32.ocx文件复制到C:\Windows\SysWOW64\目录下,否则后面注册会出错。

  2、在C:\Windows\System32里找到cmd.exe以管理员身份运行:

  Regsvr32 C:\WINDOWS\system32\MSCOMM32.OCX

  注册成功如图所示:

  3、修改注册表:win+R组合键打开“运行”或者直接在开始菜单里找到“运行”;输入regedit后回车,打开注册表管理器,在其中找到HKEY_CLASSES_ROOT项下的Licenses项,添加主项命名为“4250E830-6AC2-11cf-8ADB-00AA00C00905”,并将键值修改为“kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun”

  4、新建MFC工程:在VS 2013中新建一个MFC项目,比如基于对话框的一个项目

  5、添加MSComm控件:在对话框上右击选择“打开ActiveX控件”,英文版“InsertActiveX Control”找到Microsoft Communications Control,version 6.0,此时在对话框中出现一个电话一下的按钮,这个就是MSComm控件,软件运行时是看不见的

  6、按你需要的,添加对话框控件:

  7、在电话控件上添加映射变量;完成后, 在工程中会自动生成mscomm.h 和mscomm.cpp两个文件;

  8、在串口控件上右键,添加控件事件处理函数:

  11、打开串口按钮回调函数编写:

  CString portnums = _T("0");//定义串口编号,默认值串口编号为0

  void Cport_demonstrationDlg::OnBnClickedBottonOpen()

  {

  // TODO: 在此添加控件通知处理程序代码

  Edit.GetWindowText(portnums);//获取编辑框中的串口编号

  int flag = _ttoi(portnums);//将其转化为数值类型

  if (flag)//如果输入的串口编号为正整数,才执行下列命令

  {

  if (m_mscomm.get_PortOpen())

  {

  m_mscomm.put_PortOpen(FALSE);

  }

  m_mscomm.put_CommPort(flag); //选择COM

  m_mscomm.put_InBufferSize(1024); //接收缓冲区

  m_mscomm.put_OutBufferSize(1024);//发送缓冲区

  m_mscomm.put_InputLen(0);//设置当前接收区数据长度为0,表示全部读取

  m_mscomm.put_InputMode(1);//以二进制方式读写数据

  m_mscomm.put_RThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm

  m_mscomm.put_Settings(_T("9600,n,8,1"));//波特率9600无检验位,8个数据位,1个停止位

  if (!m_mscomm.get_PortOpen())//如果串口没有打开则打开

  {

  m_mscomm.put_PortOpen(TRUE);//打开串口

  AfxMessageBox(_T("串口打开成功"));

  }

  else

  {

  m_mscomm.put_OutBufferCount(0);

  AfxMessageBox(_T("串口打开失败"));

  }

  }

  else

  {

  AfxMessageBox(_T("请先输入需要打开串口编号"));

  }

  }

  12、关闭按钮回调函数编写:

  void Cport_demonstrationDlg::OnBnClickedBottonClose()

  {

  // TODO: 在此添加控件通知处理程序代码

vs2013开发微信小程序(在VS2013下编写基于MSCOMM的MFC串口通讯程序)

  m_mscomm.put_PortOpen(FALSE);//关闭串口

  AfxMessageBox(_T("串口已关闭"));

  }

  13、发送数据按钮回调函数实现:

  void Cport_demonstrationDlg::OnBnClickedBottonSend()

  {

  // TODO: 在此添加控件通知处理程序代码

  UpdateData(true); //读取编辑框内容

  m_mscomm.put_Output(COleVariant(m_EditSend));//发送数据

  m_EditSend.Empty(); //发送后清空输入框

  UpdateData(false); //更新编辑框内容

  }

  14、接收数据按钮回调函数编写(写在串口事件处理程序里面):

  void Cport_demonstrationDlg::OnCommMscomm1()

  {

  // TODO: 在此处添加消息处理程序代码

  static unsigned int cnt = 0;

  VARIANT variant_inp;

  COleSafeArray safearray_inp;

  long len, k;

  unsigned int data[1024] = { 0 };

  byte rxdata[1024]; //设置 BYTE 数组

  CString strtemp;

  if (m_mscomm.get_CommEvent() == 2) //值为 2 表示接收缓冲区内有字符

  {

  cnt++;

  variant_inp = m_mscomm.get_Input(); //读缓冲区消息

  safearray_inp = variant_inp; ///变量转换

  len = safearray_inp.GetOneDimSize(); //得到有效的数据长度

  for (k = 0; k

  {

  safearray_inp.GetElement(&k, rxdata + k);

  }

  for (k = 0; k

  {

  strtemp.Format(_T("%c"), *(rxdata + k));

  m_EditReceive += strtemp;

  CString temp = _T("\r\n"); //换行

  m_EditReceive += temp;

  }

  }

  UpdateData(FALSE); //更新编辑框内容

  }

我们凭借多年的APP小程序开发经验,坚持以“个性定制 源码交付 独立部署 满意为止”为宗旨,累计为5000多家客户提供品质服务,得到了客户的一致好评。即刻开启你的小程序/APP,帮您轻松抢占千亿流量红利,助您轻松获客!
立即咨询: 13716188458 / 18588225959,助您抢占市场先机。项目经理在线

我们已经准备好了,你呢?

2024我们与您携手共赢,助您领跑移动端创新增长

售前咨询
咨询电话

13716188458

18588225959

在线留言
扫码加微信
微信
在线留言
* 请输入姓名
* 请输入有效联系方式
请输入您的需求:
* 请输入需求
提交成功