【VB开源代码栏目提醒】:网学会员在VB开源代码频道为大家收集整理了“avVB程序例子11bo - 综合课件“提供大家参考,希望对大家有所帮助!
最后借你一篇文章看作者不是我里面的不一定都对.. -----------------------------------------------------------
VB Mscomm控件应用 江苏戚墅堰机车车辆厂设计处213011 李秉璋 -------------------------------------------------------------------------------- Visual Basic 6.0以下简称
VB 是一种功能强大、简单易学的程序设计语言。
它不但保留了原先Basic语言的全部功能而且还增加了面向对象程序设计功能。
它不仅可以方便快捷地编制适用于数据处理、多媒体等方面的程序而且利用ActiveX控件MSComm还能十分方便地开发出使用计算机串口的计算机通信程序。
本文结合计算机通信的两个例子详细介绍如何在
VB中使用MSComm控件。
处理方式 MSComm控件提供了两种处理通信的方式一种为事件驱动方式该方式相当于一般程序设计中的中断方式。
当串口发生事件或错误时MSComm控件会产生OnComm事件用户
程序可以捕获该事件进行相应处理。
本文的两个例子均采用该方式。
另一种为查询方式在用户程序中
设计定时或不定时
查询MSComm控件的某些属性是否发生变化从而确定相应处理。
在程序空闲时间较多时可以采用该方式。
常用属性和方法 利用MSComm控件实现
计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。
以下是MSComm控件的
常用属性和方法 ●Commport设置或返回串口号。
●Settings以字符串的形式设置或返回串口
通信参数。
●Portopen设置或返回串口状态。
●InputMode设置或返回接收数据的类型。
●Inputlen设置或返回一次从接收缓冲区中读取字节数。
●InBufferSize设置或返回接收缓冲区的大小缺省值为1024字节。
●InBufferCount设置或返回接收缓冲区中等待计算机接收的字符数。
●Input从接收缓冲区中读取数据并清空该缓冲区该属性设计时无效运行时只读。
●OutBufferSize设置或返回发送缓冲区的大小缺省值为512字节。
●OutBufferCount设置或返回发送缓冲区中等待计算机发送的字符数。
●Output向发送缓冲区发送数据该属性设计时无效运行时只读。
●Rthreshold该属性为一阀值。
当接收缓冲区中字符数达到该值时MSComm控件设置Commevent属性为ComEvReceive并产生OnComm事件。
用户可在OnComm事件处理程序中进行相应处理。
若Rthreshold属性设置为0则不产生OnComm事件。
例如用户希望接收缓冲区中达到一个字符就接收一个字符可将Rthreshold设置为1。
这样接收缓冲区中接收到一个字符就产生一次OnComm事件。
●Sthreshold该属性亦为一阀值。
当发送缓冲区中字符数小于该值时MSComm控件设置Commevent属性为ComEvSend并产生OnComm事件。
若Sthreshold属性设置为0则不产生OnComm事件。
要特别注意的是仅当发送缓冲区中字符数小于该值的瞬间才产生OnComm事件其后就不再产生OnComm事件。
例如Sthreshold设置为3仅当发送缓冲区中字符数从3降为2时MSComm控件设置Commevent属性为ComEvSend同时产生OnComm事件如发送缓冲区中字符始终为2则不会再产生OnComm事件。
这就避免了发送缓冲区中数据未发送完就反复发生OnComm事件。
●CommEvent这是一个非常重要的属性。
该属性设计时无效运行时只读。
一旦串口发生通信事件或产生错误依据产生的事件和错误MSComm控件为CommEvent属性赋不同的
代码同时产生OnComm事件。
用户程序就可在OnComm事件处理程序中针对不同的
代码进行相应的处理。
CommEvent属性的
代码、常数及含义参见表1及表2。
表1 CommEvent通信事件
代码 常数 含义 1 ComEvReceive 接受到Rthreshold个字符。
该事件将持续产生直到用Input属性从接受缓冲区中读取并删除字符。
2 ComEvSend 发送缓冲区中数据少于Sthreshold个说明串口已经发送了一些数据程序可以用Output属性继续发送数据。
3 ComEvCTS Clear To Send信号线状态发生变化。
4 ComEvDSR Data Set Ready信号线状态从1变到0。
5 ComEvCD Carrier Detect信号线状态发生变化。
6 ComEvRing 检测到振铃信号。
7 ComEvEOF 接受到文件结束符。
表2 CommEvent通信错误
代码 常数 含义 1001 ComEvntBreak 接受到一个中断信号。
1002 ComEvntCTSTO Clear To Send信号超时。
1003 ComEvntDSRTO Data Set Ready信号超时。
1004 ComEvntFrame 帧错误。
1006 ComEvntOverrun 串口超速。
1007 ComEvntCDTO 载波检测超时。
1008 ComEvntRxOver 接受缓冲区溢出缓冲区中已没有空间。
1009 ComEvntRxParity 奇偶校验错。
1010 ComEvntTxFull 发送缓冲区溢出缓冲区中已没有空间。
1011 ComEvntDCB 检索串口的设备控制块时发生错误。