分享

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

 阿明哥哥资料区 2022-04-06

图片

今天,我们共同学习在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

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

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

图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多