Imports System.IO.Ports
Imports System.Text
Public Class Form1
Private com As New SerialPort()
'’BaseMainForm.Invoke(TDG,New object() {valarr}) '执行委托
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'初始化下拉串口名称列表框
Dim ports As String() = SerialPort.GetPortNames()
'Array.Sort(ports)
For Each r As String In ports
If ComboBox1.Items.Contains(r) = False Then
ComboBox1.Items.Add(r)
End If
Next
'ComboBox1.Items.AddRange(ports)
AddHandler com.DataReceived, AddressOf Com_DataReceived
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If com.IsOpen Then com.Close()
com.PortName = ComboBox1.Text
com.BaudRate = 9600 ' 波特率
com.Parity = Parity.None ' 无奇偶校验位
com.StopBits = StopBits.One ' 两个停止位
' com.Handshake = Handshake.RequestToSend;//控制协议
com.DataBits = 8
' com.ReceivedBytesThreshold = 13;//设置 DataReceived 事件发生前内部输入缓冲区中的字节数,我这里是13字节为一组
' com.DataReceived += new SerialDataReceivedEventHandler(Com_DataReceived);
com.Open()
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
com.Write("R")
End Sub
Private Sub Com_DataReceived(sender As Object, e As System.IO.Ports.SerialDataReceivedEventArgs)
Threading.Thread.Sleep(500)
Dim readBuffer = New Byte(com.ReadBufferSize + 1 - 1) {}
Dim count = com.Read(readBuffer, 0, com.ReadBufferSize) ' 读取串口数据(监听)
Dim SerialIn = Encoding.ASCII.GetString(readBuffer, 0, count) ' 将字节数组解码为字符串
' MessageBox.Show(SerialIn.Length)
Invoke(Sub()
'Dim x() As String = SerialIn.Split(vbCrLf)
''获取最后一个。
'System.IO.File.WriteAllText("1.txt", SerialIn)
'vars("重量") = SerialIn
'Dim m As String = x(x.Length - 1)
Dim m As String = SerialIn.Split(vbCrLf)(0)
RichTextBox1.Text = m
'MsgBox(x(0))
End Sub)
'RichTextBox1.Invoke(Invoke)
'RichTextBox1.Text = SerialIn
End Sub
End Class