【串口通信】——简单例子

来源:互联网 发布:js浮点数精度问题 编辑:程序博客网 时间:2024/05/22 05:12

    上一篇文章给大家讲了一下串口编程的一些基本知识。今天要给大家介绍的是一个串口编程的简单例子。这个例子可以帮助大家对于串口通信的基本知识有个大致的了解。

首先是看界面:


    有点像一个聊天的软件,其实你完全可以这样想。但你面对的对象可能是一个硬件。

    然后让我们看代码:

Imports SystemImports System.Collections.GenericImports System.ComponentModelImports System.DataImports System.DrawingImports System.LinqImports System.TextImports System.Windows.FormsPublic Class Form1    Public Sub New()        InitializeComponent()    End Sub    Private com As System.IO.Ports.SerialPort    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        com = New System.IO.Ports.SerialPort()        '获取所有的串口        Dim pc As Microsoft.VisualBasic.Devices.Computer = New Microsoft.VisualBasic.Devices.Computer()        Dim s As String        For Each s In pc.Ports.SerialPortNames            Me.cbxPortName.Items.Add(s)        Next    End Sub    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        If IsNothing(cbxPortName.SelectedItem) = False Then            com.Close()            com.PortName = cbxPortName.SelectedItem.ToString()            com.Open()            If (com.IsOpen) Then                btnClose.Enabled = True                lbStatus.Text = "串口" + cbxPortName.SelectedItem.ToString() + "已经连接"            Else                MessageBox.Show("请选择串口!")            End If        End If    End Sub    Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click        If (com.IsOpen) Then            com.WriteLine(txtSendMsg.Text)        Else            MessageBox.Show("请先连接串口!")        End If    End Sub    Private Sub btnReceive_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReceive.Click        txtReceive.Text = ""        If (com.IsOpen) Then            Try                com.DiscardInBuffer()                com.DiscardOutBuffer()                txtReceive.Text = com.ReadLine()            Catch                Throw            End Try        Else            MessageBox.Show("请先连接串口!")        End If    End SubEnd Class

上面的代码大家可以拷贝下来实现一下。

 

        当然我也说过了这是一个非常简单的例子。其中用到的东西我大概的总结一下:

        以上代码的核心是一个SerialPort类:表示串行端口资源。其中用到的其最重要的两个方法发送数据(write)和读取数据(read)当然看到这你可能还是有疑问,串口通信难道只有有了硬件才能进行学习研究嘛?答案当然是否定的。你完全可以采用虚拟的串口程序进行学习研究。给大家提供一个很好的虚拟串口程序:VSPM。下载地址:http://download.csdn.net/detail/hy6688_/6705423

基本使用的步骤;

  1. 安装以后工作模式选择应该为:VSPM运行在Server模式,支持Client模式设备
  2. 然后是使用设备探测器简历虚拟串口。(如果选择建立默认的串口,软件就会自动帮你建立四个虚拟串口的)之后就是新增虚拟串口
  3. 串口任意选(这里你建立那个就可以在程序中选择那个),选择监听的IP地址:自己的IP如我的为192.168.24.129Client模式的设备尝试连接此端口:随便写一个,一般不要和别的冲突就行。5000以后的一般没有问题。默认的就可以这里选6020

  1. 建立之后:选择此串口,再选择菜单栏:检查此设备连接,输入刚才新增时候选择的IP地址:92.168.24.129,刚才选择的端口:6020
  2. 点击重新连接,这个窗口没有什么反映:但是主窗口的串口最右边一栏:最后一次操作:显示串口:COM2没有打开。
  3. 然后让我们写好的程序运行起来,点击链接。然后在发送文本框中输入数据点击发送试试我们的虚拟串口中就可以收到数据:

  1. 再选择菜单栏-跟踪串口数据然后点击我们制作的小例子的接收命令。当我们在Telnet管理窗体的显示信息栏中输入一些字符并按下回车键时我们的例子中的接收文本框就会收到我们刚刚写入的信息。并在跟踪串口数据中有显示。如图:

综上所述:只是一个简单的串口编程的小例子其中存在很多的问题,如果你真正动手实践了你也会发现其中的问题。甚至不能满足我们基本的聊天功能。这些问题留给下篇文章介绍。


10 0
原创粉丝点击