使用VB开发串口、USB通信软件.ppt_第1页
使用VB开发串口、USB通信软件.ppt_第2页
使用VB开发串口、USB通信软件.ppt_第3页
使用VB开发串口、USB通信软件.ppt_第4页
使用VB开发串口、USB通信软件.ppt_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

在实际应用中,经常会遇到PC机与单片机系统之间的通信问题。由于PC机和单片机(如MCS-51)都有串口,所以串口经常用来完成它们之间的数据交换。本章主要介绍了RS-232C串行通信技术、在Windows环境下编写串行通信程序的方法、USB接口技术以及相应的开发实例。第七章PC机端接口技术、RS-232串行通信技术、USB接口技术的实践与思考,本章主要内容:第七章PC机端接口技术、RS-232串行通信技术,目前有几种。RS-232标准是目前常用的串行通信接口标准。它是由电子工业协会(EIA)和BELL等公司于1969年发布的通信协议。它适用于数据传输速率在0 20 kbps范围内的通信。本标准对与串行通信接口相关的问题,如信号线功能和电气特性,做出了明确的规定。由于通信设备制造商都生产与RS-232C标准兼容的通信设备,因此它已作为一种标准广泛应用于计算机通信接口。RS-232串行通信技术,RS-232C标准介绍了一种简单的串行通信协议的设计,MSComm控件介绍了利用VB和VC开发串行通信软件,RS-232C标准介绍了1中的引脚定义。RS-232C、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、and、On TXD和RXD:逻辑1(标记)=3 15V,逻辑0 (0(空间)=3 15V。在RTS、CTS、DSR、DTR和DCD控制线上,信号有效(开、开、正电压)=3 15V,信号无效(关、关、负电压)=3 15V。RS-232C和TTL转换:EIA-RS-232C使用正电压和负电压来表示逻辑状态。为了能够连接计算机接口或终端的TTL设备,必须在EIA-RS-232C和TTL电路之间转换电平和逻辑关系。实现这种转换的方法可以是分立元件或集成电路芯片。目前,集成电路转换器件被广泛使用。例如,MC1488和SN75150芯片可以将环境影响评估级别转换为环境影响评估级别,而MC1489和SN75154可以将环境影响评估级别转换为环境影响评估级别。RS-232C标准介绍,左图显示了1488和1489的内部结构和引脚。MC1488的引脚(2)、(4、5)、(9、10)和(12、13)连接到TTL输入。引脚3、6、8和11的输出端口连接至EIA-RS-232C。MC1498的14个引脚的1、4、10和13引脚连接到EIA输入,而3、6、8和11引脚连接到TTL输出。具体的连接方法如图所示。RS-232C标准引入了3的电平转换。RS-232C接口。RS-232C电平采用负逻辑,即逻辑“0”:5 15v逻辑“1”:5 15v。RS-232c不能直接连接到TTL电平。使用时必须进行电平转换,否则TTL电路会烧坏。实际应用时必须注意!除了上述传输线驱动器MC1488和传输线接收器MC1489之外,通常使用的电平移动集成电路。另一种常见的电平转换电路是MAX232。MAX232芯片可以完成TTLEIA双向电平转换。该图为MAX232引脚图。对于简单串行通信协议的设计,PC机和单片机之间最简单的连接是零调制三线制经济。下图显示了使用MAX232芯片的PC机与单片机之间的串行通信接口电路,该芯片使用9核标准插座连接到PC机。PC机通信软件MCS-51通过中断接收PC机发送的数据并发回。单片机串口工作在模式1,晶振为6兆赫,波特率为2400,定时器T1工作在模式2,经过计算,定时器预设值为0F3H,SMOD=1。参考程序,PC机通讯程序可以用汇编语言编写,也可以用其他高级语言编写,如VB,VC。在Windows环境中,串口是系统资源的一部分。为了使用串行端口进行通信,应用程序必须在使用前请求操作系统申请资源(打开串行端口),并且必须在通信完成后释放资源(关闭串行端口)。Windows的系统功能都包括支持通信中断的功能。对于串行端口通信,窗口为相应的串行端口设备打开用户定义的输出缓冲器和输入缓冲器。应用程序只能操作输入/输出缓冲器。数据进出串口的操作由系统后台完成。以接收为例,每当系统接收到一个字符,就会产生一个低级硬件中断。系统的串行驱动程序将接收到的字符发送到输入缓冲区。此时,应用程序可以访问输入缓冲器以获得接收到的字符信息。MSComm控件介绍了Windows为用户提供了两种实现串行通信的方法。使用串口通信控件,使用Windows API应用程序接口,使用串口通信控件进行串口程序开发非常方便,如果不需要进行串口的高级控制,一般选择使用MSComm控件进行开发。本章介绍了在VB环境下,利用MSComm控件开发计算机实验室温度控制系统的串口程序。微软公司采用串口通信控制,专门为串口通信提供MSComm控制。使用该控件设计串口通信非常方便。程序员不需要花时间去理解更复杂的API函数。通过简单地修改控件的属性并使用控件提供的方法,可以配置串行端口,并且串行端口可以接收和发送数据。在Windows中,串行端口以文件的形式打开和访问。串行端口和串行端口通信驱动程序需要配置设备控制块(DCB)。应用程序使用应用编程接口函数创建文件来打开串口,读取文件来读取串口,创建事件来建立事件对象,关闭句柄来关闭串口。微软通信控件(MSCOMM)是微软公司提供的一个ActiveX控件,用于简化在窗口下的串行通信编程。它为应用程序通过串行端口发送和接收数据提供了一种简单的方法。在串口编程中,使用MSComm控件非常方便。通过简单地修改控件的属性并使用控件提供的方法,可以实现串口的配置,并可以完成通过串口接收和发送数据的任务。使用应用程序接口,(1)MSComm控件通信方法。MSComm控件提供了两种处理通信的方法:事件驱动和查询。(2)MSComm控件属性和常量。CommPort属性。设置并返回通信端口号。端口号的范围从1到16,但是如果您使用PortOpen属性打开一个不存在的端口,MSComm控件将生成错误68(无效设备)。重置属性。设置返回要接收的字符数。接收到字符后,如果RThreshold属性设置为0(默认),则不生成OnComm事件。如果将RThreshold设置为N,则当接收缓冲区接收到N个字符时,MSComm控件将生成OnComm事件。CTSHolding属性。通过查询清除结束(CTS)行的状态来确定是否发送数据。此属性在设计时无效,在运行时为只读。使用窗口应用程序接口,刷新属性。设置并返回传输缓冲区中允许的最小字符数。如果“刷新”属性设置为0(默认值),则数据传输不会生成OnComm事件。当SThreshold属性设置为1并且传输缓冲区完全为空时,MSComm控件将生成一个OnComm事件。CDHolding属性。通过查询载波检测(光盘)线路的状态来确定是否有传输。此属性在设计时无效,在运行时为只读。DSRHolding属性。确定DataSetRead(DSR)线路的状态。此属性在设计时无效,在运行时为只读。设置属性。设置返回波特率、奇偶校验、数据位和停止位的参数。当端口打开时,如果属性值非法,MSComm控件将生成错误380(非法属性值)。每个属性值用逗号分隔,其中BBBB是波特率,p是奇偶校验,d是数据位数,s是停止位数。默认值为“9600,n,8,1”。设置属性由以下格式的4个设置组成:输入属性。设置并返回输入属性从接收缓冲区读取的字符数。InputLen属性的默认值为0。当InputLen设置为0时,使用输入将导致MSComm控件读取全部内容,使用应用程序接口,使用应用程序接口,属性。确定MSComm控件在输入期间是否查找文件结尾(EOF)字符。如果找到了EOF字符,输入将停止,OnComm事件将被激活,此时Comm event属性被设置为comEvEOF。语法:对象。EOF使能=值 EOF使能属性语法包括以下部分:值布尔表达式,用于确定当找到EOF字符时是否激活OnComm事件,如“设置值”中所述。该值被设置为“真”:当找到EOF字符时,OnComm事件被激活。该值设置为False(默认):当找到EOF字符时,不激活OnComm事件。当EOFEnable属性设置为False时,OnComm控件将不会在输入流中查找EOF字符。描述:使用应用程序接口,握手常量。握手常量显示在表中。在常数上。在表、和、中显示了使用窗口应用程序接口的常数,错误常数。表中显示了误差常数。,使用窗口应用程序接口,输入模式常量。输入模式常数如表所示。,使用窗口应用程序接口,(3)错误消息(MSComm控件)。该表列出了MSComm控件可以捕捉的错误。下面是用VB开发串行通信程序的详细过程的总结。用户界面设计,添加控件,最后完成界面,添加用户界面,新建项目界面,新建项目,用户界面设计,修改界面上每个控件的属性如下表所示。初始化程序,程序的初始化部分主要完成串口的设置,包括串口的选择、波特率和帧结构的设置、串口打开的时间控制以及发送和接收触发等。此外,在程序运行之前,它还应该清除发送和接收缓冲区。这部分工作是在加载表单时完成的,所以初始化代码应该放在Form_Load()函数中,以添加下面的代码,从而完成程序的初始化。初始化程序,初始化代码private subform _ load()MSCmport=2 set serial port 2 mscom。设置=9600,n,8,1 波特率9600bps,无校验,8位数据,1位停止位MSComm。InputLen=0读取接收缓冲区MSComm的所有字符。InBufferSize=1024将接收缓冲区设置为1024字节MSComm。OutBufferSize=512将发送缓冲区设置为512字节MSComm。端口打开=真打开串行端口MSComm。SThreshold=0不触发发送事件MSComm。接收缓冲区的每个字符触发接收事件MSComm。InBufferCount=0清除发送缓冲区数据MSComm。清除接收缓冲区数据文本发送。文本= 清除发送文本框文本_ RECV。Text= 清除接收文本框EndSub,发送数据,在本例中,发送数据的过程是通过点击发送数据按钮完成的。该程序应完成以下任务:(1)单击发送数据按钮。该程序检查发送文本框中的内容是否为空。如果为空,它将终止发送命令,并在警告后返回。(2)检测串口是否处于打开状态,如果串口关闭,则打开串口。(3)将发送文本框中的内容发送到MSComm的发送缓冲区,并等待数据发送。要发送数据,请双击“发送数据”部分,并添加具有以下代码的按钮_发送_单击()函数:发送数据私有子按钮_发送_单击()Dimxasstringftext _发送。Text= 那么发送数据不能为空x=MsgBox(发送数据不能为空,16)ExitSubIndiffnotMSComm . PortOpen它们确保串行端口打开MSComm.portOpen=Trueendifmscomm。Output=Text _ Send.textchr $ (13)发送数据Fori=到20000000延迟的下一个子节点,接收数据,接收数据部分使用事件响应方法。当串行端口接收数据,使得数据缓冲区的内容超过1个字节时,将触发comEvReceive事件。OnComm()函数负责捕获该事件,并将发送缓冲区的内容发送到输出文本框进行显示。函数的作用是捕捉错误信息。当程序中出现缓冲区溢出等错误时,程序员负责清空缓冲区。要接收数据并实现上述功能,首先双击MSComm控件创建OnComm(),并输入代码:接收数据私有子命

温馨提示

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

评论

0/150

提交评论