科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件串口通讯及其在VB平台下的实现

串口通讯及其在VB平台下的实现

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文首先介绍串行通讯的基础知识,然后结合示例剖析在VB平台下的串口通讯的编程技巧 。

作者:冯杰 来源:yesky 2007年10月15日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
三、VB平台下的实现

  使用MSCOMM控件主要是通过事件来处理串行口的交互,即当数据到达时,控件的OnComm的事件就会来捕获或处理这些通讯事件。而OnComm事件也可以用来捕获和处理通讯错误。在实际应用中,一个MSCOMM控件就对应一个串行口,所以如果要处理多个串行口的话,必须有相应数量的控件与之对应。下面介绍一下此控件的主要属性:

  CommPort---------设置或者返回串行端口号

  Settings-------------用来设置和返回波特率,奇偶校验,数据位和结束位

  PortOpen----------设置或者返回通讯端口的状态,也可以打开和关闭一个端口

  Input----------------从接受缓冲区里获取或删除数据

  Output-------------给发送缓冲区里写数据

  另外对于OnComm事件来说,每当CommEvent的数值发生改变时就会产生这种事件,这就表明要么就是一个通讯事件的产生,要么是一个通讯错误产生。CommEvent属性里面包含了通讯事件或者产生的错误的编号。
那么为了能够更加清楚的说明上述问题,下面给出一个例程,例程要实现的功能很简单,就是在一个过程里给一个特定的串行口发送数据,然后在另外一个过程里实时检测此串行口以便一旦此串行口的发送缓冲区有数据就显示消息,如果发送空数据就会显示"无数据的字样"。界面如下:



  主要核心代码如下:

Private Sub Command1_Click()
If Text1.Text = "" Then
List1.AddItem "发送缓冲区无数据"
Exit Sub
End If
MSComm1.Output = Text1.Text
End Sub
Private Sub Command2_Click()
Unload Me
End Sub

'主要进行串口的初始化
Private Sub Form_Load()
'选择com1
MSComm1.CommPort = 1
'设置波特率为9.6kpbs,没有奇偶校验,8位数据位,1位结束位
MSComm1.Settings = "9600,N,8,1"
'读取全部的输入缓冲区
MSComm1.InputLen = 0
'端口打开
MSComm1.PortOpen = True
MSComm1.RThreshold = 10
MSComm1.SThreshold = 10
'以下就可以进行数据的发送了
End Sub

'所有的通讯事件都可以激发MSComm1控件的OnComm事件
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
'此处的代码可以进行当串口的接受缓冲区里有RThreshold个字符的处理
Case comEvSend
'此处的代码可以进行当串口的发送缓冲区里有SThreshold个字符的处理
List1.AddItem "发送缓冲区有数据"
End Select
End Sub

  四、小结

  虽然上面的例程实现的功能简单,但是从文中的分析不难看出,通过控件MSCOMM的input 和output属性可以很方便的接受和发送串口缓冲区的数据。当然要编制比较完善的通讯应用程序,还需要进行更深入的研究,比如通过使用"握手"的机制来增强通讯的安全性和稳定性,另外通过数据的重复的发送达到收发数据的准确性等等。这些方面希望读者在实际开发中多实践,以便能够满足实际的需要。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章