门-海鸥-2018.11.9

1、前言

不久前认识的朋友来找我,说我知道我在这里做工业控制自动化、电路板、控制器、仪表、软件应用程序开发定制(业务QQ2531263726),所以我要把指纹模块和他们公司的触摸屏结合起来做系统。这个指纹模块可以使用串行端口和UP。

朋友请求先在电脑上和指纹模块把数据调通,那么我就计划先写个电脑桌面小软件测试一下,找到几年前做的一个项目,是用VB.NET做的上位机软件,里面有串口通信模块例程可以参考。

那么,本文就介绍一下怎么在VB.NET中使用串口控件与下位机电路板通信。

2,使用VB.NET串口的总体技术梗概和实现流程

VB.NET有一个控件叫做SerialPort,在左边的toolbox里面把它拖拽到窗体,并对SerialPort控件进行配置和调用就能使用电脑进行串口通信。

•串口的一般配置和使用的流程

3,一点一点详细介绍串口操作和例程

开弓第一步,先用手将弓拉开,把左侧工具栏的SerialPort控件拖拽放置到窗体里面,一般SerialPort控件会自动定位到窗体的下方。

3.1 引入命名空间

Imports System

Imports Sy

这两行代码将VB.NET串口开发必要的函数引入本工程文件里面。

3.2 读取和选择串口号

‘功能:读取计算机串口,并将可用的串口号显示在一个下拉列表框里面

Sub GetSerialPortNames()

For Each sp As String In My.Com

ComboBox1.I(sp) 'CompList是一个下列表框控件,显示计算机可用的串口号

Next

If ComboBox1.I >= 1 Then

ComboBox1.SelectedIndex() = 0 '

ComboBox1.Text = ComboBox1.Selec

Else

MsgBox("请插入USB转串口线!", M, "提示!") ’假如是笔记本等没有串口的计算机,那么就需要买一根USB转串口线

End

End If

End Sub

以上程序就实现了将计算机上可以使用的串口号显示在软件界面的一个下拉列表框里面,假如计算机没有串口,可以使用USB转串口线,如没有插入,会提示你"请插入USB转串口线!"。

3.3 串口设置

串口在使用前需要进行一下配置,包括串口号、波特率、数据位、停止位、缓冲区大小等参数设置。

'功能:串口设置

Sub PortStart()

If SerialPor Then SerialPor()

SerialPor = ComboBox1.Selec '计算机串口设置,可以使用下列表框选择

SerialPor = 9600 '波特率设置

SerialPor = 8 '数据位设置

SerialPor = S '停止位设置

SerialPor = 256 '设置输入缓冲区大小为?字节

SerialPor = True

SerialPor = 500 '超时时间

SerialPor = vbCrLf '行结束符号

End Sub

3.4 打开串口

'功能:打开串口

Sub PortOpen()

If Not SerialPor Then ''假如串口关着的,那么就打开串口

Try

Call PortStart()

SerialPor()

Catch ex As UnauthorizedAccessException

MsgBox("串口被占用或串口错误!", M, "提示!")

End Try

End If

End Sub

把串口配置好后,就可以打开串口,进行后续的数据收发。

3.5 串口收发数据

 串口发送数据

Sub send(ByVal send_dat As Byte)

Dim senddata(0) As Byte

senddata(0) = send_dat

Try

SerialPor(senddata, 0, )

Catch ex As Exception

Me)

End Try

End Sub

以上程序段实现了串口数据发送,将待发送的数据存在数组senddata中,执行指令即可发送数据。

 串口接收数据

串口接收数据有两种方式,一种是中断接收方式,另一种是定时查询接收的方式。

>>中断接收方式

'触发接收事件

Public Sub Sp_DataReceived(ByVal sender As Object, ByVal e As Sy.SerialDataReceivedEventArgs) Handles SerialPor

Me.Invoke(New EventHandler(AddressOf Sp_Receiving)) '调用接收数据函数

End Sub

'接收数据

Private Sub Sp_Receiving(ByVal sender As Object, ByVal e As EventArgs)

Dim strIncoming As String

Try

receiveby = Str(Val(receiveby) + SerialPor)

If SerialPor > 0 Then

T(100) '添加的延时

strIncoming = SerialPor '读取缓冲区中的数据

SerialPor()

receivebox.Text = strIncoming

End If

Catch ex As Exception

Me)

End Try

End Su

>>定时查询接收方式

‘定时扫描串口接收数据

Dim ReceivedLen As Integer

Dim i As Integer

If SerialPor Then ‘假如串口是打开的

If SerialPor > 0 Then ‘假如串口接收到数据字节不为0

ReceivedLen = SerialPor ‘一次接收到的数据字节数

Dim inx(ReceivedLen) As Byte

SerialPor(inx, 0, inx.Length) ‘读取数据到数组inx中,读取索引从0到inx.Length之间的数据

End If

End If

3.6 关闭串口

'关闭À串口

Sub PortClose()

Try

SerialPor()

DrawCircle(New Point(400 * circle_X, 15 * circle_Y), 10 * circle_X, Bru)

Catch ex As Exception

MsgBox("串口未打开或串口异常!", M, "提示!")

End Try

End Sub

使用完之后,关闭串口。

4,小结

以上本文就介绍了用VB.NET进行串口通信的一般流程和部分相关程序段,在实际过程中需要补充一些其他的控件和代码,就能实现一个完整的工程应用。

更多精彩,欢迎关注微信公众号“永珂在线”。

【参考】

vb.net利用SerialPort进行读取串口操作

1.《inx和ex有什么关系》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《inx和ex有什么关系》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/2128701.html