Serial Port BytesToRead und readbuffer

Ich versuche Daten von einem seriellen port ständig in eine sehr schnelle Geschwindigkeit. Die Baudrate ist 230400.
Wenn ich drucken Sie die Daten, Zeitstempel und auch BytesToRead in einer Datei, bemerkte ich ein 200ms Verzögerung passiert immer dann, wenn BytesToRead Tropfen auf eine einzige Stelle und readLine() ist nicht das Lesen etwas in dieser 200ms. Nach der Verzögerung BytesToRead geht zurück bis etwa 3000, und dieser Prozess geschieht immer wieder. Im wesentlichen bin ich nicht immer kontinuierlich die Daten.

Dachte ich, vielleicht lese ich schneller als die Geschwindigkeit der Daten die sich im buffer-also habe ich versucht, die änderung readBuffer Größe und dieser thread 1ms, damit Puffer halten die Geschwindigkeit, die ich bin, zu Lesen. Keiner von Ihnen arbeitete. Es gibt noch einige Verzögerungen.

Jede Meinung ist willkommen.

 private void dostuff()//The thread I created after the port is opened
    {
        var startTime = DateTime.Now;
        var stopwatch = Stopwatch.StartNew();
        while (serialPortEncoder.IsOpen)
        {
            if (serialPortEncoder.BytesToRead > 210)
            {
                try
                {
                    var line = serialPortEncoder.ReadLine();
                    var timestamp = (startTime + stopwatch.Elapsed);
                    var lineString = string.Format("{0}  ----{1}",
                                    line,
                                    timestamp.ToString("HH:mm:ss:fff") + " "+serialPortEncoder.BytesToRead+"\r\n");

                    richTextBoxEncoderData.BeginInvoke(new MethodInvoker(delegate()
                    {
                        richTextBoxEncoderData.Text = line;//update UI                           
                    }));                                     
                }
                catch (Exception ex) { MessageBox.Show(ex.ToString()); }


            }}
  • Ist die Verzögerung bei der Synchronisierung mit der Garbage Collection?
  • Haben Sie versucht, Sie vorübergehend deaktivieren Sie das richtextbox-Steuerelement aufrufen?
  • Dies ist eine Fortsetzung von stackoverflow.com/questions/14309249/.... Das ist ok, aber was hast du versucht um das problem genauer diagnostizieren? Bist du sicher, dass das board nicht verursacht die Verzögerungen?
  • meinst du den encoder selbst?
InformationsquelleAutor Timtianyang | 2013-01-14
Schreibe einen Kommentar