I possède un capteur (un transducteur de pression Quartzonix, en fait) qui crache données via le port série, environ 3 fois par seconde. Je voudrais mettre en place un code pour me donner une lecture moyenne basée sur x-quantité d'échantillons.moyen de roulement, vb.net
La sortie ressemble à ceci:
01+ 1.502347091823e01
01+ 1.501987234092e01
01+ 1.50234524524e01
01+ 1.502123412341e01
01+ 1.502236234523e01
01+ 1.50198345e01
01+ 1.502346234523e01
.. et continuer indéfiniment jusqu'à ce que le port COM est fermé ou le transducteur reçoit une autre commande.
C'est ce code que j'ai jusqu'à présent, et le code fonctionne pour me montrer ce que le transducteur est la sortie en fait:
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
Le « $ 01MC » est la commande du transducteur doit commencer crachant la Les données. J'ai quelque chose de bizarre qui se passe quand je clique sur le bouton de démarrage, mais c'est un autre spectacle (peut-être un ajustement .readtimeout est nécessaire, pas sûr).
J'ai une zone de texte txtReadingsToAvg pour l'entrée du nombre de lectures à la moyenne .. Je ne suis pas juste enveloppant ma tête autour de comment l'obtenir pour calculer la moyenne (sur, disons, un clic, puis cracher dans un msgbox, ou même dans une autre zone de texte).
Pour obtenir des mesures de n, qu'en une file d'attente ou registre à décalage n éléments de long. Chaque fois que vous obtenez une nouvelle lecture, poussez-la dans la file d'attente et la lecture la plus ancienne disparaît puis terminez. Puis faites la moyenne de la file d'attente. – peterG
Voulez-vous une moyenne depuis le début de votre programme ou une moyenne depuis que le capteur a commencé à enregistrer? –
Ou la moyenne des derniers n secondes/m échantillons? – djv