我有一个传感器(实际上是 Quartzonix 压力传感器),它通过串行端口输出数据,大约每秒 3 次。我想设置一些代码,以便根据 x 数量的样本给我一个平均读数。
输出看起来像这样:
01+ 1.502347091823e01
01+ 1.501987234092e01
01+ 1.50234524524e01
01+ 1.502123412341e01
01+ 1.502236234523e01
01+ 1.50198345e01
01+ 1.502346234523e01
.. 并且会一直持续下去,直到 com 端口关闭或传感器收到另一个命令。
这是我到目前为止的代码,代码可以向我展示传感器实际输出的内容:
Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
Dim a As String
a = "$01MC" & Chr(13)
MyComPort.WriteLine(a)
Do
Dim Incoming As String = MyComPort.ReadLine()
Dim incomingtext As String = Incoming.Remove(0, 3)
If Incoming Is Nothing Then
Exit Do
Else
txtRawData.Text = Incoming
boxPSIA.Text = Format(Val(incomingtext), "##0.000")
End If
Application.DoEvents()
Loop
End Sub
“$01MC”是传感器开始输出数据所需的命令。当我单击开始按钮时,我发生了一些奇怪的超时事情,但那是另一个节目(可能需要 .readtimeout 调整,不确定)。
我有一个文本框 txtReadingsToAvg 用于输入要平均多少读数。 ,甚至进入另一个文本框)。