mikrocontroller.net

Forum: PC-Programmierung Serial-Bibliothek von Ramon de Klein


Autor: Owen Senmeis (senmeis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello,

ich verwende gerade die overlapped Methode der Bibliothek von Ramon de 
Klein 
(http://www.codeproject.com/KB/system/serial.aspx?m...) 
für die serielle Schnittstelle mit Visual Studio 2008.

Das Problem ist, manchmal meldet sich die Warnung: "Input parity error" 
beim Empfangen obwohl die Übertragung in Ordnung ist.

Der Code:
if (eEvent & CSerial::EEventError)
        {
          printf("\n### ERROR: ");
          switch (serial.GetError())
          {
          case CSerial::EErrorBreak:    printf("Break condition");      break;
          case CSerial::EErrorFrame:    printf("Framing error");      break;
          case CSerial::EErrorIOE:    printf("IO device error");      break;
          case CSerial::EErrorMode:    printf("Unsupported mode");      break;
          case CSerial::EErrorOverrun:  printf("Buffer overrun");      break;
          case CSerial::EErrorRxOver:    printf("Input buffer overflow");  break;
          case CSerial::EErrorParity:    printf("Input parity error");    break;
          case CSerial::EErrorTxFull:    printf("Output buffer full");    break;
          default:            printf("Unknown");          break;
          }
          printf(" ###\n");
        }

Hat jemand Erfahrung gemacht?
MfG
Senmeis

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfach mal ne dumme Idee:
könnte es sein, daß Dein serieller Takt an der Grenze zur zulässigen 
Abweichung liegt? Je weiter 'hinten' ein Bit übertragen wird, desto 
stärker summiert sich der Taktfehler auf. So könnte es sein, daß die 
Daten noch korrekt rüberkommen aber das Parity Bit ab und an falsch ist.

Autor: Owen Senmeis (senmeis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kaum möglich würde ich sagen, da ich 2400bps verwende. Sicherlich liegt 
das an der Bibliothek, aber vielen Dank trotzdem.

Senmeis

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Owen Senmeis schrieb:
> Kaum möglich würde ich sagen, da ich 2400bps verwende.

Nein, damit hat das nichts zu tun. Sondern damit, wie Du auf der dem PC 
gegenüberliegenden Seite diese Baudrate erzeugst.

Wenn das z.B. ein Microcontroller ist, der mit einem internen 
RC-Oszillator arbeitet, dann ist die Chance hoch, mit der Baudrate 
"daneben" zu liegen.

Das geht sogar mit einem quarzstabilisierten Oszillator, wenn der Quarz 
kein sogenannter "Baudratenquarz" ist (und die UART-Hardware des µC kein 
Feintuning zulässt). Dabei tritt eine vom Teilungsverhältnis abhängige 
systematische Abweichung vom Soll auf - ist die deutlich größer als 1%, 
gibt es Empfangsfehler.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.