打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VB通过串口进行计算机通信程序实现

今天,我们共同学习在Windows环境下设计串口通信程序,利用Microsoft公司提供的ActiveX控件MSComm.ocx。

首先,要对MSComm控件的基本知识有所了解。

1、MSComm控件的属性和事件
一个MSComm控件仅对应一个串行端口。如果应用程序需要访问多个串口,必须使用多个控件。
MSComm控件有很多重要的属性,下面是几个最常用的属性:
1)CommPort:用于设置并返回连接的串口号,Windouws将使用该串口和外界通信。
2)Settings:用于设置并返回数据传输的通信参数。例如设置值为:“4800,n,8,1”时,表示数据传输速率为4800bit/s,没有奇偶校验,数据位是8位,停止位是1位。
3)PortOpen:取值为true或flase,用于打开或者关闭端口。
4)InputMode:取值及其含义如表2-1所示,用于设置或返回Input属性取回的数据的类型。
5)Inputlen:设置或返回依次从接收缓冲区读取的字节数。
6)InPut:用于从接收缓冲区读取Inputlen长度的数据,并将接收数据赋予变量  7)OutPut:用于向发送缓冲区写数据,OutPut属性可以发送文本或二进制数据。
8)Rthreshold:该属性为一阀值,当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产OnComm事件,用户可在OnComm事件处理程序中进行相应处理,若Rthreshold属性设置为0,则不产生OnComm事件。
9)Sthreshold:该属性为一阀值,当发送缓冲区中字符数小于该值时,MSComm控件设置
Commevent属性为ComEvSend,并产OnComm事件,若Sthreshold属性设置为0,则不产生OnComm事件。要特别注意的是,仅当发送缓冲区中字符数小于该值的瞬间才产生OnComm事件,其后就不再产生OnComm事件。
10)Handshaking:用于设置或返回硬件握手协议,即PC机和通信设备之间为了控制流速而设定的内部协议,取值及其含义如表2-2所示。Value默认值为ComNone,无握手协议。

11)InBufferSize:设置或返回接收缓冲区的大小,默认值为1024B。
12)InBufferCount:设置或返回接收缓冲区等待计算机接收的字节数。
13)OnBufferSize:设置或返回发送缓冲区的大小,默认值为512B。
14)OnBufferCount:设置或返回发送缓冲区等待计算机发送的字节数。

15)CommEvent:该属性设计时无效,运行时只读。一旦串口发生通信事件或产生错误,依据产生的事件和错误,MSComm控件为CommEvent属性赋不同的代码,同时产生OnComm事件。用户程序就可以在OnComm事件处理程序中针对不同的代码,进行相应的处理。CommEvent属性的代码、常数及含义如表2-3及表2-4所示。


MSComm控件只有一个事件,即OnComm事件。当CommEvent属性的值发生变化时,就产生OnComm事件,标志发生了一个通信事件或一个错误。在事件处理程序设计中可以根据CommEvent属性值来执行不同的操作。

1)添加MSComm控件。默认状态下工具箱中并无MSComm控件,需要在“工程”→“部件” →选择Microsoft Comm Control 6.0组件,这样就可以在工具箱中找到MSComm控件,把MSComm控件添加到FORM中。
2)串口属性设置。在添加MSComm控件后,在通信之前要对属性进行设置。根据前面的介绍,对MSComm控件设置如下:

Com.CommPort=1; 设定串口号
If( com.PortOpen )
Com.PortOpen=false; 若该端口已经打开,则关闭该端口
Com.Rthreshold=1; 当接收到数据时就触发OnComm事件
Com.Settings=” 9600,n,8,1”; 设置参数:数据传输速率为9600bit/s,没有奇偶校验,数据位是8位,停止位是1位
Com.Handshaking=MSCommLib.HandshakeConstants.comNone; 没有使用握手协议
Com.InputMode=MSCommLib.InputModeConstants.comInputModeText; 文本形式取回
Com.InputLen=0; 当设置为0时,在Input可用时读取所有的数据
Com.OnComm+=new System.EventHandler(this.OnComm); OnComm事件发生加入列表
Com.PortOpen=true; 打开端口

3)发送和接收数据。数据发送容易实现,只需将要发送的数据赋值给Output。

MSComm控件采用查询或事件驱动方法从串口获取数据。

'程序初始化Private Sub Form_Load() MSComm1.CommPort = 1 '通信口 MSComm1.Settings = '9600,E,7,1' '串口参数设置 MSComm1.Handshaking = 0 '握手信号 MSComm1.InputLen = 0 '设置和返回input每次读出的字节数,设为0时读出接收缓冲区中的内容 MSComm1.OutBufferCount = 0 '设置和返回发送缓冲区的字节数,设为0时清空发送缓冲区 MSComm1.InBufferCount = 0 '设置和返回接收缓冲区的字节数,设为0时清空接收缓冲区 MSComm1.PortOpen = True '打开串口 InAlarm.FillColor = QBColor(10) '输入信号指示灯,初始绿色 OutAlarm.FillColor = QBColor(10) '输出信号指示灯,初始绿色End Sub

学习只要态度认真,就一定能够学有所成!

信息技术时代,掌握编程至关重要!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VB6.0环境下利用Mscomm控件实现串行通信
VB Mscomm控件串口通讯应用1
用vs2010开发基于VC++的MFC 串口通信一*****两台电脑同一个串口号之间的通信
用VC 6.0实现串行通信的三种方法
(三)MSComm控件进行串口编程的基本步骤
VC++下用MSComm控件实现串口通讯
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服