欢迎来到天天文库
浏览记录
ID:34508449
大小:695.23 KB
页数:5页
时间:2019-03-07
《用vc_实现单片机与pc机通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2006年第1期漳州师范学院学报(自然科学版)No.1.2006年(总第51期)JournalofZhangzhouTeachersCollege(Nat.Sci.)GeneralNo.51文章编号:1008-7826(2006)01-0046-05用VC++实现单片机与PC机通信黄成(漳州师范学院物理与电子信息工程系,福建漳州363000)摘要:本文介绍了在VisualC++的环境下开发应用程序实现PC机与单片机通信的方法.关键词:串行通信;单片机;VisualC++;RS-232接口中图分类号:TP273文献标识码:A1引言在很多时候我们需要把单
2、片机采集的数据传输到PC机,并进行一些实时的处理.VC++是Windows环境下的可视化编程工具,可以实现通信和数据处理的编程要求.本文具体介绍用ActiveX控件的方法在VC++中实现串口的通信.2通信协议的设置本文假设所涉及的通信要求有较高的正确性,且线路中会出现偶尔的错误,所以可设置如下的协议:若传需要输的数据范围不限,可采用字符填充方式,这里为了更好的说明问题,假设需要传输的数据在0~100之间.协议由PC机或单片机采取主动皆可,主动方发送一个值为255的数据(一个字节),同时启动一个计时操作,并等待确认(值为252的数据),若之后超时则重新
3、发送255,若收到确认后,则开始进行通信,并设一标志表示通信已建立.之后双方可以进行发送也可以进行接收,若要结束通信,则发送一个值为253的数据,同时启动计时,若超时则重发253.所有发送的数据假设都在0~100之间,每发送一个数据后启动一个计时操作,若传输超时则重新发送该数据.每接收到一个数据先进行判断,若是0~100之间则把数据保存下来并发送一个值为254的确认数据,若接收到的数据是254,则发送下一个需要发送的数据,关定时.若接收到的是253,则再发送一个253后停止程序的运行或重新进行初始化.若接收到的是其它的数据,则直接丢弃.3电平的转换由
4、于PC机采用的是RS-232串口协议标准,单片机采用的是TTL电平,所以两者之间应进行相应的电平转化.可使用相应的专用芯片进行电平转化,如MAX232.4单片机程序的设计可以如图1设置单片机中断服务子程序,仅供参考.相应单片机程序这里不再介绍了.收稿日期:2005-10-10作者简介:黄成(1976-),男,福建漳州市人,助教,学士.第1期黄成:用VC++实现单片机与PC机通信47否是否接收中断是现场保护否是255否是是254发送252是否是253否定时计赋初值开定时是是252否是关机0~100发下一数据关定时是处理数据现场恢复退出中断图1中断服务子
5、程序5VC++程序设计5.1MSComm控件的使用MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能.MSComm控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的API函数,而且在VC++,VB,Delphi等语言中均可使用.MicrosoftCommunicationsControl(以下简称MSComm)不是工具箱控件,在VC中如果要使用此控件,首先应该将这个控件插入到一个Project中,然后才能在这个工程中使用它.要添加此控件,可选择“Project->AddToProject->ComponentsandCon
6、trols”菜单命令,然后在弹出的ComponentsandControlsGallery对话框中双击RegisteredActiveX文件夹,再选中“MicrosoftCommunicationsControls,Version6.0”选项,单击“Insert”按钮就可以完成添加MSComm控件操作.MSComm是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法.具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法.主要是在comE
7、vReceive(接收到数据)事件发生时响应并获取缓冲区的数据.一是查询法:在这种情况下,每当应用程序执行完某一串行口操作后,将不断检查MSComm控件的CommEvent48漳州师范学院学报(自然科学版)2006年属性以检查执行结果或者检查某一事件是否发生(Microsoft提供的用于串口操作的控件Mscomm共有27个属性).本文主要介绍事件驱动方法.5.2MSComm控件的属性MSComm控件的几个常用的属性有:(1)CommPort属性voidSetCommPort(shortnNewValue);shortGetCommPort();这一属
8、性用于设置并返回连接的串行端口号,Windows将会利用该串口和外界通信.在设计时,nNewValue可以设
此文档下载收益归作者所有