Bit Vergleich bei CANOpenSafety

Gast #4423685
Lesenswert?
• ▲
▼
Hallo,
ich bin im moment dabei CANOpenSafety zu implementieren.
Jetzt bin ich über die Passage
A received SRDO shall be compared bit by bit (modulo 2) in the 
application (data and identifier)
gestolpert.
Wie sieht so ein Bit für Bit Vergleich mit Modulo 2 aus?
Wieso ist so ein Vergleich besser?
Meine eizige Idee war bis jetzt:
1
int8_t bit_by_bit_compare(uint8_t data1, uint8_t data2)
2
{
3
  for(uint8_t i = 0; i < 8; i++){
4
    if((data1 % 2) != (data2 % 2)){
5
      return -1;
6
    }
7
    data1 = data1 >> 1;
8
    data2 = data2 >> 1;
9
  }
10
  return 0;
11
}
Gast #4423713
Lesenswert?
• ▲
▼
Damit überprüfst du nur ob der Rest der modulo Division gleich oder 
ungleich ist. Modulo liefert nicht das Ergebnis der ganzzahligen 
Division sondern den Rest dieser. 
(https://de.wikipedia.org/wiki/Division_mit_Rest)

eher so:

if ( !(data1 % data2) )
{
    //ok
}
else
{
    //nicht ok
}

Das war aber sicher nicht gemeint. Hier gibt es einen Algorithmus modulo 
10:
https://de.wikipedia.org/wiki/Luhn-Algorithmus

Vermutlich wird es auch einen modula 2 Algorithmus geben. Das Beste wird 
sein, Du rufst bei "CAN in Automation" an und fragst was damit genau in 
Ihrem Standard gemeint ist.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.