阐述VB串口编程技术要领

上传人:卢** 文档编号:152522978 上传时间:2022-09-15 格式:DOC 页数:5 大小:23.50KB
返回 下载 相关 举报
阐述VB串口编程技术要领_第1页
第1页 / 共5页
阐述VB串口编程技术要领_第2页
第2页 / 共5页
阐述VB串口编程技术要领_第3页
第3页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
阐述VB串口编程技术要领摘要:串口通信因为其简单,灵敏易用,在许多领域有着广阔的应用前景。本文在深化理解串口通讯技术的根底上,结合自身的工程理论经历,阐述了VB串口编程的技术要点。并结合一个通讯实例,分析通讯的详细实现,给相关领域的研究人员提供值得参考的信息。关键词:串口;RS232;API;Pm;Msm;通信程序如今通讯方式越来越多,速度越来越快,但串行通讯由于自身价格低、协议透明、硬件投资少、软件编程简单等诸多优点在远程数据采集、监视、通信及控制领域里一直占据着极其重要的地位。它不仅没有因为时代的进步而被淘汰,反而在规格上越来越完善、应用越来越广,长久不衰。一、串口通信的通信机理PC串行通信是指直接对串行端口的UART(PC机的通用异步收发器,也叫异步通信适配器,是PC机用于异步通信的接口)进展编程实现的通信。PC机每个UART中的INS8250中有10个可编程的单字节存放器,可用于控制、监视操作串行端口,1的存放器地址3F8H-3FEH,2的存放器地址为2F8H-2FEH。10个存放器由7个地址访问,其中5个存放器的访问条件是先设置3FBH线路控制存放器的最高位为“1,该位也称为DLAB状态位。一般说来,PC机都有一个或多个串行端口,它们依次为1、2。这些串口提供了外部设备与PC进展数据传输和通信的通道,在CPU和外设之间充当理解释器的角色。当字符数据从CPU发送给外设时,这些字符数据将被转换成串行比特流数据;而当承受数据时,从外界进来的比特流数据被转换成字符数据传递给CPU进展处理。在操作系统方面,Windows用通信驱动程序(M.DRV)调用API函数发送和承受数据。当用通信控件或声明调用API函数时,它们由M.DRV解释并传递给设备驱动程序。作为一个VB程序员,要编写串口通信程序,只需知道通信控件提供应Windows通信API函数的接口即可,换言之,只需设定和监视通信控件的属性和时间即可。二、串行通讯接口RS-232前一章节讨论了串口通讯的通信机理,但为了实现详细的数据采集、监视、通信功能,必须理解详细的串口形式。目前使用最广泛的串行接口有两种:RS-232和RS-485。本文着重讨论RS-232,RS-485不作介绍。RS-232C标准的全称是EIA-RS-232C标准,其中EIA代表美国电子工业协会,RS代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969年),在这之前,有RS232A、RS232B协议。它规定连接电缆和机械、电气特性、信号功能及传送过程。EIA-RS-232C定义了按位串行传输的数据终端设备(DTE)和数据通讯设备(DCE)之间的接口信息。RS-232C是从DTE或计算机串行接口角度来定义引脚信号的。目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS232被定义为一种在低速率串行通讯中增加通讯间隔 的单端标准。RS232采取不平衡传输方式,即所谓的单端通讯。DB9(9针串口)的接线方式如下:1脚,数据载波检测DCD;2脚,接收数据RXD;3脚,发送数据TXD;4脚,数据终端准备DTR;5脚,信号地GND;6脚,数据设备就绪DSR;7脚,恳求发送RTS;8脚,去除发送CTS;9脚,振铃指示DELL。DB25(25阵串口),常用的针脚也有9个,且和DB9可以一一对应,详细接线方式为:8脚,数据载波检测DCD;3脚,接收数据RXD;2脚,发送数据TXD;20脚,数据终端准备DTR;7脚,信号地GND;6脚,数据设备就绪DSR;4脚,恳求发送RTS;5脚,去除发送CTS;22脚,振铃指示DELL。一般来说,对于要求不太高的场合,使用接收数据RXD,发送数据TXD,信号地GND三个脚即可实现数据传输。假设要求有硬件流控制,那么必须使用DTR、DSR、RTS和CTS这四个脚。值得注意的是RS-232C是用正负电压来表示逻辑状态,与TTL以高电平表示逻辑状态的规定不同。因此,为了可以与计算机接口或终端的TTL器件连接,必须在RS-232C与TTL电路之间进展电平和逻辑关系的变换。目前较为广泛地使用集成电路转换器件,如MC1489、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。三、三种读取串口数据的方式目前通用的串口通讯的软件实现方式有3种,本文都进展详细的介绍,它们各有自身的优缺点,读者在编程时可根据详细的情况选择适宜的方式。3.1利用Msm控件VB提供的这个通信控件“隐藏了大部分串口通信的底层运行过程,程序员只需编写少量的代码就可以完成软件的开发过程。在通信数据量不大,通信要求不是很高的情况下建议采取此方式。利用Msm控件实现通信最需要掌握的就是它的几个主要属性,下面选取其中重要的进展介绍,其余的可以参考相关资料。(1)Settings属性:以字符串的形式设置并返回波特率、奇偶校验位、数据位、停顿位。这个属性很重要,针对不同的终端设备需要根据设备的详细情况进展调整(比方日本的设备不同于美国的设备,通常会采用奇校验)。(2)InputMode属性:设置接收数据的类型,0为文本格式,1为二进制格式。(3)Input属性:读取并删除接收缓冲区中的数据流。(4)Output属性:向发送缓冲区传送一数据流。(5)Rthreshold属性:该属性为一阀值,它确定当接收缓冲区内的字节个数到达或超过该值后就产生代码为EvReceive的Onm事件。(6)Handshaking属性:设置和返回握手协议,即计算机内部CPU与串口之间的通讯协议,保证在缓冲区过载时数据不会丧失。这个属性在保证数据传输的正确性方面有很大的作用,共有四个选项,分别表示:无流控制;软件流控制;硬件流控制;软硬件流控制。采用硬件流控时,要求串口之间和电缆支持硬件握手,在自己制作串口通信线时,有关硬件握手的线RTS、CTS、DSR、DTR要连接正确。在正确设置这些属性的根底上,剩下的就是翻开串口,通过串口发送及承受数据了。本文后续章节利用一个实例详细讲解了这些属性的设置及详细代码。3.2直接调用Win32API通信函数直接调用WindowsAPI函数,可以清楚地理解串口通信的机制,根据需要灵敏地配置串口的各种参数和属性,而且直接调用低层API函数,通信效率比较高,但付出的代价就是程序较复杂,编程周期长,适宜于大型通信程序及通讯质量要求较高的场合。在32位的Windows系统中,串口通信是作为文件处理的,串口操作一般为翻开、关闭、读取、写入等操作,相应的WindowsAPI函数如下:(1)CreateFile()函数:实现串口的初始化并翻开串口,返回串口句柄资源以供后续进程调用。(2)CloseFile()函数:关闭串口,串口是非共享资源,应用程序以独占方式使用,通信完毕应立即关闭。(3)ReadFile()函数:从串口输入缓冲区读取数据流。(4)WriteFile()函数:向串口输出缓冲区发送数据。(5)GetmState()函数:获取串口的当前配置。(6)SetmState()函数:重新分配串口资源的各个参数。由于WindowsAPI函数大部分是用C或C+编写,所以在VisualBasic6.0中调用WindowsAPI函数之前必须先在模块级代码上用Declare语句对所调用的函数和用到的数据构造进展声明,详细的函数声明及数据构造请参考朱友芹编?新编WindowsAPI参考大全?。3.3调用第三方函数库(如Pm函数库)DLL(DynamicLinkLibrary)动态链接库是一种可以被VB语言调用的程序模块。DLL中包含的可执行代码不能单独执行,而应由Windows应用程序调用执行。一般数据采集卡的供应商都会提供该采集卡的DLL库函数,使用这些DLL库函数,可以做到程序代码共享,减少程序的编写工作量。用户不需要知道这些代码的实现细节,只需要理解调用函数的参数和函数处理后的返回值。Pm函数库是由台湾Moxa公司为开发串口通信程序提供的一套函数库。通过对WindowsAPI函数的进一步封装,提供50多个串口操作函数。覆盖了Windows操作系统下几乎所有异步通信的问题,可以简洁的开发多线程通讯程序。采用该库,通信的可靠性与使用MSm32控件比较有了明显进步,而相对直接使用Win32API函数编程那么降低了程序开发难度,缩短了程序开发周期。这种方式上述直接调用WindowsAPI函数有相似之处,但也有明显的差异。API函数常采取的方法是在串口监视线程中设置串口通信事件掩码及重叠机制,允许程序在后台等待串口通信事件。通过WaitmEvent检测特定的串行通信事件。而在Pm中,可以采用中断处理的方式,为各种事件指定相应的中断处理函数,如接收到一定数目的字符,接收到完毕字符,接收到中止信号以及发送缓冲区为空等;同时还可以采用线程控制的方式,直接采用库中的sio_read()和sio_write()函数读写串口。Pm.DLL中的函数按功能分为6项:端口设置、数据发送与接收、串口状态检测、事件效劳、文件传输、杂项。Pm.DLL中主要的函数介绍如下。sio_open:翻开端口;sio_close:关闭端口。sio_ioctl:设置端口参数,如波特率等。sio_read:从端口接收数据;sio_write向端口发送数据。sio_iqueue:得到接收缓冲区中的数据长度。sio_oqueue:得到发送缓冲区中的数据长度。Pm在串口通信中的功能非常强大,但基于篇幅的考虑,在此不便赘述,读者可参考相关书籍或Pm自带的帮助文档。四、串口通讯的错误及处理由于外界干扰或电压波动等原因,串口通讯可能会出现错误,如承受缓冲区溢出,奇偶校验错误等。为了处理这些错误,在Msm控件中就提供了一个Onm事件,它可以捕获通信时发生的串口事件和错误信息,自动转入事件处理程序。在Onm事件中,mEvent属性是Onm事件的指示,下面简单介绍几个重要的mEvent属性值。EventBreak:表示收到一个中断信号;EventFrame:表示硬件检测到一个数据帧错误;EvenRxover:表示接收缓冲区溢出;EventTxFull:表示输出缓冲区已满;EvReceive:表示接手到了Rthreshold个字符;EvEOF:表示承受到了EOF字符(ASCII字符26)。编程时用SelectCase语句,根据不同的mEvent属性值,去执行不同的处理程序。除了以上所述的通讯错误外,在串口通信时,假设数据传输突然中断,对串口的读写操作可能会进入无限期的等待状态,为防止这种情况发生,必须设置串口读写操作的等待时间,等待超时后,串口的读写操作将被主动放弃,这样即使数据传输突然中断程序也不会被挂起或阻塞。可以根据详细要求规定串口读写操作的最长时间值,即串口读写必须在这段时间内完成,否那么提示串口操作失败。五、串口通讯实例本实例是一个采集设备电流及功率的通讯程序,采集仪为横河WT230数字功率计,因为要采集的数据量不大,且工程构造简单,故采用Msm控件的形式进展串口读写操作。详细实现步骤如下:(1)在窗体Form上添加两个重要的控件:Timer1和Msm1;(2)在程序的Form_Load事件过程中添加如下代码:mPort=1使用1端口MSm1.Setting=“9600,o,8,1设置通信口参数,注意是奇校验,详细的校验方式要视详细的仪器而定MSm1.InputMode=InputModeBinary设置接收形式为二进制形式,注意一般对于数据采集这类设备通信,都应该设置为二进制形式MSm1.PortOpen=True参数设置好后翻开端口MSm1.HandShaking=2-RTS设置为硬件流控制,可以有效防止数据丧失的情况发生(3)程序开始后在一定情况设置Timer1.Enabled属性值为True激活Timer1_Time事件,可以在固定的时间间隔下执行Timer1_Timer过程中的代码程序,完成数据采集。在Timer1_Timer过程中添加如下代码:MSm1.Output=MUNICATE:WAIT1+Chr(13)+Chr(10)MSm1.Output=MEASURE:NORMAL:VALUE?+Chr(13)+Chr(10)上述语句是将读取指令发送到串口输出缓冲区(注意每个命令字符串后都要加上回车和换行符Chr(13)+Chr(10),再由系统将其自动发送给通过RS232通信线与计算机端口连接的WT230数字功率计,功率计在接收到命令字符串后,经过自身的单片机处理,就自动地把它测到的电压、电流、功率数据以固定的格式和字符形式通过RS232通信线传回至计算机,计算机程序从输入缓冲区读取这些字符数据并利用VB字符处理函数(如Val,InStr)进展处理就得到了所要的数据,下面是详细的程序代码。Dimbytinput()asbyte注意要将bytinput定义为不定长数组DimstrtemAsStringDimiasIntegerbytinput=MSm1.Input将输入缓冲区数据读入给字节型数组bytinputFori=0ToUBound(bytinput)strtem=strtem+Chr(bytinput(i)字节数组中的ASCII码值转换成相应Next的字符得到的strtem字符就形象的展示了电流、电压和功率值。对于WT230而言,它的数据构造是这样的,每个数据之间由逗号字符“,隔开,每个数据以用科学计数法表示,且每个数据以字符“E分为前半部分和后半部分,前半部分为详细的数据(整数形式),后半部分为此数据的指数,指数的底为10。例如得到strtem的值为“23423E-2,00241E-3,05645E-2这就表示电压值为234.23V,电流值为0.241A,功率为56.45W。六、结论串口通讯的硬件投资少,软件编程简单,在低速少量数据传输方面的应用极其广泛的应用。本文详细介绍了串口通讯的根本内容及其详细实现方式,读者可以根据详细情况进展选择。以上代码是实现串口通信的核心部分,经过笔者在多个数据采集系统开发中的应用,具有较强的实用价值。参考文献:1李朝青.PC机及单片机数据通信技术.北京:国防工业出版社,20022李长林.VisualBasic串口通信技术与典型实例.北京:清华大学出版社,20223Microsoft公司著、北京希望电脑公司译.MicrosoftVisualBasic6.0控件参考手册,19994朱友芹.新编WindowsAPI参考大全.电子工业出版社,20005MOXACrop.PmLibraryProgrammingGuide,19986范逸之.VisualBasic与RS232串行通信控制.北京:中国青年出版社,2000
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 其他分类 > 其它学术


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!