除了之前测试终止代码,现在DataReceived事件没写代码
实现代码如下 窗口afterload事件
Try
If ports.Contains("COM1") Then
Ports("COM1").Close()
Ports.Clear
End If
Ports.Add("COM1")
Ports("COM1").Open()
e.Form.TimerEnabled = False
e.Form.TimerInterval = 500
e.Form.TimerEnabled = True
Catch ex As Exception
MessageBox.Show("COM1已经被其它程序占用,无法打开!","提示",MessageBoxButtons.OK)
End Try
窗口 timertick事件
Dim s As String
Dim sr1 = ProjectPath & "\images\" & "redp.png"
Dim sr2 = ProjectPath & "\images\" & "greenp.png"
Dim cos As List(of String) = Ports.PortNames
If cos.Contains("COM1") = False Or Ports.Contains("COM1") = False Or Ports("COM1").IsOpen = False Then
e.Form.Controls("picturebox1").ImageFile = sr1
e.Form.Controls("picturebox2").ImageFile = sr1
Return
End If
s = Ports("COM1").ReadExisting()
With e.Form.Controls("picturebox2")
Dim sr As String = .ImageFile
If s > "" AndAlso sr = sr2 Then
ElseIf s > "" AndAlso sr = sr1 Then
.ImageFile = sr2
ElseIf s > "" AndAlso sr = "" Then
.ImageFile = sr2
Else
If sr = "" Then
.ImageFile = sr1
Else
.ImageFile = ""
End If
e.Form.Controls("picturebox1").ImageFile = sr1
Return
End If
End With
If s.Length > 8 Then
s = s.SubString(s.IndexOf("=")+1,7)
Dim chars() As Char = s.ToCharArray()
Array.Reverse(chars)
s = String.Join("",chars)
e.Form.Controls("ybzl").Text = CInt(s)
Else
Return
End If
Static i As Integer
Static zls As new List(of Integer)
If zls.Count < 5 Then
zls.Insert(i,CInt(s))
i = i + 1
End If
If zls.Count = 5 Then
zls.Sort
Dim cy As Integer
cy = Math.Abs(zls(4) - zls(0))
With e.Form.Controls("picturebox1")
Dim sr As String = .ImageFile
If cy <= 10 Then
If .ImageFile = sr1 OrElse .ImageFile = "" Then
.ImageFile = sr2
End If
Else
If sr = "" Then
.ImageFile = sr1
Else
.ImageFile = ""
End If
End If
End With
i = 0
zls.Clear
End If