Pyserial parity bits

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,
    kann mir jemand bitte den unterschied zwischen den einzelnen paritybits erklären? Habe schon viel gesucht aber nichts richtiges gefunden. Also was bedeutet PARITY_EVEN, PARITY_ODD, PARITY_MARK und PARITY_SPACE .
    Ich muss für ein Projekt die Parity bits verwenden habe aber noch keine ahnung wie das funktionieren soll.

    Mit freundlichen Grüßen
    Raybestos93

  • Hallo Raybestos,

    Die Antwort ist in der Suche nach

    Code
    Linux Kommando stty
    man stty
    sudo apt-get install stty

    verborgen.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (9. Mai 2017 um 15:47)

  • ODD Parity-Bit ist auf 1 gesetzt bei ungeradzahliger Anzahl von 1
    EVEN Parity-Bit ist auf 1 gesetzt bei geradzahliger Anzahl von 1
    NONE Parity-Bit wird ignoriert
    MARK Parity-Bit ist immer auf 1 gesetzt
    SPACE Parity-Bit ist immer auf 0 gesetzt

    Die Gegenstelle muss aber genauso konfiguriert sein und mit dem Parity Bit umgehen können.
    Parity Bits werden eigentlich nur bei 7-Bit Bytesize verwendet, da ist es das 8.Bit von einem Byte
    Parity Bits werden heutzutage eigentlich gar nicht mehr verwendet, höchstens noch aus historischen Gründen.
    Bei 8-Byte Bytesize ist mir bis jetzt nur N(one) untergekommen.

    Servus !

    RTFM = Read The Factory Manual, oder so

    Einmal editiert, zuletzt von RTFM (9. Mai 2017 um 19:27)

  • Danke für die Antwort.
    Ich möchte 8 Bits + ein parity Bit verwenden. Dies soll also quasi mein 9tes bit (als Adress-Bit) darstellen. Deshalb wäre es gut wenn das irgendwie funktioniert. Leider habe ich noch nichts gefunden. Aber eigentlich müsste das ja funktionieren mit dem MARK- und Space Parity Bit. nur leider kommt immer eine Fehlermeldung. EVEN und ODD funktionieren ohne probleme.

  • Hier gibts eine Beschreibung für die Verwendung fest gesetzter Parity-Bits - quasi zur Unterscheidung von Adress- und Nutzdaten.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Da die Konfiguration der seriellen Schnittstelle vor dem ersten Benutzen dieser passiert, kann man nicht währen einer Übertragung die 'Funktion' des Paritiy-Bits ändern.

    Damit ist es nicht möglich, z.B. durch ein gesetztes Bit zu sagen "Das ist eine Adresse", und durch ein nicht gesetztes Bit zu sagen "Das ist ein Datum".

    Computer ..... grrrrrr

  • Es mag mit den üblichen Mitteln, die heute durch die Programmierschnittstellen bereitgestellt werden, nicht möglich sein, die Parity-Einstellung innerhalb einer Verbindung zu ändern, aber es ist grundsätzlich möglich und die Quelle beschreibt ja auch den konkreten Einsatz. Die Welt besteht nicht nur aus den heute bestehenden Standards. Vielleicht wurde das "früher mal" eingesetzt und vielleicht auch nur bei proprietären Protokollen. Aber ich gebe ja hier nicht die Quelle an, damit du dann sagst, das ist nicht möglich...

    Abgesehen davon, kann man doch die Schnittstelle nach der Übertragung der Adresse neu konfigurieren. Niemand hat gesagt, dass die Parityvariation innerhalb einer Verbindung stattfinden muss. Man könnte das Gerät durch die seriellen Adressdaten mit Parity aufwecken. Es wartet dann X Sekunden auf eine neue Verbindung mit Daten ohne Parity Bit. Kommen keine oder kommt eine andere Adresse mit Parity, geht das Gerät wieder schlafen.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Servus Raybestos93,


    ... Ich muss für ein Projekt die Parity bits verwenden habe aber noch keine ahnung wie das funktionieren soll.

    ich hatte Dir doch bereits -> in diesem Beitrag <- den Hinweis auf RS485 gegeben. Wieso bist Du dem nicht nachgegangen? Dann hättest Du u.a. sicher auch das hier -> http://digital.ni.com/public.nsf/all…62564990057F919
    gefunden was meine Aussage bestätigt, dass es so ohne Weiteres nicht möglich ist 9 Bit zu übertragen.

    Dass Du das jetzt so mal schnell nebenbei zu Fuss in Python lösen willst halte ich für ziemlich mutig.

    //EDIT: wieso überträgst Du denn nicht einfach zwei byte ... da passen dann 16 bit ohne Klimmzüge rein.

    cu,
    -ds-

  • Die Einstellung, wie viele Paritäts-Bits die Verbindung hat, gehört, wie auch die Verbindungeschwindigkeit und die Anzahl der Bits zu den grundlegenden Einstellungen einer seriellen Schnittstelle.
    Änderungen sind nur sinnvoll, wenn diese Einstellung vor dem Aufbau der Verbindung vorgenommen werden und während der gesamten Verbindung gleich bleibt.
    Andernfalls sind massive Probleme.

    Eigentlich werden diese Parameter vor den Programmen, die bei der Übertragung involviert sind, verdeckt.

    Ein Programm weiß, dass an Port A Daten angenommen und zu einem anderen System übertragen werden.
    WIE diese Schnittstelle diese Daten überträgt, (Geschwindigkeit, Datenlänge, Parität) ist weder für das sendende noch das empfangende Programm wichtig. Die Programm stellen das zu übertragende Datum in die Übergabewarteschlange zum senden bzw holen es aus dieser ab, nachdem das empfangende Programm von der Schnittstelle informiert wurde, das wieder ein Datum bereitsteht.

    Alles andere ist so schlimm, dass es nicht einmal als Pfusch zu bezeichnen ist.

    Eine Unterscheidung zwischen der Datenart kann/sollte/darf man nicht an den Verbindungsparametern festmachen. Diese sind nur dafür da, die Verbindung 'sicher', im Sinne von fehlerfrei, zu machen.

    Zitat

    Abgesehen davon, kann man doch die Schnittstelle nach der Übertragung der Adresse neu konfigurieren. Niemand hat gesagt, dass die Parityvariation innerhalb einer Verbindung stattfinden muss.


    Wie willst du der anderen Seite klarmachen, dass du von EVEN auf ODD umgeschaltet hast, und das nicht eine Störung der Verbindung ist?

    Computer ..... grrrrrr

    Einmal editiert, zuletzt von Rasp-Berlin (10. Mai 2017 um 11:38)

  • Rasp-Berlin: Hast Du den von Gnom verlinkten Beitrag eigentlich gelesen? Da wird doch ein sehr präzises Anwendungsszenario beschrieben. Mir zumindest leuchtet das ein. Sicherlich ist das bei einer Verbindung Rechner zu Rechner, wenn auf beiden Seiten Programme involviert sind, nicht sinnvoll. Aber ich konnte mir vorher eben keinen Anwendungsfall für unveränderliche parity bits vorstellen - jetzt kenne ich einen.

    Um Deine letzte Frage zu beantworten: Gar nicht. Das ist ja gerade der Trick an der Sache: Die andere Seite wacht nur bei einem Parityfehler auf, schaut dann nach, ob sie gemeint ist, und legt sich anderenfalls wieder schlafen.

  • Zitat

    Um Deine letzte Frage zu beantworten: Gar nicht. Das ist ja gerade der Trick an der Sache: Die andere Seite wacht nur bei einem Parityfehler auf, schaut dann nach, ob sie gemeint ist, und legt sich anderenfalls wieder schlafen.

    Was mal wieder zeigt, dass die Leute, die sich diesen Pfusch ausdenken, keine Ahnung haben.
    Es ist vollkommen egal, wie schön man das ganze beschreibt. Pfusch bleibt Pfusch.

    Wie schon von anderen geschrieben wurde, verwendet man für solche Fälle eine saubere Konfiguration mit sauberer Datenübertragung und einem sauberen Protokoll.
    Will man auf einer seriell Leitung mehrere Sender und Empfänger einsetzten, nimmt man nicht RS-232, sondern RS-422 oder RS-485, die genau für diese Fälle definiert wurden.

    Computer ..... grrrrrr

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!