eDip 240-7 wert der checksumme zu groß für ein byte

Gast #1530035
Hallo

Ich habe ein Problem mit einem edip display.
und zwar ist der wert der checksumme zu groß für ein byte.
nun weiß ich nicht wie man das mit dem small protokoll in einklang 
bringt.
wenn die checksumme > 1 byte ist.

hat schon mal jemand dieses problem gehabt und eventuell ein code 
beispiel in c.

oder hat jemand einen tip für mich ?

danke

gruß

gizmo
Gast
Den zu großen Wert einfach solange -256 bis das Ergebnis dann kleiner 
256 ist. Dann hast deine Checksumme... Aber das geht automatisch weil ja 
ein char nur 8 bit groß ist

Funktion könnte vielleicht so aussehen...

unsigned char checksumme_glcd(unsigned char *data_glcd, unsigned char 
len)
{
unsigned char checksumme=0;
unsigned char i;

for(i=0;i<len;i++){
   checksumme = checksumme + data_glcd[i];
   }

return checksumme;
}
Gast
Um es ganz banal auszudrücken:

du fängst einfach wieder bei 0 an, wenn du über 255 kommst.

;)
1
unsigned char calc_bcc (const char *string)
2
{
3
  bcc = 0;
4
    while (*string)
5
    {
6
        bcc += *string;
7
        string++;
8
    }
9
  return bcc;
10
}

und die Berechnung des Befehls:
1
//--- Geraden und Punkte zeichnen (zwei Koordinaten) -------------------------------------------
2
void draw_2coord (unsigned char DC, char *String, unsigned char X1, unsigned char Y1, unsigned char X2, unsigned char Y2)
3
{
4
  sprintf(Nutzdaten,"%c%s%c%c%c%c",esc,String,X1,Y1,X2,Y2);    // String zuweisen
5
  Length = strlen (Nutzdaten);    // Länge ermitteln, esc dazuzählen
6
  sprintf(Nutzdaten,"%c%c%c%s%c%c%c%c",DC,Length,esc,String,X1,Y1,X2,Y2);
7
  calc_bcc (Nutzdaten);
8
  Nutzdaten[strlen(Nutzdaten)] = bcc;
9
  PORTD |= _BV(RS485_FG);
10
  for (unsigned char i=0;i<(strlen(Nutzdaten));i++)
11
    {
12
      uart_out (Nutzdaten[i]);
13
    }
14
  loop_until_bit_is_set(UCSR1A, UDRE1);
15
  PORTD &= ~_BV(RS485_FG);
16
}

Ich hoffe, man kann 'was erkennen. ;)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.