利用VB实现PC机与多个单片机通讯_第1页
利用VB实现PC机与多个单片机通讯_第2页
利用VB实现PC机与多个单片机通讯_第3页
利用VB实现PC机与多个单片机通讯_第4页
利用VB实现PC机与多个单片机通讯_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、利用VB实现PC机与多个单片机通讯UsingVBRealizedCommunicationBetweenMultipleMCU&PCLiGuofeng(LangfangTeachersCollege,Langfang065000,China)s:UsingVBCOMMControlsinWindows2000canberealizedcommunicationsBetweenmanyMicrocontrollerunintsandPC.Greatlyacceleratedbythetimercontrolautomatedprocesses,overcomingthepast"

2、;handshake"agreementsresultingfromtheshortcomingsofslowcommunications.ThispapermainlyintroduceshowtouseaPCinVBsoftwareconstructionofMCUinterfaceandtheunderlyingcommunicationfoundation.Keywords:MCU;Communication;Property;Events在采用以PC机为控制中心的数据采集自动化控制系统中,通常需要单片机采集数据,然后用异步串行通讯方式传给PC机,PC对单片机进行定时控制,需

3、要多个单片机协同工作。如果系统不很复杂,可通过定时器控件控制收发过程,在必要的地方自动接收装置,使定时控制和通讯过程完美地结合起来。这样,可以免去“握手”协议的繁琐过程,简化编程,提高速度。VB具有面向对象的设计方法,友好的用户界面,简单方便的串行通讯和实用性强等优点,无论借用其他语言就可以开发出优秀的控制系统通讯软件。本文介绍在Windows2000环境下如何利用VB来实现PC机与多个PS1016单片机之间的串行通讯。一、VB环境下通讯程序的设计VB提供了串行端口控制Mscom俅为应用程序提供串行通讯。该控件屏蔽了通信过程中的底层操作,程序员可以设置、监视Mscomm?件的属i和事件,结合T

4、imer控件即可完成对串行口的初始化和数据的输入输出工作。(一)Mscomm空件的主要属性如下:Import设置并返回通讯端口号。端口号可以设置为116的任何数,如Mscommmport=2l示设置当前通讯端口为COM22.Setting设置并返回波特率、奇偶校验、数据位、停止位。格式为Mscomm.Setting=String。String是一个包含四部分的字符串:第一部分为波特率;第二部分为奇偶校验,N表示不校验,M表示符号校验,E表示偶校验,O表示奇校验,S表示空格校验;第三部分为数据位数,其可选值为4,5,6,7,8;第四部分为停止位位数,其可选值为1,1.5,2。Setting属性的

5、缺省值为“9600,N,8,1”。3.Portopen设置并返回通讯端口的状态,也可以打开和关闭端口。4.Input从接收缓冲区返回和删除字符。该属性在运行时为只读。5.InputLen设置并返回每次Input属性从接收缓冲区中读取的字符数。InputLen属性的缺省值为0。设置InputLen为0时,Input将读取接收缓冲区的全部字符。6.Output向传送缓冲区写数据。要传送的数据可是文本数据或二进制数据。7mEvent返回最近的通讯事件或错误。只要有通讯错误或事件发生错误时就会产生Oncomrl1件。CommEvenfl!性中存有该错误或事件的数值代码。(二)Timer控件的主要属性如

6、下:1.Enabled返回或设置一个值,该值用来确定一个窗体或控件否能够对用户产生的事件作出反应。通过把Enabled设置为“Galse”来使Timer控件成为无效,将取消由控件的Interval属性所建立的倒计时数。2.1 nterval返回或设置对Timer控件的计时事件调用间的毫秒数。Timer控件的Enabled属性决定该控件是否对时间的推移作出响应。将Enabled设置为“False”会关闭Timer控件,设置为“True”则打开Timer控件。当Timer控件置为有效时,倒计时总是从其Interval属性设置值开始。创建Timer事件程序。可通知VB在每次Interval到时该做什

7、么。Timer控件和Enabled属性设置为“True”时,VB将在Interval时间到后自动访问Timer_Timer过程。二、主窗体设计为实现通讯程序,须在VB开发环境下设置一个用做控制通讯的窗体。窗体上主要有一个通讯控件Mscomm和两个Timer控件。VB的特点是事件驱动,定时器控件会定时触发相应事件的驱动程序。(一)发送单片机命令为了使主机能够对整个检测过程进行实时控制,须要在发送命令以后设定等待的时间,也可以通过条件判断下一步是发达还是接收命令。对发送的命令,可能是文本方式或二进制代码。在发送二进制代码时,应特别注意发送的格式。发送命令过程是一个带参过程,这样可使发送命令简便易行

8、。具体程序如下:Sub发送单片机命令过程(commandAsByte)Dim输出命令(1To1)AsByteDoEvents输出命令(1)=commandMSComm1.OutBufferCount=0MSComm1.Output=出命令MSComm1.InBufferCount=0EndSub(二)接收数据接收数据是一个被动的过程,可以通过函数来实现,由定时器开启。在接收过程中,多数用特征字符,如“OK”、“#”等。这些需要在通讯协议中约定。Function接收数据()DoDoEventsIn_buffer$=In_buffer$&MSComm2.InputLoopUntilInSt

9、r(_buffer$,“OK”)'从串行端口读“OK”响应'In_buffer=Left(In_buffer,len(In_buffer)-2)接收数据=In_buffer$EndFunction(三)Timer控件控制通过Timer控件来控制通讯中的发送命令和接收数据过程在通讯程序中设置两个Timer控件分别控制发送单片机命令和接收单片机数据。为了实现一台PC机和多单片机之间的通讯I可在一个Timer控件的过程中,在发送命令之前设定命令参数和要接收数据的单片机号,然后发送单片机命令;在另一个Timer控件的过程中,根据发送前设定的单片机号,接收不同单片机的数据。Timer控件

10、控制程序如下:'发送命令主控程序PrivataSubTimerSend_Timer()TimerSend.Enabled=FalseSelectCasecommandCase 1Call发送单片机命令过程(任务1)TimerReceive.Enabled=False'启动自动接收Case 2Call发送单片机命令过程(任务2)MSComm1.Rthreshold=0'关闭自动接收TimerReceive.Interval=500TimerReceive.Enabled=True'启动定时器接收机号=1Case 3Call发送单片机命令过程(任务3)MSComm1

11、.Rthreshold=0'关闭自动接收TimerReceive.lnterval=500TimerReceive.Enabled=True'启动定时器接收机号=2Case 41 1ICasenEndSelectEnd.Sub'接收数据主控程序PrivateSubTimerReceive_Timer()TimerReceive.Enabled=FalseSelectCase机号Case 1In_buffer$=接收数据(机号)Call任务2Case 2In_buffer$=接收数据(机号)Call任务3Case 31 1ICasenIn_buffer$=接收数据(机号)

12、Call任务nEndSelectEndSub(四)自动接收、监视总线状态和通讯错误的处理自动接收、监视总线状态和通讯错误的处理可以通过OnComm事件实现。VB程序运行过程中只要设置MSComm1.Rthreshold=1,在接收事件发生时程序就会自动访问MSComml.OnComm(程。由于外界干扰或电压波动等原因,PC机和单片机之间的通讯可能会出现错误,如接收缓冲区溢出、网络端口超速等。这些可能发生的事件都能在代码中引起运行错误。为了处理这些错误,须要将错误处理代码添加到程序中。通过控件中的OnComi#件可以捕捉和处理错误。在通讯过程中所发生的通讯错误是CommEvent!性返回的。当CommEvent(性值发生改变时,表明有通讯错误,就会产生OnCom莓件。同时,可以利用自动引发OnCom!f件的特点在接收过程中加入状态显示码。这样可以监视通讯线路状态,得到单片机和主机及单片机和单片机之间的通讯进程。通讯错误的处理程序如下:PrivateSubMSComm1_OnComm()SelectCaseMSComm1mEventCaseComReceive'Receivedata'自动数据接收、监视总线通信信息SelectCaseIn_buffer$CallALabel.Enabled=“正在执行任务1”CallBEndSelectCasecomFrame

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论