⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 单片机技术专题——利用vb实现pc机与多单片机通讯.htm

📁 利用VB实现PC机与多单片机通讯
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0040)http://www.flyto.cn/zhuanti/20040521.htm -->
<HTML><HEAD><TITLE>单片机技术专题——利用VB实现PC机与多单片机通讯</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE>A.ff {
	FONT-SIZE: 12px; TEXT-DECORATION: none
}
A.ff1 {
	FONT-SIZE: 12px
}
</STYLE>

<STYLE type=text/css>BODY {
	FONT-SIZE: 12px
}
TD {
	FONT-SIZE: 12px; font-color: #000000
}
A:link {
	COLOR: #000000
}
A:visited {
	COLOR: #000000
}
A:hover {
	COLOR: #000000
}
</STYLE>

<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff topMargin=25 MARGINHEIGHT="0" MARGINWIDTH="0">
<DIV align=right>
<TABLE height=257 cellSpacing=0 cellPadding=0 width=600 align=center border=0 
topmargin="1RIGHTMARGIN=0">
  <TBODY>
  <TR>
    <TD vAlign=top width=777 height=221>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" bgColor=#ffffff>
        <TBODY>
        <TR>
          <TD vAlign=top width=680 height=18>
            <CENTER>
            <H3>利用VB实现PC机与多单片机通讯</H3></CENTER></TD></TR>
        <TR>
          <TD align=middle height=4>文章作者:赵志国 冯建武<BR>文章类型:设计应用 
          文章加入时间:2004年5月21日</TD></TR>
        <TR>
          <TD align=right height=5><FONT 
          color=#cc0000>文章出处:单片机与嵌入式系统应用</FONT></TD></TR>
        <TR>
          <TD vAlign=top height=20>
            <HR color=#996633 SIZE=1>
          </TD></TR>
        <TR>
          <TD vAlign=top height=103>
            <P><FONT 
            color=#000066><STRONG>  摘要:</STRONG>在Windows98下利用VB的串行通讯控件可实现PC机与多单片机之间的通讯。采用定时器控制大大加快了自动化进程,克服了往多“握手”协议造成的通讯速度缓慢的缺点。本文以PS1016单片机为例,详细介绍了PC机与单片机之间的串行通讯、数据的发送和接收。</FONT></P>
            <P><FONT color=#000066><STRONG>  关键词:</STRONG>通讯 属性 事件</FONT></P>
            <P><FONT color=#000066><STRONG>前言</STRONG></FONT></P>
            <P><FONT 
            color=#000066>  诓捎靡訮C机为控制中心的数据采集自动化控制系统中,通常需要单片机采集数据,然后用异步串行通讯方式传给PC机,PC对单片机进行定时控制,需要多个单片机协同工作。如果系统不很复杂,可通过定时器控件控制收发过程,在必要的地方自动接收装置,使定时控制和通讯过程完美地结合起来。这样,可以免去“握手”协议的繁琐过程,简化编程,提高速度。VB具有面向对象的设计方法,友好的用户界面,简单方便的串行通讯和实用性强等优点,无论借用其他语言就可以开发出优秀的控制系统通讯软件。本文介绍在Windows 
            98环境下如何利用VB来实现PC机与多个PS1016单片机之间的串行通讯。</FONT></P>
            <P><FONT color=#000066><STRONG>VB环境下通讯程序的设计</STRONG></FONT></P>
            <P><FONT 
            color=#000066>  VB提供了串行端口控制Mscomm来为应用程序提供串行通讯。该控件屏蔽了通信过程中的底层操作,程序员可以设置、监视Mscomm控件的属性和事件,结合Timer控件即可完成对串行口的初始化和数据的输入输出工作。Mscomm控件的主要属性如下:</FONT></P>
            <P><FONT color=#000066>  (1)Commport 
            设置并返回通讯端口号。端口号可以设置为1~16的任何数,如Mscomm.Commport=2表示设置当前通讯端口为COM2。</FONT></P>
            <P><FONT color=#000066>  (2)Setting 
            设置并返回波特率、奇偶校验、数据位、停止位。格式为Mscomm.Setting=String。String是一个包含四部分的字符串:第一部分为波特率;第二部分为奇偶校验,N表示不校验,M表示符号校验,E表示偶校验,O表示奇校验,S表示空格校验;第三部分为数据位数,其可选值为4,5,6,7,8;第四部分为停止位位数,其可选值为1,1.5,2。Setting属性的缺省值为“9600,N,8,1”。</FONT></P>
            <P><FONT color=#000066>  (3)Portopen 
            设置并返回通讯端口的状态,也可以打开和关闭端口。</FONT></P>
            <P><FONT color=#000066>  (4)Input 
            从接收缓冲区返回和删除字符。该属性在运行时为只读。</FONT></P>
            <P><FONT color=#000066>  (5)InputLen 
            设置并返回每次Input属性从接收缓冲区中读取的字符数。InputLen属性的缺省值为0。设置InputLen为0时,Input将读取接收缓冲区的全部字符。</FONT></P>
            <P><FONT color=#000066>  (6)Output 
            向传送缓冲区写数据。要传送的数据可是文本数据或二进制数据。</FONT></P>
            <P><FONT color=#000066>  (7)CommEvent 
            返回最近的通讯事件或错误。只要有通讯错误或事件发生错误时就会产生Oncomm事件。CommEvent属性中存有该错误或事件的数值代码。</FONT></P>
            <P><FONT color=#000066>  Timer控件的主要属性如下:</FONT></P>
            <P><FONT color=#000066>  (1)Enabled 
            返回或设置一个值,该值用来确定一个窗体或控件否能够对用户产生的事件作出反应。通过把Enabled设置为“Galse”来使Timer控件成为无效,将取消由控件的Interval属性所建立的倒计时数。</FONT></P>
            <P><FONT color=#000066>  (2)Interval 
            返回或设置对Timer控件的计时事件调用间的毫秒数。Timer控件的Enabled属性决定该控件是否对时间的推移作出响应。将Enabled设置为“False”会关闭Timer控件,设置为“True”则打开Timer控件。当Timer控件置为有效时,倒计时总是从其Interval属性设置值开始。创建Timer事件程序。可通知VB在每次Interval到时该做什么。Timer控件和Enabled属性设置为“True”时,VB将在Interval时间到后自动访问Timer_Timer过程。</FONT></P>
            <P><FONT 
            color=#000066>  为实现通讯程序,须在VB开发环境下设置一个用做控制通讯的窗体。窗体上主要有一个通讯控件Mscomml和两个Timer控件。VB的特点是事件驱动,定时器控件会定时触发相应事件的驱动程序。</FONT></P>
            <P><FONT color=#000066>1.发送单片机命令</FONT></P>
            <P><FONT 
            color=#000066>  为了使主机能够对整个检测过程进行实时控制,须要在发送命令以后设定等待的时间,也可以通过条件判断下一步是发达还是接收命令。对发送的命令,可能是文本方式或二进制代码。在发送二进制代码时,应特别注意发送的格式。</FONT></P>
            <P><FONT 
            color=#000066>  发送命令过程是一个带参过程,这样可使发送命令简便易行。具体程序如下:</FONT></P>
            <P><FONT color=#000066>  Sub发送单片机命令过程(command As Byte)</FONT></P>
            <P><FONT color=#000066>  Dim输出命令(1 To 1)As Byte</FONT></P>
            <P><FONT color=#000066>  DoEvents</FONT></P>
            <P><FONT color=#000066>  输出命令(1)=command</FONT></P>
            <P><FONT color=#000066>  MSComm1.OutBufferCount=0</FONT></P>
            <P><FONT color=#000066>  MSComm1.Output=输出命令</FONT></P>
            <P><FONT color=#000066>  MSComm1.InBufferCount=0</FONT></P>
            <P><FONT color=#000066>  End Sub</FONT></P>
            <P><FONT color=#000066>2.接收数据</FONT></P>
            <P><FONT 
            color=#000066>  接收数据是一个被动的过程,可以通过函数来实现,由定时器开启。在接收过程中,多数用特征字符,如“OK”、“#”等。这些需要在通讯协议中约定。</FONT></P>
            <P><FONT color=#000066>  Function接收数据()</FONT></P>
            <P><FONT color=#000066>  Do</FONT></P>
            <P><FONT color=#000066>  DoEvents</FONT></P>
            <P><FONT color=#000066>  In_buffer 
            $=In_buffer$&amp;MSComm2.Input</FONT></P>
            <P><FONT color=#000066>  Loop Until 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -