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

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

首先是看界面:

【串口通信】——简单例子_第1张图片

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

    然后让我们看代码:

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Public 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 Sub
End Class

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

 

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

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

基本使用的步骤;

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

【串口通信】——简单例子_第2张图片【串口通信】——简单例子_第3张图片

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

【串口通信】——简单例子_第4张图片

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

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


你可能感兴趣的:(编程,串口通信)