使用VB开发串口USB通信软.ppt
《使用VB开发串口USB通信软.ppt》由会员分享,可在线阅读,更多相关《使用VB开发串口USB通信软.ppt(92页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 实际应用中,通常要遇到实际应用中,通常要遇到PC与单片机系统的通信问题。与单片机系统的通信问题。由于由于PC和单片机(如和单片机(如MCS-51)都具有串口,因此经常使)都具有串口,因此经常使用串口完成两者之间的数据交换。本章主要介绍用串口完成两者之间的数据交换。本章主要介绍RS-232C串行通信技术以及在串行通信技术以及在Windows环境下编写串口通信程序的环境下编写串口通信程序的方法、方法、USB接口技术以及相应的开发实例。接口技术以及相应的开发实例。第7章 PC端接口技术1.RS-232串行通信技术串行通信技术2.USB接口技术接口技术3.实践与思考实践与思考本章主要内容:第7章 P
2、C端接口技术RS-232串行通信技术串行通信技术 目前已经有几种。目前已经有几种。RS-232标准是目前常用的串行通信接口标准是目前常用的串行通信接口标准,它是美国标准,它是美国EIA(电子工业联合会)与(电子工业联合会)与BELL等公司一起开等公司一起开发的发的1969年公布的通信协议。它适合于数据传输速率在年公布的通信协议。它适合于数据传输速率在020Kbps范围内的通信。这个标准对串行通信接口的有关问题,范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都做了明确规定。由于通信设备厂商如信号线功能、电器特性都做了明确规定。由于通信设备厂商都生产与都生产与RS-232C
3、制式兼容的通信设备,因此,它作为一种标制式兼容的通信设备,因此,它作为一种标准,目前已在计算机通信接口中广泛采用。准,目前已在计算机通信接口中广泛采用。RS-232串行通信技术串行通信技术RS-232C标准介绍标准介绍 简单的串行通信协议的设计简单的串行通信协议的设计 MSComm控件介绍控件介绍 使用使用VB开发串行口通信软件开发串行口通信软件 使用使用VC+开发串行口通信软件开发串行口通信软件 RS-232C标准介绍标准介绍 1.RS-232C中的引脚定义中的引脚定义 9针RS-232串口(DB9)25针RS-232串口(DB25)引脚简写功 能 说 明 引脚简写功 能 说 明1CD载波侦
4、测(Carrier Detect)8CD载波侦测(Carrier Detect)2RXD接收数据(Receive)3RXD接收数据(Receive)3TXD发送数据(Transmit)2TXD发送数据(Transmit)4DTR数据终端准备(Data Terminal Ready)20DTR数据终端准备(Data Terminal Ready)5GND地线(Ground)7GND地线(Ground)6DSR数据准备好(Data Set Ready)6DSR数据准备好(Data Set Ready)7RTS请求发送(Request To Send)4RTS请求发送(Request To Send
5、)8CTS清除发送(Clear To Send)5CTS清除发送(Clear To Send)9RI振铃指示(Ring Indicator)22RI振铃指示(Ring Indicator)RS-232C标准介绍标准介绍2.RS-232C的电气特性的电气特性 RS-232C标准对逻辑电平的定义:标准对逻辑电平的定义:在TXD和RXD上:逻辑1(MARK)=315V,逻辑0(SPACE)=+3+15V。在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=+3+15V,信号无效(断开,OFF状态,负电压)=315V。RS-232C与与TTL转换:转换:EIA-RS
6、-232C是用正负电压来表示逻辑状态的,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。RS-232C标准介绍标准介绍左图显示了1488和1489的内部结构和引脚。MC1488的引脚(2)、(4,5)、(9,10)和(12,13)接TTL输入。引脚3、6、8、11输出端口接EIA-RS-232C。MC1498
7、的14的1、4、10、13脚接EIA输入,而3、6、8、11脚接TTL输出。具体连接方法如右图所示。RS-232C标准介绍标准介绍3.RS-232C接口的电平转换接口的电平转换 RS-232C电平采用负逻辑,即:电平采用负逻辑,即:逻辑逻辑“0”:+5+15V逻辑逻辑“1”:5 15VRS-232C不能和TTL电平直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏,实际应用时必须注意!常用的电平转换集成电路除了上面所介绍的传输线驱动器MC1488和传输线接收器MC1489。另一种常用的电平转换电路是MAX232,MAX232芯片可完成TTLEIA双向电平转换。图为MAX232引脚图。简单
8、的串行通信协议的设计简单的串行通信协议的设计 PC和单片机最简单的连接是零调制三线经济型。下图给出了采用MAX232芯片的PC和单片机串行通信接口电路,与PC相连采用9芯标准插座。2.PC通信软件通信软件1.单片机通信软件单片机通信软件MCS-51通过中断方式接收PC发送的数据,并回送。单片机串行口工作在方式1,晶振为6MHz,波特率2400,定时器T1按方式2工作,经计算定时器预置值为0F3H,SMOD=1。参考程序参考程序PC方面的通信程序可以用汇编语言编写,也可以用其他高级语言例如VB、VC来编写。汇编语言编写的参考程序汇编语言编写的参考程序 MSComm控件介绍控件介绍 在在Windo
9、ws环境下,串口是系统资源的一部分。应用程序要环境下,串口是系统资源的一部分。应用程序要使用串口进行通信,必须在使用前向操作系统提出资源申请要求使用串口进行通信,必须在使用前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。在(打开串口),通信完成后必须释放资源(关闭串口)。在Windows的系统函数中,均包含了支持通信中断的功能。对串口的系统函数中,均包含了支持通信中断的功能。对串口通信而言,通信而言,Windows为相应的串口设备开放了用户定义的输出缓为相应的串口设备开放了用户定义的输出缓冲区和输入缓冲区,应用程序只能对输入冲区和输入缓冲区,应用程序只能对输入/输
10、出缓冲区进行操作,输出缓冲区进行操作,数据进出串口的操作均由系统后台完成。以接收为例,系统每接收数据进出串口的操作均由系统后台完成。以接收为例,系统每接收一个字符就产生一个低级的硬件中断,系统的串口驱动程序将接收一个字符就产生一个低级的硬件中断,系统的串口驱动程序将接收到的字符送入输入缓冲区,此时应用程序就可以通过访问输入缓冲到的字符送入输入缓冲区,此时应用程序就可以通过访问输入缓冲区得到接收到的字符信息。区得到接收到的字符信息。MSComm控件介绍控件介绍Windows为用户提供了两种方式实现串口通信。使用串口通信控件使用串口通信控件使用使用Windows的的API应用程序接口应用程序接口使
11、用串口通信控件进行串口程序开发极为方便,如果不需要对串口进行高级控制一般多选择使用MSComm控件进行开发。本章介绍在VB下使用MSComm控件进行计算机实验室温控系统串口程序开发。使用串口通信控件使用串口通信控件 针对串口通信,微软公司专门提供了针对串口通信,微软公司专门提供了MSComm控件,控件,使用该控件进行串口通信设计是十分方便的,程序员不必使用该控件进行串口通信设计是十分方便的,程序员不必花时间去了解较为复杂的花时间去了解较为复杂的API函数。通过简单修改控件的函数。通过简单修改控件的属性和使用控件提供的方法,就可以实现对串口的配置、属性和使用控件提供的方法,就可以实现对串口的配置
12、、完成串口接收和发送数据。完成串口接收和发送数据。使用使用Windows的的API应用程序接口应用程序接口 在在Windows中,串口是以文件的形式被打开和访问的。中,串口是以文件的形式被打开和访问的。串口和串口通信驱动需要使用设备控制块(串口和串口通信驱动需要使用设备控制块(Device Control Block,DCB)进行配置。应用程序使用)进行配置。应用程序使用API函数函数CreateFile打开串口,打开串口,ReadFile读串口,读串口,CreateEvent建立建立事件对象和事件对象和CloseHandle关闭串口。关闭串口。使用使用Windows的的API应用程序接口应用
13、程序接口 Micronsoft Communications Control(MSComm)是是Micronsoft公司提供的简化公司提供的简化Windows下串口通信编程下串口通信编程的的ActiveX控件,它为应用程序提供了通过串口收发数据控件,它为应用程序提供了通过串口收发数据的简便方法。在串口编程中,使用的简便方法。在串口编程中,使用MSComm控件非常方控件非常方便,仅需通过简单修改控件的属性和使用控件提供的方法,便,仅需通过简单修改控件的属性和使用控件提供的方法,就可以实现对串口的配置,完成串口接收和发送数据等任就可以实现对串口的配置,完成串口接收和发送数据等任务。务。使用使用Wi
14、ndows的的API应用程序接口应用程序接口(1)MSComm控件的通信方法。控件的通信方法。MSComm控件提供了两种处理通信的方式:事件驱动方式和查询方式。(2)MSComm控件的属性与常数。控件的属性与常数。CommPort属性。设置并返回通信端口号。端口号的范围为116,但如果用PortOpen属性打开一个并不存在的端口时,MSComm控件会产生错误68(设备无效)。RThreshold属性。设置返回要接收的字符数。接收字符后,如果RThreshold属性被设置为0(默认值),则不产生OnComm事件,如果RThreshold被设成n,则接收缓冲区收到n个字符时MSComm控件产生On
15、Comm事件。CTSHolding属性。确定是否通过查询ClearToSend(CTS)线的状态发送数据。该属性在设计时无效,在运行时为只读。使用使用Windows的的API应用程序接口应用程序接口SThreshold属性。设置并返回传输缓冲区中允许的最小字符数。若SThreshold属性被设置为0(默认值)时,数据传输不会产生OnComm事件。而当SThreshold属性被设为1,当传输缓冲区完全空时,MSComm控件产生OnComm事件。CDHolding属性。通过查询CarrierDetect(CD)线的状态确定是否有传输。该属性在设计时无效,在运行时为只读。DSRHolding属性。确
16、定DataSetRead(DSR)线的状态。该属性在设计时无效,在运行时为只读。Settings属性。设置返回波特率、奇偶校验、数据位、停止位参数。当端口打开时,如果属性值非法,则MSComm控件产生错误380(非法属性值)。BBBBPDS各个属性值间用逗号隔开,其中BBBB为波特率,P为奇偶校验,D为数据位数,S为停止位数。其默认值为“9600,N,8,1”。Settings属性的设置由4个设置组成,格式如下:InputLen属性。设置并返回Input属性从接收缓冲区中读取的字符数。InputLen属性的默认值是0。设置InputLen为0时,使用Input将使MSComm控件读取缓冲区中全
17、部的内容。使用使用Windows的的API应用程序接口应用程序接口使用使用Windows的的API应用程序接口应用程序接口EOFEnable属性。确定在输入过程中MSComm控件是否寻找文件结尾(EOF)字符。如果找到EOF字符,将停止输入并激活OnComm事件,此时CommEvent属性设置为comEvEOF。语法:语法:object.EOFEnable =value EOFEnable 属性语法包括下列部分:属性语法包括下列部分:value布尔表达式,确定当找到EOF字符时,OnComm事件是否被激活,如“设置值”中所描述。value的设置值为True:当EOF字符找到时OnComm事件被
18、激活。value的设置值为False(默认):当EOF字符找到时OnComm事件不被激活。当EOFEnable属性设置为False,OnComm控件将不在输入流中寻找EOF字符。说明:说明:使用使用Windows的的API应用程序接口应用程序接口Handshake常数。Handshake常数如表所示。OnComm常数。OnComm常数如表所示常 数值描 述comNone0无握手comXonXoff1XOn/Xoff握手comRTS2Request-to-send/clear-to-send握手comRTSXOnXOff3Request-to-send和clear-to-send握手皆可常 数值
19、描 述comEvSend1发送事件comEvReceive2接收事件comEvCTS3clear-to-send线变化comEvDSR4data-set ready线变化comEvCD5carrier detect线变化comEvRing6振铃检测comEvEOF7文件结束使用使用Windows的的API应用程序接口应用程序接口Error常数。Error常数如表所示。常 数值描 述comEventBreak1001接收到中断信号comEventCTSTO1002Clear-to-send超时comEventDSRTO1003Data-set ready超时comEventFrame1004帧错
20、误comEventOverrun1006端口超速comEventCDTO1007Carrier detect超时comEventRxOver1008接收缓冲区溢出comEventRxParity1009Parity错误comEventTxFull1010传输缓冲区满comEventDCB1011检索端口设备控制块(DCB)时的意外错误使用使用Windows的的API应用程序接口应用程序接口InputMode常数。InputMode常数如表所示。常 数值描 述comInputModeText0(默认)通过Input属性以文本方式取回数据comInputModeBinary1通过Input属性以二
21、进制方式检取回数据使用使用Windows的的API应用程序接口应用程序接口(3)错误消息()错误消息(MS Comm控件)。控件)。表列出MSComm控件可以捕获的错误。值描 述常 数380无效属性值comInvalidPropertyValue383属性为只读comSetNotSupported394属性为只读comGetNotSupported8000端口打开时操作不合法comPortOpen8001超时值必须大于8002无效端口号ComPortInvalid8003属性只在运行时有效8004属性在运行时为只读8005端口已经打开comPortAlreadyOpen8006设备标识符无效或
22、不支持该标识符使用使用Windows的的API应用程序接口应用程序接口值描 述常 数8007不支持设备的波特率comPortAlreadyOpen8008指定的字节大小无效8009默认参数错误8010硬件不可用(被其他设备锁定)8011函数不能分配队列8012设备没有打开comNoOpen8013设备已经打开8014不能使用comm通知8015不能设置comm状态comSetCommStateFailed8016不能设置comm事件屏蔽8018仅当端口打开时操作才有效comPortNotOpen8019设备忙8020读comm设备错误comReadError8021为该端口检索设备控制块时的内
23、部错误comDCBError使用使用VB开发串行口通信软件开发串行口通信软件 l用户界面设计用户界面设计l初始化程序初始化程序 l发送数据发送数据 l接收数据接收数据 l其他工作其他工作 使用VB开发串行通信程序的详细步骤。用户界面设计用户界面设计 添加控件最终完成界面添加用户界面新工程界面新建工程用户界面设计用户界面设计修改界面上各控件的属性如下表所示。控件名称Name 属性Caption属性FormRS232_VBRS232_VBLable1Lable1发送数据Lable2Lable2接收数据Text1Text_SENDText2Text_RECVCommand1Button_SEND发送
24、数据Command2Button_SEND_C清空发送文本框Command3Button_RECV_C清空接收文本框MSComm1MSComm初始化程序初始化程序 程序的初始化部分主要完成对串口的设置工作,包括串程序的初始化部分主要完成对串口的设置工作,包括串口的选择、波特率及帧结构设置、打开串口以及发送和接收口的选择、波特率及帧结构设置、打开串口以及发送和接收触发器的时间控制等。此外,在程序运行前,还应进行清除触发器的时间控制等。此外,在程序运行前,还应进行清除发送和接收缓冲区的工作。这部分工作是在窗体载入的时候发送和接收缓冲区的工作。这部分工作是在窗体载入的时候完成的,因此应将初始化代码放
25、在完成的,因此应将初始化代码放在Form_Load()函数中添加函数中添加如下代码,这样就完成了程序的初始化工作。如下代码,这样就完成了程序的初始化工作。初始化程序初始化程序初始化代码初始化代码PrivateSubForm_Load()MSComm.CommPort=2设置串口2MSComm.Settings=9600,N,8,1波特率9600bps,无校验,8位数据,1位停止位MSComm.InputLen=0读取接收缓冲区的所有字符MSComm.InBufferSize=1024设置接收缓冲区为1024字节MSComm.OutBufferSize=512设置发送缓冲区为512字节MSCom
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 VB 开发 串口 USB 通信
限制150内