vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Auswerten von SerialPort Kommunikation beschleunigen/verbessern 
Autor: HerrBlümchen
Datum: 10.03.09 00:16

Hallo,
vielen Dank schon einmal für das lesen....

ich bin im Moment an folgendem Projekt zu gange :

Ein Microcontroller übernimmt eine Positionsregelung einer Kugel deren Position über das verstellen einer Platte geändert werden kann. ALLE Daten, d.h Reglerparamter für die X und Y Achse sowie die Kugelposition ( wird durch ein Touchplate aufgenommen ) , werden über die Serielle Schnittstelle (RS232) an den PC geschickt. Zur Auswertung habe ich eine Oberfläche geschrieben, die mir die Daten auswertet und Grafisch darstellt. Jetzt zu meinem Problem....

Der Datenstrom ist ziemlich groß bei 9600 baud. Das führt dazu, das der Empfangspuffer des PC´s sich bis zu einem gewissen grad füllt, was aber zu einer verzögerung der Datenanzeige führt. Ich möchte das ganze jedoch möglichst in Echtzeit , d.h. die Daten so aktuell wie möglich anzeigen.

Wenn ich daten empfange, wird folgender Code ausgeführt...
 
 
 Private Sub cp_DataReceived(ByVal sender As Object, ByVal e As _
   System.IO.Ports.SerialDataReceivedEventArgs) Handles cp.DataReceived
 
        ' Schreibt anhand des erhaltenen Funktionscodes an die entsprechende 
        ' Eigenschaft den Übergebenen Wert
        'setValues(&H30, cp.BytesToRead)
 
 
        Do
            If cp.ReadChar = 2 Then
                Try
                    'strString = ""
                    Dim i As Integer = 0
                    Do
                        intChar(i) = cp.ReadByte
                        i += 1
                    Loop While ((intChar(i - 1) <> 3) And (i < 30))
 
                    Dim temp(3) As Byte
                    newFrame.bytFC = intChar(0)
                    temp(0) = intChar(4)
                    temp(1) = intChar(3)
                    temp(2) = intChar(2)
                    temp(3) = intChar(1)
                    newFrame.sngValue = System.BitConverter.ToSingle(temp, 0)
 
                    strString += "FC:(" & Hex(intChar(0)) & ")" & "Value : (" & _
                      CStr(newFrame.sngValue) & ")" & vbCrLf
 
                    ' Schreibt anhand des erhaltenen Funktionscodes an die 
                    ' entsprechende Eigenschaft den Übergebenen Wert
                    setValues(intChar(0), newFrame.sngValue)
 
 
                Catch ex As System.IndexOutOfRangeException
                    cp.DiscardInBuffer()
                Catch ex As Exception
                    MsgBox(ex.ToString)
                End Try
            End If
        Loop While (cp.BytesToRead = 0)
 
    End Sub
Im grund genommen werden solange die Empfangenen Zeichen abgefragt, bis Start- und Endbyte , das durch mein protokoll festgelegt ist, empfangen wurden. Anschliessend werden der Funktionscode der zur Zuordnung der Grösse verwendet wird und der Float wert umgerechnet und in "Newframe" gespeichert. Zusätzlich schreibt die methode "setvalues" die Werte in ein Array, damit die Daten später in einem Diagramm ausgegeben werden (oszilloskop ähnlich)
Das aktaualisieren der Anzeige lass ich über einen Timer ausführen.

Scheinbar braucht der PC für den Code zu lange. zumindest schafft er es nicht alles komplett abzuarbeiten bevor die Nächste nachricht kommt ( Ansonsten würde sich der Puffer ja nicht füllen). Gibt es eine schnellere Methode die Daten auswerten zu lassen um den zeitlichen versatz der Anzeige zu unterbinden ??

Wie wäre es mit einem Threat der durch das DataReceived Ereigniss des Ports ausgelöst wird. In ihn lager ich den obigen Code aus, sodas direkt das Nächste ereigniss ausgelöst werden kann, während dieser threat noch parallel am Signale auswerten ist ??


gruss Maggus
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Auswerten von SerialPort Kommunikation beschleunigen/verbess...2.185HerrBlümchen10.03.09 00:16
Re: Auswerten von SerialPort Kommunikation beschleunigen/ver...1.373moDiag10.03.09 08:32
Re: Auswerten von SerialPort Kommunikation beschleunigen/ver...1.116HerrBlümchen10.03.09 17:12
Re: Auswerten von SerialPort Kommunikation beschleunigen/ver...1.108moDiag10.03.09 17:56
Re: Auswerten von SerialPort Kommunikation beschleunigen/ver...1.151ModeratorFZelle10.03.09 18:16
Re: Auswerten von SerialPort Kommunikation beschleunigen/ver...1.126moDiag10.03.09 18:23
Re: Auswerten von SerialPort Kommunikation beschleunigen/ver...1.205ModeratorFZelle10.03.09 18:29

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel