首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> 移动开发教程
基于windows95平台的vb5串行端口通信程序的设计_visualbasic教程
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
----VisualBasic5.0以其简单易学、32位面向对象程序设计的支持,倍受广大计算机开发者的青睐,已广泛地应用于各个领域,而在实时监测系统中串行端口通信又是一项基础功能,我们使用VB5编写了实时水库水文自动监测系统的后台机软件,本文就WINDOWS95环境中采用VB5设计串行端口通信程序进行较为详细的讨论且给予实例。

----一般用VB开发串行通信程序有两种方法:一是利用WINDOWS的通信API函数;另一种是采用VB标准控件Mscomm来实现。

----一.WINDOWS95的通信API方法

----WINDOWS95中的串口通信API函数不同于WINDOWS32中的OpenComm、CloseComm、ReadComm、WriteComm,而是采用硬件与文件通用的函数CreateFile、ReadFile、WriteFile、CloseHandle,该类函数更具有一般性,并且可以用EscapeCommFunction函数实现低层次的硬件操作,比如:SETXOFF、CLRDTR等。

----利用API编写串口通信程序较为复杂,需要掌握的通信知识多一些,其优点是实现功能上可作的更好、应用面更广泛,更适合于编写较为复杂的低层次通信程序等。采用这种方法编写串行端口通信程序一般分可为以下几个过程:

----(1)初始化串行端口

----首先用CreateFile函数打开指定串口,置参数中访问类型为GENERIC_READ|GENERIC_WRITE、共享模式为0、创建标志为OPEN_EXISTING、模板句柄为NULL。

----(2)配置串口

----WINDOWS95的串口配置比WINDOWS3.x版本较为复杂,但其功能更强大,对一般程序可使用CommConfigDialog函数以对话框方式设置:波特率、数据位、奇偶校验、停止位和流控制方式,并且可以恢复缺省值。

----(3)超时控制

----WINDOWS95为了防止意外情况的出现使得串口读写无休止地等待,而提供了超时设置,这是由COMMTIMEOUTS结构定义的,通过调用GetCcommTimeOuts函数获得当前的设置,而用SetCommTimeOuts函数来完成设置。

----(4)数据传输

----读写串行端口与读写文件采用相同的函数,即ReadFile、WriteFile,读写操作可分四种方式:查询方式、同步I/O、异步(后台)I/O和事件驱动I/O。

----(5)关闭串口

----程序的终止可以自动关闭串口,也可用函数CloseHandle(),以便释放该独占资源。

----二.用VB通信控件Mscomm的方法

----Mscomm控件提供了功能完善的串口数据的发送和接收,Mscomm控件具有两种处理方式:①事件驱动方式:由Mscomm控件的OnComm事件捕获并处理通信错误及事件。②查询方式:通过检查CommEvent属性的值来判断事件和错误。

----Mscomm控件的通信功能实现实际上是调用了API函数,而API函数是由Comm.drv解释并传给设备驱动程序执行的,对于VB程序开发者只需知道Mscomm控件的属性和事件的用法即可以实现串口的操作。以下是Mscomm控件的主要属性和方法:

----(1)CommPort:设置或返回串行端口号,其取值范围1-99,缺省为1。

----(2)Setting:设置或返回串行端口的波特率、奇偶校验位、数据位数、停止位。如:Mscomm.Setting="9600,N,8,1"。

----(3)PortOpen:打开或关闭串行端口,格式为:Mscomm.PortOpen={TRUE|FALSE}。

----(4)InBufferSize:设置或返回接收缓冲区的大小,缺省为1024字节。

----(5)InBufferCount:返回接收缓冲区内的等待读取的字节个数,可通过设该属性为0来清除接收缓冲区。

----(6)RThreshold:该属性为一阀值,它确定当接收缓冲区内字节个数达到或超过该值后就产生代码为MSCOMM_EV_RECEIVE的OnComm事件。

----(7)InputLen:设置或返回接收缓冲区内用Input读入的个数。若取0,则INPUT读取整个缓冲区的内容。

----(8)Input:该属性表示从接收缓冲区移走一串字符。

----(9)OutBufferSize:设置或返回发送缓冲区,缺省为512字节。

----(10)OutBufferCounter:返回发送缓冲区内等待发送的字符数,可用来清空缓冲区。

----(11)Output:向发送缓冲区传送一字符串。

----(12)EOFEnable:若置TRUE,则当输入中出现EOF,就停止输入并产生OnComm事件。

----如果在通信过程中发生错误或事件,就会引发OnComm事件并且改变属性值,由CommEvent属性代码反映错误类型,在通信程序的设计中可跟据该属性值来执行不同的操作,以下是部分属性常数值及其含义:

----(1)ComEvSend:其值为1,发送缓冲区的内容少于SThreshold指定的值。

----(2)ComEvReceive:其值为2,接收缓冲区内字符数达到RThreshold值,该事件在缓冲区中数据被移走前将持续产生。

----(3)ComEventFrame:其值为1004,硬件检测到帧错误。

----(4)ComEventRxOver:其值为1008,接收缓冲区溢出。

----(5)ComEventTxFull:其值为1010,发送缓冲区溢出。

----(6)ComEventRxParity:其值为1009,奇偶校验。

----(7)ComEvEOF:其值为7,接收数据中出现文件结束(ASCII码为26)字符。

----三.程序样例

----采用Mscomm控件实现串口通信,首先添加一Mscomm控件到窗体中,该控件一般不在通用工具窗口中,是通过菜单项工程(P)→部件(O)进入选择窗口,在控件tab页中选取MicrosoftCommControl5.0,此时工具窗口中出现Mscomm图标,便可被使用。

----以下是事件驱动方式的接收程序主要部分:

PrivateSubgetdatafromserial_Click()
CommonDialog1.InitDir="c:\temp"
CommonDialog1.ShowSave
mainfrm.MSComm1.CommPort=1
hfile=FreeFile
OpenCommonDialog1.filenameForOutput
As#hfile打开存储接收数据的文件
mainfrm.MSComm1.InBufferSize=4096
设接收缓冲区的大小,可跟量确定
IfNotmainfrm.MSComm1.PortOpenThen打开串口
mainfrm.MSComm1.PortOpen=True
EndIf
IfErrThenMsgBox"Communcationportcannotbeopen!!"
mainfrm.MSComm1.InBufferCount=0
清接收缓冲区
mainfrm.MSComm1.InputLen=77
设一次读入的长度,可跟据数据格式设置
mainfrm.MSComm1.RThreshold=77
置接收事件触发的阀值
counter=Timer 10
Do
IfTimer>counterThen
mainfrm.Label1.Caption="正在通信......"
mainfrm.Label1.Refresh
counter=Timer 10
EndIf
DoEvents
Loop
EndSub

----以下为事件处理子程序,flag为一静态变量记录读取次数以便改变接收数据的长度,可跟据实际需要添加其它处理内容:

PrivateSubMSComm1_OnComm()
SelectCaseMSComm1.CommEvent
CasecomEvReceive
Ifflag>246Then
MSComm1.InputLen=0:MSComm1.RThreshold=32
EndIf
buffer=MSComm1.Input
temp=buffer
Print#hfile,temp
counter=Timer 10
DoWhileTimer>counter
DoEvents
Loop
flag=flag 1
CasecomEvEOF
EVMsg$="检测到文件结尾!!!"
CasecomFrame
ERMsg$="桢出错!!!"
CasecomRxParity
ERMsg$="奇偶错!!!"
EndSelect
IfLen(EVMsg$)Then
Text1.Text="Status:"&EVMsg$
ElseIfLen(ERMsg$)Then
Text1.Text="Status:"&ERMsg$
Beep
Ret=MsgBox(ERMsg$,1,"ClickCancel
toquit,OKtoignore.")
MSComm1.PortOpen=False
EndIf
EndSub->


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·ems图片格式转换(java)程序
·使用hashtable实现的购物车-ASP教程,ASP应用
·Java中数据库事务处理的实现-JSP教程,Java技巧及代码
·Oracle数据库操作类(c#)-.NET教程,C#语言
·移动短消息技术演进与业务发展浅析
·ASP生成静态网页,学习CASE的用法,以及“权限”的一种控制方法-ASP教程,组件开发
·中国电信发展移动通信的制式与频段选择
·ASP中access数据库的路径问题-ASP教程,数据库相关
·td-scdma系统移动台接入过程浅析
·JAVA与数据库连接方法(三)-JSP教程,数据库相关
最新文章
·fireworks表现vista毛玻璃朦胧效果_fireworks教程
·google adsense哪些情况会被k号_网赚技巧
·减少google adsense展示单元并不能提高收入_网赚技巧
·google adsense“允许域名”新功能很有用_网赚技巧
·于源:办南京人“淘宝”的大三学生_站长访谈
·谈谈网站策划和网站运营方面的点滴经验_站长心得
·美国网站兵败中国的10大思路性执行错误_站长心得
·付款流程中的电话确认_google推广
·google adsense的部分规则的背面_google推广
·googleadsense富翁排行榜最猛每月赚30万美元_google推广
相关主题
  • 基于win95的vb5串口通信程序_visualbasic教程
  • 基于windows的ipsec设计与实现
  • 基于win 2003的mcse认证要求
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭