基于VC串口通信的实现

来源 :电脑学习 | 被引量 : 0次 | 上传用户:yukon_hawk
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:介绍在VC 6.0开发平台上。运用MSComm控件实现串口通信.通过实例进行具体详细说明。
  关键词:串口 通信 MSComm
  中图分类号 TP368.1 文献标识码 B 文章编号:1002-2422(2007)03-0046-02
  
  1 建立应用工程
  
  打开Visual C ,建立一个基于对话框的MFC应用程序,在对话框中添加控件,用ClassWizard为相应控件设置属性及添加变量如表l所示,其中MSComm的添加见第二步。
  
  2 在当前工程中添加MSComm控件
  
  单击菜单Add To Project->Components and Controls,在打开的对话框中选择“Begistered AetiveX Controls”,再双击此项出现控件选择对话框“Component and Controls Gallerf”,在该框中选择“Microsoft Communications Control,version 6.O”控件,再单击“Insert”按钮,提示“Insert this com-ponent?”,确认后,可以看到加入CMSComm类的Confirm Class对话框,提示加入到当前工程中的CMSComm类头文件为MSComm.h,实现文件为MSComm.epp。单击“OK”按钮关闭Confirm Class对话框,再单击“Close”关闭Component and Controls Gallery对话框,则在VC集成环境中,当前工程的Class View中就出现了CMSComm类,同时在对话框资源控件中出现了一个电话机形状的控件,就是MSComm控件。
  利用这种添加控件的方法,对之后的串口消息事件处理会提供很大的方便,ClassWizard会自动在当前程序工程中进行消息类的映射。
  
  3 初始化串口
  
  通过以上操作,ClassWizard自动在SCommTestDlg.h中加入了#include“mscomm.h”语句。
  //{AFX_INCLUDES()
  #include“mscomm.h”
  //}lAFX_INCLUDES
  下面,在CSCommTestDlg::OnlnitDialog()函数中写入对串口的初始化语句,串口初始化语句由IDC_MSCOMMI的CMSComm控制变量m_etrlComm来设置串口控件属性。代码如下:
  m_ctdlComm.SetCommPort(1)
  m_ctdlComm.SetInputMode(1)
  m_ctdlComm.SetlnBufferSize(1024)
  m_ctdlComm.SetOutBufferSize(512)
  m_ctrlComm.SetSettings(“9000,n,8,1”)
  if(lm_ctrlComm.GetPortOpen())
  m_culComm.SetPortOpen(TRUE)
  m_ctdlComm.SetRThreshold(1)
  m_ctrlComm.SetInputLen(0)
  m_ctrlComm.Getlnput()
  
  4 从串口接收数据
  
  MSComm控件一般用事件驱动方式从串口接收数据,也就是消息处理,当串口有事件发生时,程序调用消息函数来处理数据。打开ClassWizard→Message Maps,在ClassName中选择类CcomDlg,再在Object IDs中选择IDC_MSCOMMl,然后在Message中双击消息OnComm(或单击“Add Function”),在弹出的对话框中将函数名改为OnComm,单击“OK”。就加入了串口事件的消息处理函数。在coreDlg.cpp文件中编写OnComm()中的代码,主要任务是从串口接收数据并显示在接收编辑框中。
  void CComDlg:OnComm()
  {VARIANT varlant_inp;
  ColeSafeArray safearray_inp;
  LONG len,k;
  BYTE rxdata[2048]:
  CStrlng strtemp;
  if(m_ctrlComm.GetCommEvent()==2)
  {
  varlant_inp=m ctrlComm.GetInput():
  safearray_in=variant_inp;
  len=safeary_inp.GetOneDimSize():
  for(k=0;k<len;k )
  safearray_inp.GetElement(&k,rxdata k):
  for(k=O;k<len;k )
  {
  BYTE bl=*(char*)(rxdata k):
  strtemp.Format(“%c”,bt);
  m_strEditR.XData =strtemp;
   }
  }
  UpdateData(FALSE);
  }
  
  5
  发送数据
  
  先为发送按钮添加一个单击消息,即BN_CLICKED处理函数,打开ClassWizard→Message Maps,选择类CComDlg, 选中IDC_BUTrON_MANUALSEND, 双击BN_CLICKED添加OnButtonManualsend函数,在函数中添加如下代码:
  void CComDlg::OnButtonManualsend()
  { updateData(TRUE);
  m_ctrlComm.SetOutput(COleVariant(m_strEditTXData));
  }
  
  6 程序测试及结果
  
  需要两个串口来测试程序,这两个串口可以在一台计算机上,也可以分别在两台计算机上,可自制一个三线串口线(发送、接收、地)将其连接。可通过串口调试助手。
  
  7 结束语
  
  通过实例介绍了基于VC控件MSComm的串口通信方法,MSComm控件比较简单,一般只是用于较简单的系统,串口通信还可以使用Windows API函数和CSerial类,可以根据实际情况选择合适的方法。
其他文献
清晨被电话铃叫醒,虽早有准备,也仍然心里一颤:“老丁爷爷走了,昨天下午5点半……”下午3点,我匆匆赶到60公里以外的西郊回民公墓,只来得及为已入殓的九旬老人家铲上几锹土,代表我家里曾经的两代附中学生,也代表我的少年同窗们。  在和煦的春风里阿訇们吟唱着,我恍惚觉得我们的老校长并没有离开大家,他只不过是躺卧在地底下静静地睡着了。他不再会有痛苦,像十二天前我见到的那样。  4月22日下午,我悄悄走进因
【摘要】课堂组织教学管理是影响课堂教学效果的重要因素。因此,教师要注意课堂组织教学中的“三点”,即有效创设情景,激发学习欲望;有效组织学习,让学生乐学其中;有效、健全的课堂评价机制,让学生各有所获。如果做到以上几点,教师的课堂组织教学就可以避免“浮华”,从而达到高效和趣味性。  【关键词】情景创设;合作学习;现代教学手段;评价  一个高质高效的课堂有赖于有效的课堂组织教学管理。如何提高课堂的组织教
【摘要】很多人認为,游戏教学只适合于儿童时代的教学,因此,在语言的教学中,随着年龄的增长,“游戏”逐渐淡出了语言教学课堂。特别是六年级的英语教学,处境十分的尴尬:应试和升学的压力,使得语言的学习极具功利性,学生对于语言的学习,在很大的程度上都是为了考试。这里当然有历史和社会的原因,也是我们暂时无法改变的事实。问题是,如何在这样的背景下探索教学新路径,既能顾及学习中的情趣,又能有效地提高学生的应试能
【摘要】构建学生有效学习的课堂教学,教师在课堂上提高自己的提问艺术很有必要,一个好的提问可以引起学生的兴趣,激发学生的思维,能把课堂话语权还给学生,让课堂提问更有效。  【关键词】小学语文;课堂教学;有效提问;策略探究  课堂教学改革是新课标实施的关键。在教学实践中,教学的低效、无效现象还有存在。为了构建学生有效学习的课堂教学平台,积累教师丰富的有效教学策略,提高教与学的效率,我校开展了“小学有效
【摘要】国防教育事关国家安全和民族生存的问题。初中历史课堂作为培养学生的国防意识、提高学生国防素质的第一场所和重要阵地,具有得天独厚的优势。本文以统编版初中历史八年级上册第1课《鸦片战争》为例,介绍了初中历史教学中渗透国防教育的做法,阐述了初中历史教学与国防教育之间的关系。  【关键词】国防教育;初中历史;渗透  国防教育是唤起人民忧患意识和民族危机感的教育,事关国家安全和民族生存的问题。《中华人
本报综合消息 6月22日,二十国集团(G20)教育部长视频会议召开,教育部部长陈宝生在会上介绍了中国政府破解教育贫困、保障教育连续性、推进后疫情时代教育发展的思考、探索和实践。  陈宝生表示,中国政府将教育作为阻断贫困代际传递、实现脱贫致富的根本之策,走出了一条中国特色减贫道路。全球疫情期间,中国教育部统筹疫情防控和教育改革发展,实现了50多万所学校、2亿多名在校生、2200多万名教职工“停课不停
【摘要】古诗词是中华优秀传统文化,历时千年仍被世人所传诵。统编版教材中,古诗选篇的有增无减更说明国家对传承传统文化的重视。本文结合自身教学实践,从小学古诗词“唱演法”是怎样提出的、古诗词“唱演法”课堂与传统课堂的异同、“唱演法”课堂的形式及范例、“唱演法”课堂的成效四方面阐述小学古诗词“唱演法”教学。这种教法可以引导学生读中学、学中唱、唱中演,丰富学生的语言积累,提高学生的思维能力、创造能力、人文
【摘要】积木建构游戏是幼儿园常见的游戏之一,深受幼儿的喜欢。已有研究表明,积木建构游戏对提高幼儿的逻辑思维能力有显著的作用,本研究在已有研究与实践的基础上,选择“积木”这一载体,在积木建构游戏中综合运用行动研究法、观察法、测验法等探索积木建构游戏对幼儿逻辑思维能力发展的促进作用。研究结果表明,实验班(中班)幼儿在经过一年的积木建构课程后其逻辑思维能力得到显著的提升。因此,笔者提出积木建构游戏“五步
【摘要】学生核心素养的培育是终身学习和长远发展的重要内容,物理学科作为研究物质运动基本规律和物质基本结构的自然科学学科,在教学实践中需要学生不断探索和思考,养成物理观念、科学思维、实验探究、科学态度与责任等基本的核心素养。笔者结合个人的高中物理教学经验,对物理学科核心素养的四大要素作简单概述,再提出课堂教学中培养学生物理核心素养的几点思考。  【关键词】课堂教学;物理学科;核心素养  物理学科核心
中央美术学院附中首任校长丁井文生平大事记  1931年毕业于河南艺术师专,当过数载美术教师。  1938年在民族危亡之际,组织抗日游击队任连指导员。  1939年奔赴延安。  1940年在延安鲁艺美术系学画。  1949年随中央机关进京,曾为毛泽东和刘少奇的家庭美术教师。  1950年中央美术学院成立,被任命为院办主任、人事处长,继而先后出任美院国画系主任、美院附中校长。  1951年与王式廓合画