(1) 搜索本机可用串口
本软件要求实现自动搜索本机可用串口,为实现这一功能,我设置了一个Button在界面上,单击此按钮程序便会自动实现搜索可用串口的功能。在此,调用了一个通用过程GetSerialPortName(),通用过程里面用到了If...Else...End If语句。当主机上没有可用串口时,界面便会弹出对话框"There have no available serialport in this computer!"。当主机上有可用串口时,便使用For...Next有限循环语句,遍历主机上的每一个端口,然后再用一个If...Then...End If语句,调用SearchPort函数,这是一个布尔型函数,如果SearchPort(com)=Ture,那么便把com赋值给字符串变量ComName。即此串口即为本机可用串口。
相关代码如下:
For Each com As String In My.Computer.Ports.SerialPortNames
If (SearchPort(com) = True) Then
ComName = com
Exit Sub
End If
Next
在SearchPort函数里面用到了Try...Catch语句。在Try语句里,用SerialPort1.Open()方法打开一个串口连接。并使用了Threading.Thread.Sleep(500)延时函数。定义了一个字符串Version,并调用了ReadExisting方法,将读取SerialPort对象的流和输入缓冲区中所有立即可用的字节赋值给这个字符串Version。然后运用If...Else...End If语句,调用InStr函数,查找字符串"JB5000",Version是JB5000开始的位置,若找到字符串"JB5000",即返回找到字符的首位置,否则返回0。即若找到字符串"JB5000",则布尔型函数SearchPort的参数返回值是Ture。即找到了可用串口。
相关代码如下:
SerialPort1.Open()
Threading.Thread.Sleep(500)
Dim Version As String = ""
Version = SerialPort1.ReadExisting()
If InStr(Version, "JB5000") > 0 Then
SerialPortStatus = True
Return True
Else
SerialPort1.Close()
Return False
End If
(2) 使用 SerialPort 设置串口属性
进行串口通讯时,需要设置一些相关参数,可以通过设置SerialPort 类的属性来进行。串口属性主要包括:
PortName 串口名称,COM1, COM2等。
BaudRate 波特率,也就是串口通讯的速度,进行串口通讯的双方其波特率需要相同,如果用PC连接其他非PC系统,一般地,波特率由非PC系统决定。
Parity 奇偶校验。可以选取枚举Parity中的值。
DataBits 数据位。
StopBits 停止位,可以选取枚举StopBits中的值。
Handshake 握手方式,也就是数据流控制方式,可以选取枚举Handshake中的值。
串口初始化的代码如下:
With SerialPort1
.PortName = com
.BaudRate = 9600
.Parity = IO.Ports.Parity.None '奇偶校验
.DataBits = 8 '数据位
.StopBits = IO.Ports.StopBits.One '停止位
.Encoding = System.Text.Encoding.ASCII
End With 基于VB.NET的辐射报警仪上位机管理软件设计(9):http://www.751com.cn/tongxin/lunwen_2658.html