'对于串口对发可以用虚拟串口软件
Friend WithEvents SerialPort As SerialPort '声明实体并及说明有事件(如果是拉控件该声明自动在Form1.Designer.vb)
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
SerialPort = New SerialPort
For Each sp In SerialPort.GetPortNames()
ComboBox1.Items.Add(sp)
Next
'ComboBox1.Sorted = True'排序
ComboBox1.SelectedIndex = 0 '默认是加载列表到Text
AddHandler SerialPort.DataReceived, AddressOf Sp_Receiving '注册事件(如果是拉控件不需要此代码)
End Sub
'触发接收事件(拉控件可以在事件中选择该过程)
Public Sub Sp_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort.DataReceived
Me.Invoke(New EventHandler(AddressOf Sp_Receiving)) '调用接收数据函数
'也可以用控件所在进程来引动如 receivebox.Invoke()
End Sub
'接收数据
Private Sub Sp_Receiving(ByVal sender As Object, ByVal e As EventArgs)
Dim strIncoming As String
'Try
If SerialPort.BytesToRead > 0 Then
Threading.Thread.Sleep(100) '添加的延时
strIncoming = SerialPort.ReadExisting.ToString '读取缓冲区中的数据
SerialPort.DiscardInBuffer()
receivebox.Text = strIncoming
End If
'Catch ex As Exception
' MessageBox.Show(ex.Message)
'End Try
End Sub
'打开串口连接
Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
If Not SerialPort.IsOpen Then
SerialPort.BaudRate = Val(ComboBox2.Text) '波特率
SerialPort.PortName = ComboBox1.Text '串口名称
SerialPort.DataBits = Val(ComboBox4.Text) '数据位
SerialPort.StopBits = Val(ComboBox5.Text) '停止位
Select Case ComboBox3.Text
Case "空"
SerialPort.Parity = IO.Ports.Parity.None '校验位
Case "奇"
SerialPort.Parity = Parity.Odd
Case "偶"
SerialPort.Parity = Parity.Even
Case "空格"
SerialPort.Parity = Parity.Space
Case "标志"
SerialPort.Parity = Parity.Mark
End Select
SerialPort.Open()
Label12.BackColor = Color.Green
Button4.Text = "关闭"
Else
SerialPort.Close()
Label12.BackColor = Color.Red
Button4.Text = "打开"
End If
End Sub
'发送数据
Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
'Try
SerialPort.Write(sendbox.Text)
'Catch ex As Exception
' MessageBox.Show(ex.Message)
'End Try
End Sub