-         
Ergebnis 1 bis 9 von 9

Thema: Überprüfung auf grade/ungrade Zahl

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    29
    Beiträge
    235

    Überprüfung auf grade/ungrade Zahl

    Anzeige

    Nabend zusammen,
    Kann ich mit Bascom ganz einfach eine Prüfung machen, ob eine Zahl grade oder ungrade ist? Brauche das für die Paritätsprüfung des DCF77 Signals. Hab ein eigenes Programm zur auswertung deshalb hab ich keine Lib oder ähnliches verwendet.
    Mfg
    Elektronische Bauteile funktionieren mit Rauch. Lässt man den Rauch raus, sind sie kaputt.

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Klar, mit

    Variable.0 = 0 ' gerade Zahl, weil niedrigstes Bit (0) = 0 ist)
    Variable.0 = 1 ' ungerade Zahl

    Gruß

    Rolf

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    06.11.2006
    Beiträge
    1.078
    Hallo
    Es gibt für diesen Problemfall im Netz unzählige Beispiele für Lösungen.
    Einfach mal googeln.

    Mit freundlichen Grüßen
    Benno
    Wo man nicht mit Vernunft handelt, da ist auch Eifer nichts nütze; und wer hastig läuft, der tritt fehl.
    Ein König richtet das Land auf durchs Recht; wer aber viel Steuern erhebt, richtet es zugrunde

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    29
    Beiträge
    235
    so hab mir mal was ausgeacht kann aber auch sein dass es totaler Quatsch ist. Könnt ihr mal nen Blick drauf werfen und was zu sagen?

    Minuten:
    If Wert = 21 Then : Minute = 0 : End If
    If Wert = 21 And Status = 1 Then : Minute = Minute + 1 : End If
    If Wert = 22 And Status = 1 Then : Minute = Minute + 2 : Paritaet = Paritaet + 2 : End If
    If Wert = 23 And Status = 1 Then : Minute = Minute + 4 : Paritaet = Paritaet + 4 : End If
    If Wert = 24 And Status = 1 Then : Minute = Minute + 8 : Paritaet = Paritaet + 8 : End If
    If Wert = 25 And Status = 1 Then : Minute = Minute + 10 : Paritaet = Paritaet + 10 : End If
    If Wert = 26 And Status = 1 Then : Minute = Minute + 20 : Paritaet = Paritaet + 20 : End If
    If Wert = 27 And Status = 1 Then : Minute = Minute + 40 : Paritaet = Paritaet + 40 : End If
    If Wert = 28 And Status = 1 Then : Paritaet = Paritaet + 1 : If Paritaet = Minute Then : Nop : Else : Wert = -1 : End If : End If
    Return


    Also ich addiere zur Paritaet immer die Minutenanzahl dazu ausser bei 1. Somit unterscheiden sich Minuten und Paritaet am Ende um 1, wenn die Minutenzahl ungrade ist. Deshalb wird auch bit 28 als 1 gesendet, um auf eine grade Zahl zu kommen. Somit kann ich prüfen wenn die Paritaet um 1 erhöht gleich die Minuten ergibt dann ist alles richtig oder?
    Schlagt mich nicht wenns totaler Quatsch ist
    Elektronische Bauteile funktionieren mit Rauch. Lässt man den Rauch raus, sind sie kaputt.

  5. #5
    Neuer Benutzer
    Registriert seit
    03.07.2005
    Ort
    Donauwörth
    Alter
    62
    Beiträge
    1
    Hallo MelMan,

    versuche es einmal mit

    X = Y MOD 2

    wenn x = 0 ist dann gerade
    wenn x = 1 dann ungerade

    Gruß
    Günter

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von MelMan
    Schlagt mich nicht wenns totaler Quatsch ist
    Ich schlage dich nicht, aber Quatsch ist es schon.
    Das Paritätsbit auf der 28. Sekunde gibt an, ob in den Sekunden 21 - 27 eine gerade oder eine ungerade Anzahl von 1 gesendet wurde. Bei einer geraden Anzahl wird das Paritätsbit 0 gesendet, ansonsten ist es 1.
    Dadurch lässt sich feststellen, ob ein Bit falsch empfangen wurde. Also wenn eines der Minutenbits "gekippt ist" oder wenn das Paritätsbit "gekippt" ist, kann man das feststellen. Wenn 2 falsch empfangen wurden, kann man es nicht feststellen.
    Für den Test addiert du alle Bits (nicht die Wertigkeiten, sondern die 0 bzw. die 1) von 21 - 27. Ergibt sich eine gerade Zahl, muss das Paritätsbit 0 sein.

    Gruß

    Rolf

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    29
    Beiträge
    235
    Achso ja dann ist das echt Quatsch. Reicht es nicht aus, wenn ich nur das Bit 21 überprüfe? Denn sobald Bit 21 "1" ist, ist die Minutenzahl ja ungrade. Also muss Bit 28 eine "1" sein.
    Elektronische Bauteile funktionieren mit Rauch. Lässt man den Rauch raus, sind sie kaputt.

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von MelMan
    Denn sobald Bit 21 "1" ist, ist die Minutenzahl ja ungrade. Also muss Bit 28 eine "1" sein.
    Ne, das Paritätsbit gibt nicht an, ob die Minute gerade oder ungerade ist. Es gibt dir die Möglichkeit festzustellen, ob bei der Übertragung etwas schief ging. Dafür ist es wichtig, alle Bits in die Auswertung einzubeziehen.
    Vielleicht weißt du ja, was eine Quersumme ist. Dabei addiert man die Ziffern einer mehrstelligen Zahl zusammen. Also bei 3456 ergibt sich 18.
    Da man nur eine Ziffer überträgt, wäre dies hier die 8. Wenn sich irgendeine einzelne Stelle an der Zahl 3456 ändern würde, ergäbe sich etwas anderes als 8. Ändern sich mehrere, könnte aber wieder 8 herauskommen. Diesen Fehler würde man nicht bemerken.
    Das Paritätsbit funktioniert genau so. Man addiert alle bits. Also ergibt sich für die Minute 0111001 (binär 39) als Summe binär 00000100, dezimal 4, weil 4 Einsen in der Zahl vorkommen. Das Paritätsbit wäre hier also die letzte Stelle von 00000100, also 0. Ändert sich hier eine der Stellen von 0111001, so ergibt sich eine 1, weil dann 3 oder 5 Einsen empfangen würden.

    Jetzt klar?

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    29
    Beiträge
    235
    Ahh ja alles klar verstanden. Hab mich nur gewundert weil ich auf alen möglichen Seiten die Beschreibung so gefunden hab, dass das Paritätsbit immer nur dann "1" ist, wenn eine ungrade Zahl rauskommt um das Ergebnis grade zu machen.
    Elektronische Bauteile funktionieren mit Rauch. Lässt man den Rauch raus, sind sie kaputt.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •